Registra richieste e risposte API

Fleet Engine offre un servizio di logging semplice che consente di salvare le richieste API e i payload di risposta. Con questi log puoi eseguire il debug dell'integrazione, creare metriche di monitoraggio e analizzare i pattern di traffico.

Fleet Engine invia i log come log della piattaforma a Cloud Logging per consentirti di accedervi tramite gli strumenti di Cloud Logging.

Log di Fleet Engine

Fleet Engine invia diverse informazioni a Cloud Logging, ad esempio:

  • Tutte le richieste e risposte REST e gRPC autenticate
  • Risposte di errore
  • Richieste, risposte e messaggi di errore da chiamate avviate dall'SDK Driver a Fleet Engine.
  • Suddividi i log per i tipi di log supportati:

Consulta la documentazione per lo schema e i messaggi di log disponibili nel riferimento di Logging.

Utilizza bucket di log limitati e predefiniti per rispettare i criteri di conservazione dei dati

L'utilizzo dei bucket "con restrizioni" e "predefinito" garantisce un quadro chiaro dell'utilizzo dei dati limitato e non limitato. Alcuni dei dati di log che Fleet Engine invia a Google Maps Platform possono essere conservati solo per un periodo di tempo limitato, in base ai Termini specifici dei servizi per la mobilità. Per assicurarti di conservare i dati limitati solo per il periodo di tempo consentito, tali dati devono essere etichettati come TOS_RESTRICTED (già Fleet Engine lo fa) e registrati in un bucket dedicato chiamato "limitato".

Da qui, puoi controllare per quanto tempo verrà conservato ed eliminarli automaticamente alla scadenza utilizzando le impostazioni di Cloud Logging. Ad esempio, i log per l'utilizzo limitato devono essere conservati solo per 30 giorni.

Registra tutti i dati senza limitazioni rimanenti nel bucket "predefinito", dove possono essere conservati per durate più lunghe come definito nei Termini specifici dei servizi per la mobilità (in genere per 1 anno). L'uso dei bucket "con restrizioni" e "predefinito" garantisce un quadro chiaro dell'utilizzo dei dati limitato e non limitato.

Invia tutti i dati di log senza restrizioni rimanenti al bucket "predefinito", dove possono rimanere a tempo indeterminato.

Ottieni una visualizzazione completa unendo log con e senza restrizioni

I log a utilizzo limitato contengono i dati a utilizzo limitato e un riferimento al log predefinito in modo che possano essere considerati insieme. Il log per l'utilizzo limitato contiene l'insertId del log predefinito come riferimento nel campo parent_insert_id. Puoi utilizzare questo campo per unire i dati di entrambi i log e ottenere il quadro completo.

Consulta la documentazione per tutti i messaggi di log e lo schema disponibili nel riferimento di Logging.

Abilita Cloud Logging

Fleet Engine abilita automaticamente i log predefiniti per i nuovi clienti di Mobility, a partire dai progetti creati il 10 febbraio 2022. Puoi verificare se il logging è abilitato utilizzando la seguente query in Esplora log :

resource.type:"fleetengine.googleapis.com"

Se non vedi log per quella query, è possibile che Cloud Logging non sia stato abilitato per il tuo progetto. Contatta l'assistenza se vuoi abilitare la funzionalità.

Abilita log per utilizzo limitato

I log con utilizzo limitato sono abilitati su richiesta. Per abilitare questi log per il tuo progetto Google Cloud, completa i seguenti passaggi:

Prepara il progetto per ricevere log a utilizzo limitato

  1. Nella console Google Cloud, apri la pagina del router dei log.
  2. Aggiorna il bucket di logging _Default per escludere i log a utilizzo limitato.
    1. Seleziona il bucket di logging _Default, quindi scegli Modifica sink.
    2. Nella sezione "Scegli i log da escludere dal sink", fai clic sul pulsante "Aggiungi esclusione":
      1. Nome filtro di esclusione: EscludiRestrictedLogs
      2. Filtro di esclusione: labels.restriction="TOS_RESTRICTED"
    3. Fai clic su "Aggiorna sink".
  3. Aggiorna il bucket di logging limitato per archiviare i log a utilizzo limitato.
    1. Nella pagina Router dei log, seleziona "Crea sink".
    2. Crea un sink con le seguenti impostazioni:
      1. Dettagli sink:
        1. Nome: RestrictedLogs
        2. Descrizione: log a utilizzo limitato di Routes Fleet Engine
      2. Destinazione sink:
        1. Servizio sink: bucket di Logging
        2. Seleziona bucket di log: Crea nuovo bucket di log
          1. Nome: Con restrizioni
          2. Descrizione: contiene log a utilizzo limitato di Fleet Engine
        3. Periodo di conservazione: 30 giorni
          1. Nota: il periodo di conservazione non deve superare i 30 giorni.
      3. Log da includere nel sink: lascia vuoto
      4. Log da filtrare dal sink: fai clic su "Aggiungi esclusione".
        1. Nome filtro di esclusione: EscludiNonRestrictedLogs
        2. Filtro di esclusione: NOT (resource.type = "fleetengine.googleapis.com/Fleet" OR resource.type = "fleetengine.googleapis.com/DeliveryFleet") NOT (labels.restriction = "TOS_RESTRICTED")
      5. Fai clic su "Crea sink"

Contatta l'assistenza per abilitare i log con utilizzo limitato

Poi, contatta l'assistenza e fornisci le seguenti informazioni nella richiesta di assistenza:

  1. ID progetto da abilitare:
  2. Indirizzo email della persona che richiede la modifica:
    1. Nota: questa persona deve disporre dell'accesso in modifica ai progetti Google Cloud elencati.
  3. Abilitando i contenuti di Google Maps a utilizzo limitato in Cloud Logging, accetti di rispettare i termini di Google Maps Platform e i termini specifici del servizio Mobile, inclusi i requisiti per la memorizzazione nella cache e l'utilizzo consentito in relazione ai Contenuti di Google Maps. Sì/No

Quando il team di assistenza riceve la tua richiesta, invia la conferma che il logging è stato abilitato per il tuo progetto

Suddividi log cloud

Cloud Logging limita le dimensioni dei log in entrata a 256 kB. Il servizio elimina i log oltre questa soglia. Per garantire che Cloud Logging conservi i log di grandi dimensioni, Fleet Engine può suddividerli in una serie di log al di sotto della soglia di 256 kB. Questi log hanno un prefisso insertId comune per indicare l'ordine in cui il servizio suddivide il log più piccolo dal log originale con dimensioni eccessive. Potrai quindi partecipare di nuovo a questi partecipanti in base al loro insertId.

Per accedere al log originale non suddiviso, unisci i log suddivisi in base ai relativi insertId nell'ordine originale in cui sono stati suddivisi, come indicato dall'indice nella voce di log del cloud.

La struttura dei log suddivisi è la stessa menzionata nella guida alle voci di audit log Suddividi per Cloud Audit Logs. La differenza principale per i log suddivisi in Fleet Logging è che la suddivisione avviene nel campo jsonPayload, anziché nel campo protoPayload. Esamina la suddivisione di esempio mostrata nella sezione successiva.

Tipi di log supportati

Fleet Engine supporta la suddivisione dei log solo per i seguenti tipi di log le cui dimensioni superano i 256 kB:

Esempio di struttura di log suddivisi

// First Split Log
{
  // insertId appended with an increasing number
  "insertId": "ABCDE-1",
  "jsonPayload": {
    "response": {
      "matches": [
        {
          // ...
          "vehicle": {
            "name": "providers/test-123/vehicles/test-vehicle-0",
            // ...
          }
        },
        {
          // ...
          "vehicle": {
            "name": "providers/test-123/vehicles/test-vehicle-1",
            // ...
            }
        }
      ]
    },
    "@type": "type.googleapis.com/maps.fleetengine.v1.SearchVehiclesLog",
    "request": {
      "searchTripTypes": [
        "EXCLUSIVE_TRIP"
      ],
      "pickupPoint": {},
      "count": 50,
      "pickupRadiusMeters": 400,
      "minimumCapacity": 1,
      "matchOrderBy": "PICKUP_POINT_ETA",
      "vehicleTypes": [
        {
          "vehicleCategory": "TAXI"
        }
      ]
    }
  },
  "resource": {
    "type": "fleetengine.googleapis.com/Fleet",
    "labels": {
      "resource_container": "projects/test-123",
      "location": "global"
    }
  },
  // Same timestamp
  "timestamp": "2024-02-06T22:48:50.620713Z",
  "logName": "projects/test-123/logs/fleetengine.googleapis.com%2Fsearch_vehicles",
  "receiveTimestamp": "2024-02-06T22:48:52.006308491Z",
  "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": {
    "response": {
      "matches": [
        {},{} // Previous matches appear as empty objects
        {
          // ...
          "vehicle": {
            "name": "providers/test-123/vehicles/test-vehicle-2",
            // ...
          },
        }
      ]
    },
    "@type": "type.googleapis.com/maps.fleetengine.v1.SearchVehiclesLog",
    "request": {
      "searchTripTypes": [
        "EXCLUSIVE_TRIP"
      ],
      "pickupPoint": {},
      "count": 50,
      "pickupRadiusMeters": 400,
      "minimumCapacity": 1,
      "matchOrderBy": "PICKUP_POINT_ETA",
      "vehicleTypes": [
        {
          "vehicleCategory": "TAXI"
        }
      ]
    }
  },
  "resource": {
    "type": "fleetengine.googleapis.com/Fleet",
    "labels": {
      "resource_container": "projects/test-123",
      "location": "global"
    }
  },
  // Same timestamp
  "timestamp": "2024-02-06T22:48:50.620713Z",
  "logName": "projects/test-123/logs/fleetengine.googleapis.com%2Fsearch_vehicles",
  "receiveTimestamp": "2024-02-06T22:48:52.006308491Z",
  "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 cloud sono strutturati secondo il formato LogEntry. Fleet Engine invia i log a Cloud Logging con resource.type della voce di log impostato su fleetengine.googleapis.com. Puoi utilizzare Esplora log per scrivere query per la visualizzazione dei log.

Ad esempio, per visualizzare tutte le RPC di Fleet Engine che hanno restituito un errore, utilizza la seguente query Esplora log:

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

Per visualizzare i log delle RPC effettuate al metodo UpdateVehicle per l'ID progetto-progetto, utilizza la seguente query Esplora log:

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

L'esempio seguente mostra una voce LogEntry per il log UpdateVehicle. La richiesta e la risposta RPC si trovano all'interno del 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.UpdateVehicleLog"
      },
      "resource": {
        "type": "fleetengine.googleapis.com/Fleet",
        "labels": {2}
      },
      "timestamp": "2021-01-01T00:00:00.000000000Z",
      "labels": {2},
      "logName": "projects/example-project-id/logs/fleetengine.googleapis.com%2Fupdate_vehicle",
      "receiveTimestamp": "2021-01-01T00:00:00.000000000Z"
    }

Se viene restituito un errore RPC, il campo responseVehicle viene cancellato e il campo errorResponse viene impostato e compilato all'interno di jsonPayload:

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

Per ulteriori informazioni sul linguaggio di query di Logging, consulta Lingua delle query di Logging . Per informazioni su come utilizzare i log per creare metriche, consulta la Panoramica delle metriche basate su log.

Gestire i costi di logging

Dopo aver abilitato il logging, sei responsabile di configurare la modalità di routing, archiviazione e conservazione dei log. Se superi i limiti di utilizzo e conservazione senza costi, potresti incorrere in addebiti aggiuntivi di Google Cloud per l'importazione e la conservazione dei log. Tuttavia, puoi controllare i costi di logging effettuando una delle seguenti operazioni:

Riduci l'utilizzo del logging

Puoi limitare la quantità di importazione dei dati di log escludendo determinate voci di log.

Esporta o instrada i log

Puoi eseguire il routing dei log su altre destinazioni Google Cloud o esterne per evitare i costi di importazione e archiviazione predefiniti. Assicurati di disattivare l'importazione dei log, come descritto nella prossima sezione, per evitare costi di importazione.

Disattiva l'importazione dei log per evitare addebiti

È preferibile ridurre l'utilizzo del logging o l'esportazione o il routing dei log rispetto alla disattivazione dell'importazione dei log. Tuttavia, se non intendi utilizzare i log di Fleet Engine, puoi evitare i potenziali addebiti di Cloud Logging disattivando l'importazione. Per impostazione predefinita, i log di Fleet Engine vengono instradati al bucket di log _Default.

Il seguente comando aggiorna il bucket di logging _Default in modo da non importare i log del 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"''

Per ulteriori informazioni, consulta: Esclusioni di Cloud Logging ed Esclusione dei log. Esportazioni di Cloud Logging ed esportazione dei 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 sul tipo di risorsa Fleet Engine. Alcuni log API sono etichettati con un ID viaggio e un ID veicolo. Puoi utilizzare queste etichette per selezionare i registri per le corse o i veicoli che ti interessano.

Etichette log

Filtra i log per ID veicolo

In Esplora log, puoi utilizzare la seguente query per limitare i log a un veicolo specifico:

    resource.type="fleetengine.googleapis.com/Fleet"
    labels.vehicle_id="vehicle_id"

Filtra veicolo

Filtra i log per ID corsa

In Esplora log, puoi utilizzare la seguente query per limitare i log a una corsa specifica:

    resource.type="fleetengine.googleapis.com/Fleet"
    labels.trip_id=~"trip_id"

Filtrare 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 periodo di tempo specifico:

    resource.type="fleetengine.googleapis.com/Fleet"
    labels.vehicle_id="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 monitorare il numero di viaggi creati nel tempo.

  1. Nella console Cloud, seleziona Logging, quindi Esplora log per aprire Esplora log. A questo punto, applica il seguente filtro:

    resource.type="audited_resource"
    resource.labels.method="maps.fleetengine.v1.TripService.ReportBillableTrip"
    
  2. Nel riquadro Risultati delle query, seleziona il menu a discesa Azioni e seleziona Crea metrica.

    Crea metrica

  3. Nella finestra di dialogo Editor metriche:

    • Specifica il nome di una metrica, ad esempio billable_trips.
    • Specifica una descrizione della metrica (ad esempio, Il numero di chiamate fatturabili di un viaggio).
    • Lascia vuota l'opzione Unità. _ Lascia l'opzione Tipo impostata su Contatore.

    Poi seleziona il pulsante Crea metrica.

  4. Nella pagina Metriche basate su log, dovresti visualizzare un messaggio che conferma che la metrica è stata creata correttamente e che la nuova metrica dovrebbe essere visualizzata nella sezione Metriche definite dall'utente. La metrica verrà ora completata man mano che vengono generati i log corrispondenti.

  5. Seleziona il menu a discesa verticale sul lato destro della nuova metrica e poi seleziona Visualizza in Metrics Explorer.

    Visualizza metrica

  6. Nel riquadro a sinistra, in Crea query, imposta il tipo di risorsa su Fleet Engine e cerca la metrica billable_trips.

    Cerca metrica

    Il grafico a destra mostra la percentuale di chiamate fatturabili_trips.

Utilizza BigQuery

BigQuery è un potente strumento per l'esecuzione di analisi. Può essere utilizzata per archiviare log a lungo termine ed eseguire query ad hoc di tipo SQL sui dati.

Esegui il routing dei log a BigQuery

Per utilizzare BigQuery, i log devono essere instradati a un datastore BigQuery, come segue:

  1. Nella console Cloud, seleziona Logging, quindi Esplora log.

  2. Crea un filtro che isola i log di Fleet Engine. In Esplora campi dei log, seleziona il tipo di risorsa Fleetengine.googleapis.com/Fleet.

    Crea filtro

  3. Nel riquadro Risultati delle query, fai clic sul menu a discesa Azioni e scegli Crea sink.

    Crea
sink

  4. Nella finestra di dialogo Seleziona servizio sink, seleziona Set di dati BigQuery.

    Seleziona sink

  5. Nella finestra di dialogo Modifica sink, specifica le seguenti opzioni:

    • Specifica un nome di sink (ad esempio, FleetEngineLogsSink).
    • Lascia il servizio sink su BigQuery.
    • Seleziona l'opzione Utilizza tabelle partizionate. Ciò migliorerà le prestazioni delle query.
    • In Destinazione sink, seleziona Crea nuovo set di dati BigQuery e specifica il nome di un set di dati BigQuery (ad esempio, FleetEngineLogs).
    • Fai clic sul pulsante Crea sink.

    Modifica sink

A questo punto i log dovrebbero iniziare a completare il set di dati BigQuery. Puoi visualizzare i dati nella sezione BigQuery della console Cloud.

Sezione
BigQuery

Verranno compilate automaticamente diverse tabelle nel set di dati FleetEngineLogs, una per ogni tipo di log:

  • CreateVehicle
  • GetVehicle
  • ListVehicles
  • SearchVehicles
  • UpdateVehicle
  • CreateTrip
  • GetTrip
  • UpdateTrip
  • ListTrips

I nomi delle tabelle utilizzano il seguente pattern:

project_id.data_set.log_name

Ad esempio, se il progetto è chiamato test_project e il nome del set di dati è FleetEngineLogs, la tabella CreateTrip avrà il seguente nome:

test_project.FleetEngineLogs.fleetengine_googleapis_com_create_trip

Esempi di query

Questa sezione mostra esempi di query che puoi creare.

Viaggi creati all'ora

La seguente query conta il numero di log CreateTrips e li raggruppa per ora.

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

Numero di scali per veicolo all'ora

La seguente query genera un conteggio delle fermate servite da un veicolo, suddivise per 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 fermate nell'ora 12.
  • Il veicolo C ha completato 12 fermate nell'ora 13 e 9 fermate nell'ora 14.

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

Dashboard di Data Studio

È possibile integrare BigQuery con strumenti di business intelligence, oltre a creare dashboard per l'analisi aziendale.

L'esempio seguente mostra come creare una dashboard in cui visualizzare su una mappa percorsi e movimenti dei veicoli.

  1. Avvia una nuova dashboard di Datastudio e seleziona BigQuery come connessione dati.

    Connessione dati

  2. Seleziona Query personalizzata e il progetto Cloud a cui deve essere fatturata.

    Seleziona progetto

  3. Inserisci la query seguente nella casella della query.

    Inserisci la query

    SELECT
     timestamp,
     labels.vehicle_id,
    jsonpayload_v1_updatevehiclelog.response.lastlocation.location.latitude AS lat,
    jsonpayload_v1_updatevehiclelog.response.lastlocation.location.longitude AS lng
    FROM
    `ProjectId.FleetEngineLogs.fleetengine_googleapis_com_update_vehicle`
    
  4. Seleziona Mappa a bolle come tipo di grafico, quindi seleziona il campo della località.

    Tipo di grafico

  5. Seleziona Crea campo.

    Crea campo

  6. Assegna un nome al campo e aggiungi la seguente formula: CONCAT(lat, ",", lng).

    Quindi imposta il tipo su Geo->Latitudine, Longitudine.

    Imposta
tipo

  7. Puoi aggiungere controlli alla dashboard per filtrare i dati. Ad esempio, seleziona il filtro Intervallo di date.

    Aggiungi controlli

  8. Modifica la casella dell'intervallo di date per selezionare un intervallo di date predefinito.

    Intervallo
di date

  9. Puoi aggiungere ulteriori controlli all'elenco a discesa per il valore Vehicle_id.

    Elenco a discesa

Con questi controlli, puoi visualizzare i movimenti del veicolo o di un percorso.