Ghi nhật ký

Fleet Engine cung cấp một dịch vụ ghi nhật ký đơn giản cho phép bạn lưu các yêu cầu API và tải trọng phản hồi. Với các nhật ký này, bạn có thể gỡ lỗi quá trình tích hợp, tạo chỉ số theo dõi và phân tích các mẫu lưu lượng truy cập.

Fleet Engine gửi nhật ký dưới dạng nhật ký nền tảng cho Cloud Logging để bạn có thể sử dụng các công cụ Ghi nhật ký trên đám mây để truy cập vào chúng.

Loại nhật ký của Fleet Engine

Fleet Engine gửi nhiều thông tin tới Cloud Logging, chẳng hạn như:

  • Tất cả các yêu cầu và phản hồi REST và gRPC đã xác thực
  • Phản hồi lỗi
  • Yêu cầu, phản hồi và thông báo lỗi từ các lệnh gọi do SDK trình điều khiển thực hiện đến Fleet Engine.
  • Phân tách nhật ký cho các loại nhật ký được hỗ trợ:

Xem tài liệu về giản đồ và thông điệp nhật ký hiện có trong Tài liệu tham khảo về cách ghi nhật ký.

Sử dụng bộ chứa nhật ký mặc định và bị hạn chế để tuân thủ các chính sách giữ lại dữ liệu

Việc sử dụng các bộ chứa "bị hạn chế" và "mặc định" giúp đảm bảo hiểu rõ việc bạn sử dụng dữ liệu bị hạn chế và không bị hạn chế. Một số dữ liệu nhật ký mà Fleet Engine gửi đến Nền tảng Google Maps chỉ có thể được giữ lại trong một khoảng thời gian giới hạn, theo Điều khoản dành riêng cho dịch vụ di động. Để đảm bảo bạn chỉ giữ lại dữ liệu bị hạn chế trong khoảng thời gian cho phép, dữ liệu này phải được gắn nhãn là TOS_ Hà Nội dung tích hợp (Công cụ phân phối đã thực hiện việc này) và được ghi vào một bộ chứa chuyên dụng có tên là "bị hạn chế".

Từ đó, bạn có thể kiểm soát thời gian lưu giữ và tự động xoá hoàn toàn dữ liệu khi hết hạn bằng cách sử dụng chế độ cài đặt Ghi nhật ký trên đám mây. Ví dụ: bạn chỉ nên lưu giữ nhật ký có quyền sử dụng bị hạn chế trong 30 ngày.

Ghi nhật ký tất cả dữ liệu không bị hạn chế còn lại vào bộ chứa "mặc định", nơi dữ liệu đó có thể được lưu giữ trong thời gian dài hơn như quy định trong Điều khoản dành riêng cho dịch vụ di động (thường là 1 năm). Việc sử dụng các bộ chứa "bị hạn chế" và "mặc định" giúp đảm bảo bạn hiểu rõ mức sử dụng dữ liệu bị hạn chế và không bị hạn chế.

Có được thông tin đầy đủ bằng cách hợp nhất các nhật ký bị hạn chế và không bị hạn chế

Nhật ký về việc sử dụng bị hạn chế chứa dữ liệu về việc sử dụng bị hạn chế và thông tin tham chiếu đến nhật ký mặc định để có thể được xem xét cùng nhau. Nhật ký về việc sử dụng bị hạn chế chứa insertId của nhật ký mặc định làm tệp tham chiếu trong trường parent_insert_id. Bạn có thể sử dụng trường này để kết hợp dữ liệu từ cả hai nhật ký và xem hình ảnh hoàn chỉnh.

Xem tài liệu về mọi giản đồ và thông điệp nhật ký hiện có trong Tài liệu tham khảo về cách ghi nhật ký.

Bật tính năng ghi nhật ký trên đám mây

Fleet Engine tự động bật nhật ký mặc định cho khách hàng mới sử dụng thiết bị di động, bắt đầu từ các dự án được tạo vào ngày 10 tháng 2 năm 2022. Bạn có thể xác nhận xem tính năng ghi nhật ký đã được bật hay chưa bằng cách sử dụng truy vấn sau trong Trình khám phá nhật ký :

resource.type:"fleetengine.googleapis.com/DeliveryFleet"

Nếu bạn không thấy nhật ký nào cho truy vấn đó, thì có thể tính năng Ghi nhật ký trên đám mây chưa được bật cho dự án của bạn. Liên hệ với bộ phận hỗ trợ nếu bạn muốn bật tính năng này.

Bật nhật ký về quyền sử dụng bị hạn chế

Nhật ký sử dụng bị hạn chế được bật theo yêu cầu. Để bật các nhật ký này cho dự án Google Cloud của bạn, hãy hoàn tất các bước sau:

Chuẩn bị dự án để nhận nhật ký về việc sử dụng bị hạn chế

  1. Trong bảng điều khiển Google Cloud, hãy mở trang Log Router (Bộ định tuyến nhật ký).
  2. Cập nhật bộ chứa ghi nhật ký _Mặc định để loại trừ các nhật ký bị hạn chế sử dụng.
    1. Chọn bộ chứa ghi nhật ký mặc định, rồi chọn Chỉnh sửa bồn lưu trữ dữ liệu.
    2. Trên phần "Chọn nhật ký để lọc ra khỏi bồn lưu trữ dữ liệu", hãy nhấp vào nút "Thêm loại trừ":
      1. Tên bộ lọc loại trừ: Loại trừ chuỗi nhật ký hạn chế
      2. Bộ lọc loại trừ: labels.restriction="TOS_RestrictED"
    3. Nhấp vào "Cập nhật bồn lưu trữ dữ liệu".
  3. Cập nhật bộ chứa ghi nhật ký bị hạn chế để lưu trữ nhật ký về việc sử dụng bị hạn chế.
    1. Trên trang nhật ký Bộ định tuyến, hãy chọn "Tạo bồn lưu trữ dữ liệu".
    2. Tạo bồn lưu trữ dữ liệu với các chế độ cài đặt sau:
      1. Thông tin chi tiết về bồn lưu trữ dữ liệu:
        1. Tên: RestrictedLogs
        2. Mô tả: Nhật ký sử dụng hạn chế của Fleet Engine
      2. Đích đến của bồn lưu trữ dữ liệu:
        1. Dịch vụ bồn rửa: Thùng ghi nhật ký
        2. Chọn bộ chứa nhật ký: Tạo bộ chứa nhật ký mới
          1. Tên: Bị hạn chế
          2. Mô tả: Chứa nhật ký về việc sử dụng bị hạn chế của Fleet Engine
        3. Khoảng thời gian lưu giữ: 30 ngày
          1. Lưu ý: Khoảng thời gian lưu giữ không được vượt quá 30 ngày.
      3. Nhật ký cần đưa vào bồn lưu trữ dữ liệu: để trống
      4. Nhật ký để lọc ra khỏi bồn lưu trữ dữ liệu: Nhấp vào "Thêm tiêu chí loại trừ"
        1. Tên bộ lọc loại trừ: RemoveNonRestrictedLogs
        2. Bộ lọc loại trừ: NOT (resource.type = "fleetengine.googleapis.com/Fleet" OR resource.type = "fleetengine.googleapis.com/deliveryFleet") KHÔNG (labels.restriction = "TOS_RestrictED")
      5. Nhấp vào "Tạo bồn lưu trữ dữ liệu"

Liên hệ với bộ phận hỗ trợ để bật nhật ký sử dụng bị hạn chế

Sau đó, hãy liên hệ với nhóm hỗ trợ và cung cấp các thông tin sau trong yêu cầu hỗ trợ của bạn:

  1. (Các) mã dự án cần bật:
  2. Địa chỉ email của người yêu cầu thay đổi:
    1. Lưu ý: Người này phải có quyền Chỉnh sửa đối với các dự án trên Google Cloud có trong danh sách.
  3. Khi cho phép sử dụng Nội dung bị hạn chế trên Google Maps trong tính năng Ghi nhật ký trên đám mây, bạn đồng ý tuân thủ các điều khoản dành cho Nền tảng Google Mapscác điều khoản dành riêng cho dịch vụ di động, bao gồm cả việc lưu vào bộ nhớ đệm và các yêu cầu về việc sử dụng được phép liên quan đến Nội dung trên Google Maps. Có/Không

Sau khi nhận được yêu cầu của bạn, nhóm hỗ trợ sẽ gửi xác nhận rằng tính năng ghi nhật ký đã được bật cho dự án của bạn

Chia nhật ký trên đám mây

Tính năng Ghi nhật ký trên đám mây giới hạn kích thước của các nhật ký gửi đến ở mức 256 KB. Dịch vụ này sẽ loại bỏ nhật ký khi vượt quá ngưỡng đó. Để đảm bảo tính năng Ghi nhật ký trên đám mây giữ lại các nhật ký có kích thước lớn, Fleet Engine có thể chia các nhật ký đó thành một loạt nhật ký dưới ngưỡng 256 KB. Những nhật ký như vậy có một tiền tố insertId phổ biến để cho biết thứ tự mà dịch vụ chia nhật ký nhỏ hơn khỏi nhật ký quá khổ ban đầu. Sau đó, bạn có thể tham gia lại họ dựa trên insertId của chúng.

Để truy cập vào nhật ký tách ban đầu, hãy hợp nhất các nhật ký phân tách theo insertId của chúng theo thứ tự phân tách ban đầu, như được biểu thị bằng chỉ mục của chúng trong mục nhập nhật ký đám mây.

Cấu trúc nhật ký phân tách giống như cấu trúc đề cập trong Hướng dẫn về mục nhập nhật ký kiểm tra phân tách dành cho Nhật ký kiểm tra của Cloud. Điểm khác biệt chính của nhật ký phân tách trong tính năng Ghi nhật ký nhóm là việc phân tách xảy ra trong trường jsonPayload, thay vì trong trường protoPayload. Xem ví dụ về phần phân tách được trình bày trong phần tiếp theo.

Loại nhật ký được hỗ trợ

Fleet Engine chỉ hỗ trợ phân chia nhật ký cho các loại nhật ký sau đây có kích thước nhật ký vượt quá 256KB:

Ví dụ về cấu trúc nhật ký phân tách

// First Split Log
{
  // insertId appended with an increasing number
  "insertId": "ABCDE-1",
  "jsonPayload": {
    "request": {
      "filter": "tracking_id=tracking-test-splitting-task"
    },
    "@type": "type.googleapis.com/maps.fleetengine.delivery.log.v1.ListTasksLog",
    "response": {
      "tasks": [
        {
          "name": "providers/providers-123/tasks/test-splitting-task-id-0",
          // ...
        },
        {
          "name": "providers/providers-123/tasks/test-splitting-task-id-1",
          // ...
        },
        {
          "name": "providers/providers-123/tasks/test-splitting-task-id-2"
          // ...
        },
        {
          "name": "providers/providers-123/tasks/test-splitting-task-id-3",
          // ...
        },
      ]
    },
    "header": {}
  },
  "resource": {
    "type": "fleetengine.googleapis.com/DeliveryFleet",
    "labels": {
      "resource_container": "projects/providers-123",
      "location": "global"
    }
  },
  // Same timestamp
  "timestamp": "2024-01-29T23:35:58.076515Z",
  "labels": {
  },
  "logName": "projects/providers-123/logs/fleetengine.googleapis.com%2Flist_tasks",
  "receiveTimestamp": "2024-01-29T23:35:59.278858322Z",
  "split": {
    // UID for this logical log entry (same across splits)
    "uid": "ABCDE",
    "totalSplits": 2
  }
}
// Second Split Log
{
  // insertId appended with an increasing number
  "insertId": "ABCDE-2",
  "jsonPayload": {
    "request": {
      "filter": "tracking_id=tracking-test-splitting-task"
    },
    "@type": "type.googleapis.com/maps.fleetengine.delivery.log.v1.ListTasksLog",
    "response": {
      "tasks": [
         // Previous tasks appear as empty objects in subsequent splits
        {}, {}, {}, {},
        {
          "name": "providers/providers-123/tasks/test-splitting-task-id-4",
          // ...
        }
      ]
    },
    "header": {}
  },
  "resource": {
    "type": "fleetengine.googleapis.com/DeliveryFleet",
    "labels": {
      "resource_container": "projects/providers-123",
      "location": "global"
    }
  },
  // Same timestamp
  "timestamp": "2024-01-29T23:35:58.076515Z",
  "labels": {
  },
  "logName": "projects/providers-123/logs/fleetengine.googleapis.com%2Flist_tasks",
  "receiveTimestamp": "2024-01-29T23:35:59.278858322Z",
  "split": {
    // UID for this logical log entry (same across splits)
    "uid": "ABCDE",
    // Subsequent logs after the original will have a zero based index
    "index": 1,
    "totalSplits": 2
  }
}

Truy cập vào nhật ký của bạn

Nhật ký trên đám mây được cấu trúc theo định dạng LogEntry. Fleet Engine gửi nhật ký đến Cloud Logging khi resource.type của LogEntry được đặt thành fleetengine.googleapis.com. Bạn có thể sử dụng Trình khám phá nhật ký để ghi truy vấn để xem nhật ký của mình.

Ví dụ: để xem tất cả các RPC đến Fleet Engine có trả về lỗi, hãy sử dụng truy vấn sau đây của Trình khám phá nhật ký:

resource.type:"fleetengine.googleapis.com/DeliveryFleet"
severity=ERROR

Để xem nhật ký của các RPC được gửi vào phương thức UpdateDeliveryVehicle cho example-project-id dự án, hãy sử dụng truy vấn sau của Trình khám phá nhật ký:

logName="projects/project-id/logs/fleetengine.googleapis.com%2Fupdate_delivery_vehicle"

Ví dụ sau đây cho thấy một LogEntry cho nhật ký UpdateDeliveryVehicle. Yêu cầu RPC và phản hồi nằm trong trường jsonPayload:

    {
      "insertId": "c6b85fbc927343fc8a85338c57a65733",
      "jsonPayload": {
        "request": {
          "header": {4},
          "updateMask": "deviceSettings",
          "vehicleId": "uniqueVehicleId",
          "vehicle": {2}
        },
        "response": {
          "name": "providers/example-project-id/vehicles/uniqueVehicleId",
          "availableCapacity": 2,
          "state": "VEHICLE_STATE_OFFLINE",
          "maximumCapacity": 2,
          "vehicleType": {1},
          "supportedTrips": {1}
        },
        "@type": "type.googleapis.com/maps.fleetengine.v1.UpdateDeliveryVehicleLog"
      },
      "resource": {
        "type": "fleetengine.googleapis.com/DeliveryFleet",
        "labels": {2}
      },
      "timestamp": "2021-01-01T00:00:00.000000000Z",
      "labels": {2},
      "logName": "projects/example-project-id/logs/fleetengine.googleapis.com%2Fupdate_delivery_vehicle",
      "receiveTimestamp": "2021-01-01T00:00:00.000000000Z"
    }

Nếu lỗi RPC được trả về, trường responseDeliveryVehicle sẽ bị xoá và trường errorResponse sẽ được đặt và điền sẵn trong jsonPayload:

    {
      "insertId": "2ead60bdec561836a1bb84a90e9915cd",
      "jsonPayload": {
        "@type": "type.googleapis.com/maps.fleetengine.delivery.log.v1.UpdateDeliveryVehicleLog",
        "header": {
          "languageCode": "en",
          "osVersion": "11",
          "platform": "PLATFORM_LOG_ANDROID",
          "regionCode": "US",
          "sdkType": "SDK_TYPE_LOG_DRIVER",
          "sdkVersion": "4.4.3"
        },
        "request": {
          "deliveryVehicle": {4},
          "deliveryVehicleId": "uniqueDeliveryVehicleId",
          "updateMask": "lastLocation"
        },
        "response": {
          "lastLocation": {14},
          "name": "providers/example-project-id/deliveryVehicles/uniqueDeliveryVehicleId",
          "navigationStatus": "NAVIGATION_STATUS_ARRIVED_AT_DESTINATION",
          "remainingDistanceMeters": "430",
          "remainingDuration": "10s"
        }
      },
      "labels": {
        "delivery_vehicle_id": "uniqueDeliveryVehicleId"
      },
      "logName": "projects/example-project-id/logs/fleetengine.googleapis.com%2Fupdate_delivery_vehicle",
      "receiveTimestamp": "2023-07-14T22:57:51.156515110Z",
      "resource": {
        "labels": {2},
        "type": "fleetengine.googleapis.com/DeliveryFleet"
      },
      "timestamp": "2023-07-14T22:57:51.018045Z"
    }

Để biết thêm thông tin về ngôn ngữ truy vấn ghi nhật ký, hãy xem phần Ngôn ngữ truy vấn ghi nhật ký. Để biết thông tin về cách bạn có thể sử dụng nhật ký để tạo chỉ số, hãy xem bài viết Tổng quan về các chỉ số dựa trên nhật ký.

Quản lý chi phí ghi nhật ký

Sau khi bật tính năng ghi nhật ký, bạn có trách nhiệm thiết lập cách bạn muốn định tuyến, lưu trữ và giữ lại nhật ký của mình. Bạn có thể phải chịu thêm khoản phí của Google Cloud cho việc nhập và lưu giữ nhật ký nếu vượt quá giới hạn sử dụng và lưu giữ mà không mất phí. Tuy nhiên, bạn có thể kiểm soát chi phí ghi nhật ký bằng một trong những cách sau:

Giảm mức sử dụng tính năng ghi nhật ký

Bạn có thể giới hạn lượng nhập dữ liệu nhật ký bằng cách loại trừ một số mục nhập nhật ký.

Xuất hoặc định tuyến nhật ký

Bạn có thể định tuyến nhật ký đến các đích đến khác của Google Cloud hoặc bên ngoài để tránh chi phí truyền dẫn và chi phí lưu trữ mặc định. Hãy nhớ tắt tính năng nhập nhật ký, như mô tả trong phần tiếp theo, để tránh chi phí nhập.

Tắt tính năng nhập nhật ký để tránh bị tính phí

Việc giảm mức sử dụng nhật ký hoặc xuất hoặc định tuyến nhật ký được ưu tiên hơn là tắt tính năng nhập nhật ký. Tuy nhiên, nếu không có ý định sử dụng nhật ký Fleet Engine, bạn có thể tránh các khoản phí có thể phát sinh khi dùng tính năng Ghi nhật ký trên đám mây bằng cách tắt quy trình nhập. Theo mặc định, nhật ký Fleet Engine được chuyển đến bộ chứa nhật ký _Default.

Lệnh sau đây cập nhật bộ chứa ghi nhật ký _Default để không nhập nhật ký của Fleet Engine.

gcloud logging sinks update _Default \
--log-filter='NOT LOG_ID("cloudaudit.googleapis.com/activity") \
AND NOT LOG_ID("externalaudit.googleapis.com/activity") \
AND NOT LOG_ID("cloudaudit.googleapis.com/system_event") \
AND NOT LOG_ID("externalaudit.googleapis.com/system_event") \
AND NOT LOG_ID("  cloudaudit.googleapis.com/access_transparency") \
AND NOT LOG_ID("externalaudit.googleapis.com/access_transparency") \
AND NOT resource.type:"fleetengine.googleapis.com"''

Để biết thêm thông tin, hãy xem các bài viết: Loại trừ nhật ký trên đám mâyLoại trừ nhật ký. Xuất nhật ký trên đám mâyXuất nhật ký

Sử dụng Trình khám phá nhật ký

Để sử dụng Trình khám phá nhật ký, hãy mở Cloud Console, chọn Logging (Ghi nhật ký), sau đó chọn Logs Explorer (Trình khám phá nhật ký). Để xem danh sách tất cả nhật ký Fleet Engine hiện có, hãy nhấp vào Loại tài nguyên Fleet Engine. Một số nhật ký API Phân phối được gắn nhãn Mã tác vụ và Mã xe phân phối. Bạn có thể sử dụng các nhãn này để chọn nhật ký cho các công việc hoặc phương tiện mà bạn quan tâm.

Nhãn nhật ký

Lọc nhật ký theo mã xe giao hàng

Trong Trình khám phá nhật ký, bạn có thể sử dụng truy vấn sau để giới hạn nhật ký cho một loại xe cụ thể:

    resource.type="fleetengine.googleapis.com/DeliveryFleet"
    labels.delivery_vehicle_id="delivery_vehicle_id"

Lọc xe

Lọc nhật ký theo mã công việc

Trong Trình khám phá nhật ký, bạn có thể sử dụng truy vấn sau để giới hạn nhật ký cho một tác vụ cụ thể:

    resource.type="fleetengine.googleapis.com/DeliveryFleet"
    labels.task_id=~"task_id"

Lọc nhật ký cho xe trong một khoảng thời gian cụ thể

Trong Trình khám phá nhật ký, bạn có thể sử dụng truy vấn sau để giới hạn nhật ký ở những nhật ký dành cho xe trong một khoảng thời gian cụ thể:

    resource.type="fleetengine.googleapis.com/DeliveryFleet"
    labels.delivery_vehicle_id="delivery_vehicle_id"
    timestamp>="2020-09-24T20:00:00.000Z"
    timestamp<"2020-09-24T21:00:00.000Z"

Ví dụ về chỉ số dựa trên nhật ký

Ví dụ sau cho biết cách sử dụng các chỉ số dựa trên nhật ký để theo dõi số lượng tác vụ được tạo theo thời gian.

  1. Trong Cloud Console, hãy chọn Logging (Ghi nhật ký), sau đó chọn Logs Explorer (Trình khám phá nhật ký) để mở Trình khám phá nhật ký. Sau đó, hãy áp dụng bộ lọc sau:

    resource.type="fleetengine.googleapis.com/DeliveryFleet" resource.labels.location="global"
    logName="projects/ProjectID/logs/fleetengine.googleapis.com%2Fupdate_task"
    jsonPayload.request.task.taskOutcome="TASK_OUTCOME_LOG_SUCCEEDED"
    jsonPayload.request.updateMask="taskOutcome"
    jsonPayload.response.type= ("TASK_TYPE_LOG_PICKUP" OR "TASK_TYPE_LOG_DELIVERY")
    
  2. Trong ngăn Kết quả truy vấn, hãy chọn trình đơn thả xuống Hành động, rồi chọn Tạo chỉ số.

    Tạo chỉ số

  3. Trong hộp thoại Trình chỉnh sửa chỉ số:

    • Chỉ định tên chỉ số (ví dụ: billable_tasks).
    • Chỉ định nội dung mô tả chỉ số (ví dụ: Số tác vụ có thể tính phí).
    • Hãy để trống lựa chọn Units (Đơn vị). _ Để nguyên tuỳ chọn Type (Loại) là Bộ đếm.

    Sau đó, hãy chọn nút Tạo chỉ số.

  4. Trên trang Chỉ số dựa trên nhật ký, bạn sẽ thấy thông báo xác nhận rằng bạn đã tạo thành công chỉ số và chỉ số mới sẽ xuất hiện trong phần chỉ số do người dùng xác định. Bây giờ, chỉ số này sẽ được điền sẵn khi nhật ký khớp được tạo.

  5. Chọn trình đơn thả xuống ngành dọc ở bên phải của chỉ số mới, rồi chọn Xem trong Trình khám phá chỉ số.

    Xem chỉ số

  6. Trên ngăn bên trái trong phần Build Your Query (Tạo truy vấn của bạn), hãy đặt Loại tài nguyên thành Fleet Engine (Công cụ hạ tầng) rồi tìm chỉ số billing_tasks.

    Chỉ số tìm kiếm

    Biểu đồ bên phải cho thấy tỷ lệ cuộc gọi billing_tasks.

Sử dụng BigQuery

BigQuery là một công cụ mạnh mẽ để phân tích số liệu. API này có thể được dùng để lưu trữ nhật ký dài hạn và thực hiện các truy vấn đặc biệt giống như SQL đối với dữ liệu.

Định tuyến nhật ký đến BigQuery

Để tận dụng BigQuery, bạn phải chuyển nhật ký đến kho dữ liệu BigQuery như sau:

  1. Trong Cloud Console, hãy chọn Logging (Ghi nhật ký) rồi chọn Logs Explorer (Trình khám phá nhật ký).

  2. Tạo bộ lọc tách biệt nhật ký Fleet Engine. Trong Trình khám phá trường nhật ký, hãy chọn loại tài nguyên Fleetengine.googleapis.com/deliveryFleet.

    Tạo
bộ lọc

  3. Trong ngăn Query Results (Kết quả truy vấn), hãy nhấp vào trình đơn thả xuống Actions (Thao tác) rồi chọn Create chìm (Tạo bồn lưu trữ dữ liệu).

    Tạo bồn rửa

  4. Trong hộp thoại Chọn dịch vụ bồn lưu trữ dữ liệu, hãy chọn Tập dữ liệu BigQuery.

    Chọn bồn rửa

  5. Trong hộp thoại Chỉnh sửa bồn lưu trữ dữ liệu, hãy chỉ định các tùy chọn sau:

    • Chỉ định tên bồn lưu trữ dữ liệu (ví dụ: FleetEngineLogsSink).
    • Hãy rời khỏi dịch vụ bồn lưu trữ dữ liệu dưới dạng BigQuery.
    • Chọn chế độ Sử dụng bảng được phân vùng. Điều này sẽ làm tăng hiệu suất truy vấn.
    • Trong phần Đích đến của bồn lưu trữ dữ liệu, hãy chọn Create New BigQuery Dataset (Tạo tập dữ liệu BigQuery mới), sau đó chỉ định tên tập dữ liệu BigQuery (ví dụ: FleetEngineLogs).
    • Nhấp vào nút Tạo bồn lưu trữ dữ liệu.

    Chỉnh sửa
    bồn lưu trữ dữ liệu

Bây giờ, nhật ký của bạn sẽ bắt đầu điền vào tập dữ liệu BigQuery. Bạn có thể xem dữ liệu trong mục BigQuery của Cloud Console.

Mục BigQuery

Một số bảng trong tập dữ liệu FleetEngineLogs sẽ tự động được điền sẵn, mỗi bảng cho một loại nhật ký:

  • CreateDeliveryVehicle
  • GetDeliveryVehicle
  • ListDeliveryVehicle
  • UpdateDeliveryVehicle
  • CreateTask
  • GetTask
  • UpdateTask
  • ListTasks
  • SearchTasks

Tên bảng sử dụng mẫu sau:

project_id.data_set.log_name

Ví dụ: nếu dự án có tên là test_project và tên tập dữ liệu là FleetEngineLogs, thì bảng CreateTask sẽ có tên như sau:

test_project.FleetEngineLogs.fleetengine_googleapis_com_create_task

Cụm từ tìm kiếm ví dụ

Phần này trình bày ví dụ về các truy vấn mà bạn có thể tạo.

Số việc cần làm được tạo mỗi giờ

Truy vấn sau đây tính số lượng nhật ký CreateTasks và nhóm các nhật ký đó theo giờ.

    SELECT TIMESTAMP_TRUNC(timestamp, HOUR) as hour,
           count(*) as num_tasks_created
    FROM
    `ProjectId.FleetEngineLogs.fleetengine_googleapis_com_create_task`
    GROUP BY hour
    ORDER by hour

Số điểm dừng/phương tiện/giờ

Truy vấn sau đây tạo số điểm dừng mà một xe phân phát, được phân tích theo giờ.

Ví dụ: truy vấn này có thể cho biết rằng trong 1 giờ qua:

  • Xe A đi được 10 điểm trong giờ thứ 12 và dừng lại ở giờ thứ 13 là 8 điểm.
  • Xe B đi được 5 điểm trong giờ thứ 11 và dừng lại ở giờ thứ 12 là 7 điểm.
  • Xe C đi được 12 điểm trong giờ thứ 13 và dừng lại ở giờ thứ 14 là 9 điểm.

    SELECT
      jsonpayload_v1_updatedeliveryvehiclelog.request.deliveryvehicleid AS vehicle,
      TIMESTAMP_TRUNC(timestamp, HOUR) AS hour,
      COUNT(*) AS num_stops
    FROM
      `ProjectId.FleetEngineLogs.fleetengine_googleapis_com_update_delivery_vehicle`
    WHERE
    ARRAY_LENGTH(jsonpayload_v1_updatedeliveryvehiclelog.request.deliveryvehicle.remainingvehiclejourneysegments) > 0
    AND jsonpayload_v1_updatedeliveryvehiclelog.request.deliveryvehicle.remainingvehiclejourneysegments[
    OFFSET
    (0)].stop.state = 'VEHICLE_STOP_STATE_LOG_ARRIVED'
    GROUP BY
    1,
    2
    ORDER BY
    2
    

Tỷ lệ phân phối thành công lần đầu tiên

Truy vấn sau đây cho biết tỷ lệ phần trăm thành công trong tỷ lệ cố gắng phân phối lần đầu tiên.

    SELECT
     vehicle_id,
     COUNTIF(outcome = "TASK_OUTCOME_LOG_SUCCEEDED") AS num_success,
     COUNT(*) AS total_deliveries,
     COUNTIF(outcome = "TASK_OUTCOME_LOG_SUCCEEDED") * 100/ COUNT(*) AS success_rate
    FROM (
     SELECT
       labels.delivery_vehicle_id AS vehicle_id,
       jsonpayload_v1_updatetasklog.response.trackingid AS trackingid,
       ARRAY_AGG(jsonpayload_v1_updatetasklog.response.taskoutcome
       ORDER BY
         timestamp ASC)[ORDINAL(1)] AS outcome,
     FROM
     `ProjectId.FleetEngineLogsfleetengine_googleapis_com_update_task`
     WHERE
      jsonpayload_v1_updatetasklog.response.type = "TASK_TYPE_LOG_DELIVERY"
     GROUP BY 1, 2
     ORDER BY 1, 2)
    GROUP BY 1
    ORDER BY 1

Trang tổng quan Datastudio

BigQuery có thể được tích hợp với các công cụ thông tin doanh nghiệp và trang tổng quan có thể được tạo để phân tích doanh nghiệp.

Ví dụ sau đây cho thấy cách xây dựng một trang tổng quan để thể hiện các nhiệm vụ và phương tiện di chuyển trên bản đồ.

  1. Chạy trang tổng quan Datastudio mới rồi chọn BigQuery làm kết nối dữ liệu.

    Kết nối dữ liệu

  2. Chọn Truy vấn tuỳ chỉnh rồi chọn Dự án trên đám mây cần lập hoá đơn.

    Chọn dự án

  3. Nhập truy vấn sau vào hộp truy vấn.

    Nhập truy vấn

    SELECT
     timestamp,
     labels.delivery_vehicle_id,
    jsonpayload_v1_updatedeliveryvehiclelog.response.lastlocation.rawlocation.latitude AS lat,
    jsonpayload_v1_updatedeliveryvehiclelog.response.lastlocation.rawlocation.longitude AS lng
    FROM
    `ProjectId.FleetEngineLogs.fleetengine_googleapis_com_update_delivery_vehicle`
  1. Chọn Loại biểu đồ là Bản đồ bong bóng, rồi chọn trường vị trí.

    Loại biểu đồ

  2. Chọn Tạo trường.

    Tạo trường

  3. Đặt tên cho trường và thêm công thức sau: CONCAT(lat, ",", lng).

    Sau đó, đặt loại thành Địa lý->Vĩ độ, Kinh độ.

    Đặt loại

  4. Bạn có thể thêm các chế độ kiểm soát vào trang tổng quan để lọc dữ liệu. Ví dụ: chọn bộ lọc Phạm vi ngày.

    Thêm chế độ điều khiển

  5. Chỉnh sửa hộp phạm vi ngày để chọn phạm vi ngày mặc định.

    Phạm vi ngày

  6. Bạn có thể thêm các tùy chọn kiểm soát danh sách thả xuống cho delivery_vehicle_id.

    Danh sách thả xuống

Với các chế độ điều khiển này, bạn có thể trực quan hoá chuyển động của xe hoặc di chuyển trong quá trình giao hàng.