Last Mile Fleet Solution is currently available only to select customers. Contact sales to learn more.

Logging

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Fleet Engine menawarkan layanan logging sederhana yang memungkinkan Anda menyimpan permintaan API dan payload responsnya. Dengan log ini, Anda dapat men-debug integrasi, membuat metrik pemantauan, dan menganalisis pola traffic.

Fleet Engine mengirimkan log sebagai log platform ke Cloud Logging, sehingga Anda dapat menggunakan alat Cloud Logging untuk mengaksesnya dengan mudah.

Log Mesin Armada

Fleet Engine mengirimkan semua permintaan dan respons REST dan gRPC yang diautentikasi, bahkan respons error, ke Cloud Logging. Ini juga akan mencakup panggilan yang dimulai oleh Driver SDK ke Fleet Engine. Namun, tindakan ini tidak mencatat error autentikasi ke dalam log dan dapat menyamarkan beberapa kolom dari permintaan dan respons demi alasan perlindungan data.

Baca dokumentasi untuk skema dan pesan log yang tersedia di Referensi Logging.

Mengaktifkan Cloud Logging

Logging mungkin tidak diaktifkan secara default untuk project yang dibuat sebelum 10 Februari 2022. Anda dapat mengonfirmasi apakah logging diaktifkan dengan menggunakan kueri berikut di Logs Explorer : resource.type:"fleetengine.googleapis.com"

Jika Anda tidak melihat log apa pun untuk kueri tersebut, Cloud Logging mungkin belum diaktifkan untuk project Anda. Hubungi Dukungan jika ingin mengaktifkan fitur tersebut.

Mengakses log Anda

Cloud Logs disusun berdasarkan format LogEntry. Fleet Engine mengirimkan log ke Cloud Logging dengan resource.type LogEntry ditetapkan ke fleetengine.googleapis.com. Anda dapat menggunakan Logs Explorer untuk menulis kueri guna melihat log.

Misalnya, untuk melihat semua RPC ke Fleet Engine yang menampilkan error, gunakan kueri Logs Explorer berikut:

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

Untuk melihat log RPC yang dibuat dengan metode UpdateDeliveryVehicle untuk project example-project-id, gunakan kueri Logs Explorer berikut:

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

Contoh berikut menunjukkan LogEntry untuk log UpdateDeliveryVehicle. Respons dan permintaan RPC terletak di dalam kolom 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"
    }

Jika error RPC ditampilkan, kolom responseDeliveryVehicle akan dihapus dan kolom errorResponse akan ditetapkan dan diisi dalam 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"
    }

Untuk mengetahui informasi lebih lanjut tentang bahasa kueri logging, lihat Bahasa kueri logging. Untuk mengetahui cara menggunakan log untuk membuat metrik, lihat Ringkasan metrik berbasis log.

Mengelola biaya logging

Setelah logging diaktifkan, Anda bertanggung jawab untuk menyiapkan cara yang diinginkan untuk merutekan, menyimpan, dan menyimpan log. Anda dapat dikenai biaya Google Cloud Platform tambahan untuk penyerapan dan retensi log jika Anda melebihi batas penggunaan dan retensi tanpa biaya. Namun, Anda dapat mengontrol biaya logging dengan melakukan salah satu tindakan berikut:

Mengurangi penggunaan logging

Anda dapat membatasi jumlah penyerapan data log dengan mengecualikan entri log tertentu.

Mengekspor atau merutekan log

Anda dapat merutekan log ke tujuan eksternal atau GCP lain untuk menghindari biaya penyerapan dan penyimpanan default. Pastikan Anda menonaktifkan penyerapan log, seperti yang dijelaskan di bawah, untuk menghindari biaya penyerapan.

Menonaktifkan penyerapan log

Mengurangi penggunaan logging, atau mengekspor atau merutekan log, lebih disarankan daripada menonaktifkan penyerapan log. Namun, jika tidak ingin menggunakan logika Fleet Engine, Anda dapat menghindari potensi tagihan Cloud Logging dengan menonaktifkan penyerapan. Secara default, log Fleet Engine dirutekan ke bucket log _Default.

Perintah berikut memperbarui bucket logging _Default untuk tidak menyerap log Flet 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"
'

Untuk mengetahui informasi selengkapnya, lihat: Pengecualian Cloud Logging dan Mengecualikan log. Mengekspor Cloud Logging dan Mengekspor log

Menggunakan Logs Explorer

Untuk menggunakan Logs Explorer, buka Cloud Console, pilih Logging, lalu Logs Explorer. Untuk melihat daftar semua log Fleet Engine yang tersedia, klik Jenis Resource Fleet Engine. Beberapa log Delivery API diberi label dengan ID Tugas dan ID Kendaraan Pengiriman. Anda dapat menggunakan label ini untuk memilih log untuk tugas atau kendaraan yang Anda minati.

Label log

Memfilter log berdasarkan ID kendaraan pengiriman

Di Logs Explorer, Anda dapat menggunakan kueri berikut untuk membatasi log pada kendaraan tertentu:

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

Filter kendaraan

Memfilter log berdasarkan ID tugas

Di Logs Explorer, Anda dapat menggunakan kueri berikut untuk membatasi log pada tugas tertentu:

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

Memfilter log untuk kendaraan selama jangka waktu tertentu

Di Logs Explorer, Anda dapat menggunakan kueri berikut untuk membatasi log bagi kendaraan selama jangka waktu tertentu:

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"

Contoh metrik berbasis log

Contoh berikut menunjukkan cara menggunakan metrik berbasis log untuk melacak jumlah tugas yang dibuat dari waktu ke waktu.

  1. Di Cloud Console, pilih Logging, lalu Logs Explorer untuk membuka Logs Explorer. Kemudian terapkan filter berikut:

    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. Di panel Hasil Kueri, pilih drop-down Tindakan, lalu pilih Buat Metrik.

    Membuat metrik

  3. Pada dialog Metric Editor:

    • Tentukan nama metrik (misalnya, billable_tasks).
    • Tentukan deskripsi metrik (misalnya, Jumlah panggilan Perjalanan yang Dapat Ditagih).
    • Kosongkan opsi Unit. _ Biarkan opsi Jenis sebagai Penghitung.

    Lalu pilih tombol Buat Metrik.

  4. Di halaman Metrik Berbasis Log, Anda akan melihat pesan yang mengonfirmasi bahwa metrik berhasil dibuat, dan metrik baru akan muncul di bagian metrik yang ditentukan Pengguna. Metrik sekarang akan diisi saat log yang cocok dibuat.

  5. Pilih drop-down vertikal di sisi kanan metrik yang baru, lalu pilih Lihat di Metrics Explorer.

    Lihat metrik

  6. Di panel kiri pada Build Build Query, tetapkan Jenis Resource ke Fleet Engine dan telusuri metrik billable_tasks.

    Metrik penelusuran

    Grafik di sebelah kanan menunjukkan tingkat panggilan billable_tasks.

Menggunakan BigQuery

BigQuery adalah alat yang canggih untuk melakukan analisis. Token ini dapat digunakan untuk menyimpan log jangka panjang dan menjalankan kueri seperti SQL ad-hoc terhadap data.

Merutekan log ke BigQuery

Untuk memanfaatkan BigQuery, log harus dirutekan ke penyimpanan data BigQuery, sebagai berikut:

  1. Di Cloud Console, pilih Logging, lalu Logs Explorer.

  2. Membuat filter yang mengisolasi log Fleet Engine. Di Logs Field Explorer, pilih jenis resource Fleetengine.googleapis.com/DeliveryFleet.

    Buat filter

  3. Di panel Query Results, klik drop-down Actions, lalu pilih Create Sink.

    Membuat sink

  4. Pada dialog Select sink service, pilih BigQuery dataset.

    Pilih sink

  5. Dalam dialog Edit Sink, tentukan opsi berikut:

    • Tentukan nama sink (misalnya, FleetEngineLogsSink).
    • Biarkan Layanan Sink sebagai BigQuery.
    • Pilih opsi Gunakan Tabel yang Dipartisi. Tindakan ini akan meningkatkan performa kueri.
    • Di bagian Tujuan Tujuan, pilih Buat Set Data BigQuery Baru, lalu tentukan nama set data BigQuery (misalnya, FleetEngineLogs).
    • Klik tombol Buat Sink.

    Edit sink

Log Anda akan mulai mengisi set data BigQuery. Anda dapat melihat data di bagian BigQuery di Cloud Console.

Bagian BigQuery

Beberapa tabel pada set data FleetEngineLogs akan diisi secara otomatis, satu untuk setiap jenis log:

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

Nama tabel menggunakan pola berikut:

project_id.data_set.log_name

Misalnya, jika project bernama test_project dan nama set data adalah FleetEngineLogs, tabel CreateTask akan memiliki nama berikut:

test_project.FleetEngineLogs.fleetengine_googleapis_com_create_task

Contoh kueri

Bagian ini menampilkan contoh kueri yang dapat Anda buat.

Tugas yang dibuat per jam

Kueri berikut menghitung jumlah log CreateTasks dan mengelompokkannya berdasarkan jam.

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

Jumlah perhentian per kendaraan per jam

Kueri berikut menghasilkan jumlah perhentian yang dilayani kendaraan, yang dikelompokkan menurut jam.

Misalnya, kueri ini dapat memberi tahu kami bahwa dalam satu jam terakhir:

  • Kendaraan A menyelesaikan 10 perhentian pada jam 12 dan 8 perhentian pada jam 13.
  • Kendaraan B menyelesaikan 5 perhentian pada jam 11 dan 7 perhentian pada jam 12.
  • Kendaraan C menyelesaikan 12 perhentian pada jam 13 dan 9 perhentian pada jam 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
    

Tingkat keberhasilan pengiriman pertama

Kueri berikut yang menunjukkan persentase keberhasilan dalam rasio upaya pengiriman pertama.

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

Dasbor Datastudio

BigQuery dapat diintegrasikan dengan alat business intelligence dan dasbor dapat dibuat untuk analisis bisnis.

Contoh berikut menunjukkan cara membuat dasbor untuk tugas dan pergerakan kendaraan yang dapat divisualisasikan di peta.

  1. Luncurkan dasbor Datastudio baru dan pilih BigQuery sebagai koneksi data.

    Koneksi data

  2. Pilih Kueri Kustom dan pilih Project Cloud yang harus ditagih.

    Pilih project

  3. Masukkan kueri berikut ke dalam kotak kueri.

    Masukkan kueri

    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. Pilih Jenis Diagram sebagai Peta Balon, lalu pilih kolom lokasi.

    Jenis diagram

  5. Pilih Buat Kolom.

    Buat kolom

  6. Beri nama kolom dan tambahkan formula berikut: CONCAT(lat, “,”, lng).

    Kemudian tetapkan jenis ke Geo->Lintang, Bujur.

    Jenis kumpulan

  7. Anda dapat menambahkan kontrol ke dasbor untuk memfilter data. Misalnya, pilih filter Rentang tanggal.

    Menambahkan kontrol

  8. Edit kotak rentang tanggal untuk memilih rentang tanggal default.

    Rentang tanggal

  9. Anda dapat menambahkan kontrol menu drop-down tambahan untuk delivery_vehicle_id.

    Menu drop-down

Dengan kontrol ini, Anda dapat memvisualisasikan pergerakan kendaraan atau pergerakan dalam perjalanan.