Giải pháp cuối cùng của đội xe hiện chỉ dành cho một số khách hàng. Liên hệ với bộ phận bán hàng để tìm hiểu thêm.

Ghi nhật ký

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

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 tích hợp, tạo chỉ số giám sát và phân tích các mô hình 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 đến Cloud Logging để bạn có thể dễ dàng sử dụng các công cụ Cloud Logging.

Nội dung nào của Fleet Engine ghi lại

Fleet Engine gửi tất cả các yêu cầu và phản hồi REST và gRPC đã xác thực, ngay cả phản hồi lỗi, tới Cloud Logging. Các lệnh gọi này cũng sẽ bao gồm các lệnh gọi do SDK điều khiển thực hiện đến Fleet Engine. Tuy nhiên, tệp này không ghi lại các lỗi xác thực và có thể loại bỏ một số trường trong yêu cầu và phản hồi vì lý do bảo vệ dữ liệu.

Vui lòng xem tài liệu về các thông điệp nhật ký và giản đồ có sẵn trong Tài liệu tham khảo về nhật ký.

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

Theo mặc định, tính năng ghi nhật ký có thể không được bật cho các dự án được tạo trước 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ý đã 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"

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

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

Nhật ký đám mây được cấu trúc xung quanh định dạng LogEntry. Fleet Engine gửi nhật ký đến Cloud Logging với 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 các truy vấn để xem nhật ký của mình.

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

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

Để xem nhật ký RPC được thực hiện cho phương thức UpdateDeliveryVehicle cho dự án example-project-id, hãy sử dụng truy vấn Nhật ký khám phá sau:

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

Ví dụ sau đây thể hiện một Mục nhập nhật ký cho nhật ký UpdateDeliveryVehicle. Yêu cầu và phản hồi RPC 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 hệ thống trả về lỗi RPC, trường responseDeliveryVehicle sẽ bị xóa và trường errorResponse sẽ được đặt và điền sẵn vào jsonPayload:

    {
      "insertId": "c6b85fbc927343fc8a85338c57a65733",
      "jsonPayload": {
        "errorResponse": {
          "httpStatusCode": 404,
          "code": "NOT_FOUND",
          "message": "No entity with id invalidVehicleId exists"
        },
        "@type": "type.googleapis.com/maps.fleetengine.v1.UpdateDeliveryVehicleLog",
        "request": {
          "vehicle": {3},
          "updateMask": "deviceSettings",
          "vehicleId": "fakeVehicleId",
          "header": {4}
        }
      },
      "resource": {
        "type": "fleetengine.googleapis.com/DeliveryFleet",
        "labels": {2}
      },
      "timestamp": "2021-01-01T00:00:00.000000000Z",
      "severity": "ERROR",
      "labels": {2}
      "logName": "projects/example-project-id/logs/fleetengine.googleapis.com%2Fupdate_delivery_vehicle",
      "receiveTimestamp": "2021-01-01T00:00:00.000000000Z"
    }

Để biết thêm thông tin về ngôn ngữ truy vấn ghi nhật ký, hãy xem bài viết Ghi nhật ký ngôn ngữ truy vấn . Để biết thông tin về cách sử dụng nhật ký để tạo chỉ số, hãy xem phần 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 định tuyến, lưu trữ và giữ lại nhật ký. Bạn có thể phải chịu thêm khoản phí Google Cloud Platform đối với việc nhập và giữ lại nhật ký nếu vượt quá giới hạn sử dụng và giữ lại 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 cách thực hiện một trong những thao tác 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 GCP khác hoặc bên ngoài để tránh chi phí nhập và bộ nhớ mặc định. Hãy nhớ tắt tính năng nhập nhật ký như mô tả dưới đây để tránh chi phí nhập.

Đang tắt tính năng nhập nhật ký

Bạn nên giảm mức sử dụng nhật ký hoặc xuất nhật ký hoặc định tuyến nhật ký thay vì 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 bị tính phí ghi nhật ký trên đám mây bằng cách tắt tính năng truyền dẫn. Theo mặc định, nhật ký Fleet Engine được định tuyến đến bộ chứa nhật ký _Default.

Lệnh sau cập nhật bộ chứa ghi nhật ký _Default để không nhập các nhật ký 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 bài viết: Các tuỳ chọn loại trừ ghi 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 có sẵn, hãy nhấp vào Fleet Engine Loại tài nguyên. Một số nhật ký API Delivery được gắn nhãn bằng 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 nhiệm vụ 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 để hạn chế nhật ký cho một phương tiện 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ã tác vụ

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

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

Lọc nhật ký cho một chiếc 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 để hạn chế nhật ký đối với các nhật ký 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 đây cho thấy 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 đó, á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, sau đó 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ụ: billing_tasks).
    • Hãy chỉ định nội dung mô tả chỉ số (ví dụ: Số cuộc gọi chuyến đi tính phí).
    • Để trống tùy chọn Đơn vị. _ Để nguyên tùy chọn LoạiBộ đếm.

    Sau đó 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 chỉ số đã được tạo thành công và chỉ số mới sẽ xuất hiện trong mục Chỉ số do người dùng xác định. Chỉ số này hiện sẽ được điền sẵn khi hệ thống tạo nhật ký khớp.

  5. Chọn trình đơn thả xuống theo chiều 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 Type-Resource (Tài nguyên) thành Fleet Engine (Công cụ nhóm) và tìm chỉ số billing_tasks.

    Chỉ số tìm kiếm

    Biểu đồ ở bên phải cho biết tỷ lệ các lệnh gọi billing_tasks.

Sử dụng BigQuery

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

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

Để tận dụng BigQuery, nhật ký phải được định tuyến đến một 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 một bộ lọc tách biệt nhật ký của 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 Kết quả truy vấn, nhấp vào trình đơn thả xuống Hành động và chọn Tạo bồn lưu trữ dữ liệu.

    Tạo bồn lưu trữ dữ liệu

  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 lưu trữ dữ liệu

  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).
    • Để Dịch vụ bồn lưu trữ dữ liệu là BigQuery.
    • Chọn tuỳ chọn Sử dụng bảng phân vùng. Việc này sẽ thúc đẩy hiệu suất truy vấn.
    • Trong phần Bồn lưu trữ dữ liệu đích, hãy chọn 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

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 phần BigQuery của Cloud Console.

Phần BigQuery

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

  • Tạo xe giao hàng
  • Nhận giao xe
  • Danh sách giao xe
  • Cập nhật giao hàng
  • Tạo việc cần làm
  • Tải Tasks
  • Cập nhật Tasks
  • Danh sách việc cần làm
  • Tìm việc cần làm

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 có tên như sau:

test_project.FleetEngineLogs.fleetengine_googleapis_com_create_task

Truy vấn mẫu

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

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

Truy vấn sau đây đếm số lượng nhật ký CreateTasks và nhóm các nhật ký này 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ố lượng điểm dừng trên mỗi xe mỗi giờ

Truy vấn sau đây tạo ra số lượng điểm dừng mà xe phân phát, được chia nhỏ theo giờ.

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

  • Xe A hoàn thành 10 điểm trong giờ 12 và 8 điểm trong giờ 13.
  • Xe B hoàn thành 5 trạm dừng trong giờ 11 và 7 dừng ở giờ 12.
  • Xe C đã hoàn thành 12 điểm dừng trong giờ 13 và 9 điểm dừng ở giờ 14.

    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ệ giao hàng thành công đầu tiên

Truy vấn sau đây cho thấy tỷ lệ phần trăm thành công trong tỷ lệ cố gắng phân phối đầ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 minh cho doanh nghiệp và các trang tổng quan có thể được tạo để phân tích hoạt động kinh doanh.

Ví dụ sau đây cho thấy cách xây dựng một trang tổng quan để hiển thị các công việc và chuyển động của xe trên bản đồ.

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

    Kết nối dữ liệu

  2. Chọn Cụm từ tìm kiếm tùy chỉnh và chọn Dự án trên đám mây mà Dự án sẽ được lập hóa đơ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`
    
  4. Chọn Loại biểu đồ làm Bản đồ bong bóng, sau đó chọn trường vị trí.

    Loại biểu đồ

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

    Tạo trường

  6. Đặ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 độ.

    Loại bộ công cụ

  7. 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

  8. 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

  9. Bạn có thể thêm các tùy chọn kiểm soát khác đối với danh sách thả xuống cho Delivery_vehicle_id.

    Danh sách thả xuống

Với các nút điều khiển này, bạn có thể trực quan hoá chuyển động của xe hoặc chuyển động trong một chuyến đi.