Fleet Engine offre un semplice servizio di logging che consente di salvare Richieste API e payload di risposta. Con questi log, puoi eseguire il debug integrazione, creazione di metriche di monitoraggio e analisi dei modelli di traffico.
Fleet Engine invia i log come piattaforma log in Cloud Logging, per consentirti di usare l'API Cloud Strumenti di logging per accedervi.
Dati registrati da Fleet Engine
Fleet Engine invia diverse informazioni a Cloud Logging, ad esempio:
- Tutte le richieste e le risposte REST e gRPC autenticate
- Risposte di errore
- Richieste, risposte e messaggi di errore di chiamate avviate dal conducente a Fleet Engine.
Suddividi i log per i tipi di log supportati:
Consulta la documentazione per i messaggi di log e lo schema disponibili nella sezione Logging Riferimento.
Utilizza bucket di log limitati e predefiniti per rispettare i criteri di conservazione dei dati
Utilizzo di "limitato" e "default" i bucket ti consentono di avere un quadro chiaro utilizzo dei dati limitato e senza restrizioni. Alcuni dei dati di log che Fleet Engine inviati a Google Maps Platform possono essere conservati solo per un periodo di tempo limitato, in base al Centro per la mobilità aziendale Termini. Per assicurarti di conservare i dati con restrizioni solo per il periodo di tempo consentito, tali dati devono essere etichettati come TOS_RESTRICTED (Fleet Engine già lo fa) e registrati in un bucket dedicato denominato "restricted", ovvero riservato.
Da qui puoi controllare per quanto tempo vengono conservati ed eliminarli definitivamente in modo automatico la scadenza usando le impostazioni di Cloud Logging. Ad esempio, i log per uso limitato essere conservati solo per 30 giorni.
Registra tutti i dati senza limitazioni rimanenti nel valore "predefinito" di Compute Engine, dove può essere conservati per periodi più lunghi come definito nella sezione Specifiche dei servizi per i dispositivi mobili Termini (in genere per 1 anno). Utilizzo di "limitato" e "default" di sicurezza assicurano che immagine del tuo utilizzo dei dati limitato e senza limitazioni.
Ottieni una visualizzazione completa unendo i log con e senza restrizioni
I log per l'utilizzo limitato contengono i dati relativi all'utilizzo limitato e un riferimento alla
predefinito in modo che possano essere considerati insieme. Log per l'utilizzo limitato
contiene il valore insertId del log predefinito come riferimento nella sezione parent_insert_id
. Puoi utilizzare questo campo per unire i dati di entrambi i log e ottenere
un quadro completo.
Consulta la documentazione per tutti i messaggi di log e lo schema disponibili nella sezione Logging Riferimento.
Abilitazione di Cloud Logging in corso...
Fleet Engine abilita automaticamente i log predefiniti per i nuovi clienti di a partire dai progetti creati il 10 febbraio 2022. Puoi confermare se il logging viene abilitato utilizzando la seguente query nella sezione Log Spazio di esplorazione :
resource.type:"fleetengine.googleapis.com/DeliveryFleet"
Se non vedi alcun log per quella query, è possibile che Cloud Logging non sia stato abilitato per il tuo progetto. Contatto assistenza, se vuoi per attivare la funzionalità.
Abilita i log per utilizzo limitato
I log per uso limitato vengono abilitati su richiesta. Per attivare questi log per i tuoi account Google progetto Cloud, completa i seguenti passaggi:
Prepara il progetto per ricevere i log per utilizzo limitato
- Nella console Google Cloud, apri la pagina Router dei log.
- Aggiorna il bucket di logging _Default per escludere i log con utilizzo limitato.
- Seleziona il bucket di logging predefinito _Default e poi scegli Modifica sink.
- Nella sezione "Scegli i log per filtrare dal sink" fai clic sul pulsante "Aggiungi
Esclusione" Pulsante:
- Nome filtro di esclusione: EscludiRestrictedLogs
- Filtro di esclusione: labels.restriction="TOS_RESTRICTED"
- Fai clic su "Aggiorna sink".
- Aggiorna il bucket di logging limitato per archiviare i log per l'utilizzo limitato.
- Nella pagina Router dei log, seleziona "Crea sink".
- Crea un sink con le seguenti impostazioni:
- Dettagli sink:
- Nome: RestrictedLogs
- Descrizione: route di log di Fleet Engine a utilizzo limitato
- Destinazione sink:
- Servizio sink: bucket di logging
- Seleziona bucket di log: crea nuovo bucket di log
- Nome: con limitazioni
- Descrizione: contiene i log per utilizzo limitato di Fleet Engine
- Periodo di conservazione: 30 giorni
- Nota: il periodo di conservazione non deve superare i 30 giorni.
- Log da includere nel sink: lascia vuoto il campo
- Log da filtrare dal sink: fai clic su "Aggiungi esclusione"
- Nome filtro di esclusione: EscludiNonRestrictedLogs
- Filtro di esclusione: NOT (resource.type = "fleetengine.googleapis.com/Fleet" OR resource.type = "fleetengine.googleapis.com/DeliveryFleet") NON (labels.restriction = "TOS_RESTRICTED")
- Fai clic su "Crea sink"
- Dettagli sink:
Contatta l'assistenza per abilitare i log con utilizzo limitato
Quindi, contatta assistenza e fornirà le seguenti informazioni nella richiesta di assistenza:
- ID progetto da attivare:
- Indirizzo email della persona che ha richiesto la modifica:
- Nota: questa persona deve avere accesso in modifica ai progetti Google Cloud in elenco.
- Abilitando l'utilizzo limitato di Google Maps Content in Cloud Logging, accetti ad aderire alle piattaforme Google Maps Platform termini di servizio e Servizio di mobilità specifico termini, tra cui la memorizzazione nella cache e i requisiti di utilizzo consentiti in relazione a Google Contenuti di Maps. Sì/No
Quando il team di assistenza riceve la tua richiesta, invia una conferma del fatto che sia stata abilitata per il tuo progetto
Suddividi i log cloud
Cloud Logging limita le dimensioni dei log in entrata a 256 kB. Il servizio interrompe i log oltre questa soglia. Per garantire che Cloud Logging conservi log di grandi dimensioni, Il motore può suddividerli in una serie di log al di sotto della soglia di 256 kB. Questi log hanno un'interazione comune insertId per indicare l'ordine in cui il servizio divide il log più piccolo dal tronco originale troppo grande. Puoi quindi rientrare tra loro in base ai loro insertId.
Per accedere al log non suddiviso originale, unisci i log suddivisi per insertIds nell'ordine originale in cui sono state suddivise, come indicato dal loro indice di Cloud Storage.
La struttura del log suddiviso è uguale a quella menzionata in Controllo suddiviso
guida alle voci di log per
Cloud Audit Logs. La differenza principale per i log suddivisi nel logging del parco risorse è che
la suddivisione avviene nel campo jsonPayload
, anziché in protoPayload
. Osserva l'esempio di suddivisione mostrato nella sezione successiva.
Tipi di log supportati
Fleet Engine supporta la suddivisione dei log solo per i seguenti tipi di log con dimensioni del log superiori a 256 kB:
Esempio di struttura di log di suddivisione
// 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
}
}
Accedi ai tuoi log
I log di Cloud sono strutturati in base
LogEntry
formato. Fleet Engine invia i log a Cloud Logging con il parametro
resource.type
impostato su fleetengine.googleapis.com
. Puoi usare lo strumento Log
Spazio di esplorazione per
scrivere query per visualizzare i log.
Ad esempio, per visualizzare tutte le RPC su Fleet Engine che hanno restituito un errore, utilizza seguente query di Esplora log:
resource.type:"fleetengine.googleapis.com/DeliveryFleet"
severity=ERROR
Per visualizzare i log delle RPC effettuate con il metodo UpdateDeliveryVehicle
per
progetto example-project-id, utilizza la seguente query di Esplora log:
logName="projects/project-id/logs/fleetengine.googleapis.com%2Fupdate_delivery_vehicle"
L'esempio seguente mostra una voce LogEntry per UpdateDeliveryVehicle
log. La richiesta e la risposta RPC si trovano nel campo 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"
}
Se viene restituito un errore RPC, il campo responseDeliveryVehicle
viene
è cancellato e il campo errorResponse
è impostato e compilato in 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"
}
Per ulteriori informazioni sul linguaggio delle query di logging, consulta Query di logging lingua. Per informazioni su come utilizzare i log per creare metriche, consulta Panoramica delle metriche basate su log metriche.
Gestisci i costi di logging
Una volta abilitato il logging, sei responsabile di configurare il modo in cui per eseguire il routing, l'archiviazione e la conservazione dei log. Potresti incorrere in ulteriori costi di Google Cloud addebiti per log importazione e conservazione se superi i limiti di utilizzo e conservazione per nessuna ricarica. Tuttavia, puoi controllare i costi di logging in uno dei seguenti modi:
Riduci l'utilizzo del logging
Puoi limitare la quantità di importazione dei dati di log escludendo determinate voci di log.
Esporta o esegui il routing dei log
Puoi eseguire il routing dei log su altre destinazioni Google Cloud o esterne per evitare per l'importazione e i costi di archiviazione predefiniti. Assicurati di disattivare l'importazione dei log, descritto nella sezione successiva, per evitare costi di importazione.
Disattiva l'importazione dei log per evitare addebiti
È preferibile ridurre l'utilizzo del logging o esportare o eseguire il routing dei log anziché attivare dall'importazione dei log. Se invece non intendi utilizzare i log di Fleet Engine, puoi evitare potenziali addebiti di Cloud Logging disattivando l'importazione. Per impostazione predefinita, I log di Fleet Engine vengono instradati al bucket di log _Default.
Il comando seguente aggiorna il bucket di logging _Default per non importare il parco risorse log di Compute 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"''
Per saperne di più, consulta: Cloud Logging Esclusioni ed Esclusione i log. Cloud Logging Esportazioni ed esportazione log
Utilizzo di Esplora log
Per utilizzare Esplora log, apri la console Cloud, seleziona Logging, quindi Esplora log. Per visualizzare un elenco di tutti i log di Fleet Engine disponibili, fai clic su il tipo di risorsa Fleet Engine. Alcuni log dell'API Delivery sono etichettati con un un ID attività e un ID veicolo per la consegna. Puoi utilizzare queste etichette per selezionare i log per le attività o i veicoli che ti interessano.
Filtra i log in base all'ID veicolo per la consegna
In Esplora log, puoi utilizzare la seguente query per limitare i log a una veicolo specifico:
resource.type="fleetengine.googleapis.com/DeliveryFleet"
labels.delivery_vehicle_id="delivery_vehicle_id"
Filtra i log per ID attività
In Esplora log, puoi utilizzare la seguente query per limitare i log a una per un'attività specifica:
resource.type="fleetengine.googleapis.com/DeliveryFleet"
labels.task_id=~"task_id"
Filtra i log per un veicolo in un periodo di tempo specifico
In Esplora log, puoi utilizzare la seguente query per limitare i log a quelli per un veicolo in un determinato periodo di tempo:
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"
Esempio di metriche basate su log
L'esempio seguente mostra come utilizzare le metriche basate su log per tenere traccia del numero di attività create nel tempo.
Nella console Cloud, seleziona Logging e poi Esplora log per aprire Esplora log. Quindi applica il seguente filtro:
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")
Nel riquadro Risultati delle query, seleziona il menu a discesa Azioni e scegli Crea metrica.
Nella finestra di dialogo Editor metriche:
- Specifica un nome per la metrica, ad esempio billable_tasks.
- Specifica una descrizione della metrica, ad esempio il numero di Tasks).
- Lascia vuota l'opzione Unità. _ Lascia invariata l'opzione Tipo. Contatore.
Quindi seleziona il pulsante Crea metrica.
Nella pagina Metriche basate su log, dovresti visualizzare un messaggio che conferma che la metrica è stata creata correttamente e la nuova metrica dovrebbe essere visualizzata nella Sezione Metriche definite dall'utente. La metrica verrà ora compilata come corrispondenza vengono generati i log.
Seleziona il menu a discesa verticale sul lato destro della nuova metrica e poi Seleziona Visualizza in Esplora metriche.
Nel riquadro a sinistra in Crea la tua query, imposta Tipo di risorsa su Flotta Engine e cerca la metrica billable_tasks.
Il grafico sulla destra mostra la frequenza delle chiamate billable_tasks.
Utilizzo di BigQuery
BigQuery è un potente strumento per eseguire analisi. Può essere utilizzato per archiviare a lungo termine ed eseguire query ad hoc di tipo SQL sui dati.
Routing dei log a BigQuery
Per sfruttare BigQuery, i log devono essere instradati a un datastore BigQuery, che segue:
Nella console Cloud, seleziona Logging, quindi Esplora log.
Crea un filtro che isola i log di Fleet Engine. In Esplora campi dei log, seleziona il tipo di risorsa Fleetengine.googleapis.com/DeliveryFleet.
Nel riquadro Risultati delle query, fai clic sul menu a discesa Azioni e scegli Crea Lavabo.
Nella finestra di dialogo Seleziona servizio sink, seleziona Set di dati BigQuery.
Nella finestra di dialogo Modifica sink, specifica le seguenti opzioni:
- Specifica un nome per il sink (ad esempio, FleetEngineLogsSink).
- Lascia il servizio sink su BigQuery.
- Seleziona l'opzione Utilizza tabelle partizionate. In questo modo, la query delle prestazioni.
- In Destinazione sink, seleziona Crea nuovo set di dati BigQuery, quindi Specificare il nome di un set di dati BigQuery (ad esempio, FleetEngineLogs).
- Fai clic sul pulsante Crea sink.
A questo punto i log dovrebbero iniziare a completare il set di dati BigQuery. Puoi vedere nella sezione BigQuery della console Cloud.
Verranno compilate diverse tabelle nel set di dati FleetEngineLogs automaticamente, uno per ogni tipo di log:
- CreateDeliveryVehicle
- GetDeliveryVehicle
- ListDeliveryVehicle
- UpdateDeliveryVehicle
- CreateTask
- GetTask
- UpdateTask
- ListTasks
I nomi delle tabelle utilizzano il seguente pattern:
project_id.data_set.log_name
Ad esempio, se il progetto è denominato test_project e il nome del set di dati è FleetEngineLogs, la tabella CreateTask ha il seguente nome:
test_project.FleetEngineLogs.fleetengine_googleapis_com_create_task
Esempi di query
Questa sezione mostra esempi di query che puoi creare.
Attività create all'ora
La seguente query conteggia il numero di log CreateTasks e li raggruppa per ora.
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
Numero di fermate per veicolo all'ora
La seguente query genera un conteggio delle fermate servite da un veicolo, guasto diminuendo di ora.
Ad esempio, questa query potrebbe indicare che nell'ultima ora:
- Il veicolo A ha completato 10 fermate nell'ora 12 e 8 fermate nell'ora 13.
- Il veicolo B ha completato 5 fermate nell'ora 11 e 7 soste nell'ora 12.
Il veicolo C ha completato 12 fermate nell'ora 13 e 9 fermate nell'ora 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
Percentuale di successo della prima consegna
La seguente query che mostra la percentuale di successo con la prima pubblicazione percentuale di tentativi.
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
Dashboard di Data Studio
BigQuery può essere integrato con strumenti di business intelligence e dashboard per l'analisi aziendale.
L'esempio seguente mostra come creare una dashboard su quali attività e veicolo i movimenti possono essere visualizzati su una mappa.
Lancia una nuova dashboard di Data Studio e seleziona BigQuery come dati connessione.
Seleziona Query personalizzata e il progetto Cloud a cui deve essere associata. fatturati.
Inserisci la seguente query nella casella della query.
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`
Seleziona Tipo di grafico come Mappa a bolle, quindi seleziona il campo della posizione.
Seleziona Crea campo.
Assegna un nome al campo e aggiungi la formula seguente: CONCAT(lat, ",", lng).
Quindi imposta il tipo su Geo->Latitudine, Longitudine.
Puoi aggiungere controlli alla dashboard per filtrare i dati. Ad esempio, seleziona il filtro dell'intervallo di date.
Modifica la casella dell'intervallo di date per selezionare un intervallo di date predefinito.
Puoi aggiungere ulteriori controlli all'elenco a discesa per delivery_vehicle_id.
Con questi controlli, puoi visualizzare il movimento del veicolo o il movimento all'interno di una consegna.