Google Cloud IoT Core verrà ritirato il 16 agosto 2023. Per saperne di più, contatta il team dedicato al tuo account Google Cloud.

Visualizzazione dei log del dispositivo

Cloud IoT Core può facoltativamente inviare i log delle attività dei dispositivi a Cloud Logging. I log delle attività dei dispositivi includono informazioni quali le connessioni e gli errori dei dispositivi, Questi sono chiamati eventi.

Gli errori di autenticazione non vengono registrati. Un dispositivo deve essere autenticato a Cloud IoT Core per generare i log degli eventi.

Ciclo di vita degli eventi del dispositivo

Tutti i dispositivi Cloud IoT Core seguono un ciclo di vita simile con i seguenti eventi. Alcuni di questi eventi e i relativi dettagli sottostanti vengono acquisiti nei log del dispositivo.

  1. Connessione a Cloud IoT Core.
  2. Inviare e ricevere dati di telemetria e/o di stato.
  3. Disconnettere o eliminare la connessione a Cloud IoT Core.

Il modo in cui si verificano e vengono registrati questi eventi dipende dal fatto che i dispositivi utilizzino il bridge MQTT o il bridge HTTP.

Registrazione dell'attività del dispositivo

Cloud IoT Core utilizza i livelli di log per determinare quali eventi del dispositivo vengono inviati a Cloud Logging. Puoi impostare i livelli dei log del dispositivo per un registro e tutti i suoi dispositivi o per i singoli dispositivi. Il livello di log impostato per un registro si applica a tutti i dispositivi all'interno del registro. Il livello di log impostato per un singolo dispositivo sostituisce l'impostazione del registro.

La tabella seguente descrive i livelli di log disponibili per i dispositivi:

Livello di log Descrizione
Nessuno Nessun log eventi del dispositivo raccolto.
ERROR Acquisisce tutti gli eventi ERROR, ad esempio le pubblicazioni non riuscite. Consulta l'elenco degli eventi del dispositivo registrati per un elenco completo di ERROR eventi.
INFO (solo MQTT) Acquisisce tutti gli eventi INFO, come connessioni e disconnessioni su MQTT. Cattura anche tutti gli eventi ERROR. Consulta l'elenco degli eventi del dispositivo registrati per un elenco completo di INFO eventi.
DEBUG Acquisisce tutti gli eventi DEBUG, come pubblicazioni, iscrizioni e battiti cardiaci. Utile per individuare problemi con dispositivi specifici. Cattura anche tutti gli eventi ERROR e INFO. Consulta l'elenco degli eventi del dispositivo registrati per un elenco completo di DEBUG eventi. Per ulteriori informazioni, consulta la sezione Logging di debug del dispositivo.

Elenco degli eventi del dispositivo registrati

Le seguenti tabelle mostrano:

  • Quali eventi del dispositivo vengono registrati.
  • Il eventType dell'evento registrato in Cloud Logging.
  • Indica se vengono registrati gli eventi riusciti, non riusciti o entrambi per ogni evento.
  • Il livello di log che deve essere impostato su un registro o dispositivo per registrare l'evento.

Bridge MQTT

Evento dispositivo eventType Operazione riuscita Non riuscita
Autentica al server N/D Non registrato* Non registrato
Connetti al server CONNECT INFO ERROR
Disconnetti dal server DISCONNECT INFO Non registrato
Collegare un dispositivo a un gateway ATTACH_TO_GATEWAY INFO ERROR
Scollegare un dispositivo da un gateway DETACH_FROM_GATEWAY INFO ERROR
Pubblica un evento o uno stato di telemetria sul server PUBLISH (su argomento /devices/{device-id}/events o /devices/{device-id}/state MQTT) DEBUG ERROR
Ricevi un aggiornamento della configurazione PUBLISH (su argomento /devices/{device-id}/config MQTT) DEBUG ERROR
Iscriviti all'argomento di configurazione Pub/Sub SUBSCRIBE DEBUG ERROR
Annulla l'iscrizione all'argomento di configurazione Pub/Sub UNSUBSCRIBE DEBUG ERROR
PUBACK ricevuto dal server PUBACK DEBUG ERROR
Ping keep-alive inviato al server PINGREQ DEBUG ERROR
Comando inviato al dispositivo dal server PUBLISH DEBUG ERROR
Comando PUBACK inviato al server PUBACK DEBUG ERROR

* Se l'autenticazione MQTT va a buon fine, il dispositivo si connette a Cloud IoT Core e viene registrato un evento CONNECT anziché un evento "Autentica al server".

Bridge HTTP

Evento dispositivo methodName Operazione riuscita Non riuscita
Autentica al server N/D Non registrato** Non registrato
Pubblicare un evento di telemetria google.cloud.iot.v1.PublishEvent DEBUG ERROR
Impostazione dello stato di un dispositivo google.cloud.iot.v1.SetDeviceState DEBUG ERROR
Ricevi un aggiornamento della configurazione google.cloud.iot.v1.GetDeviceConfig DEBUG ERROR

**Se l'autenticazione HTTP va a buon fine, il dispositivo si connette a Cloud IoT Core e viene registrato il messaggio di richiesta pertinente (GET se viene ricevuta una configurazione o POST se un messaggio viene pubblicato).

Attivazione, modifica e disattivazione del logging dei dispositivi

Puoi scegliere i tipi di log che devono essere segnalati a Cloud Logging quando crei o modifichi un registro o un dispositivo in Google Cloud Console o con lo strumento gcloud.

Impostazione dei livelli di log per un registro

Puoi attivare, modificare o disattivare i log del dispositivo per un registro utilizzando Google Cloud Console o gcloud. Le impostazioni del log del Registro di sistema si applicano automaticamente a tutti i dispositivi all'interno del Registro.

console

Per creare o modificare un registro e impostarne il livello:

  1. Vai alla pagina Registry in Google Cloud Console.

    Vai alla pagina Registry

  2. Nella parte superiore della pagina, fai clic su Crea registro.

    Per modificare un registro esistente, fai clic sul suo ID nella pagina Registry, quindi fai clic su Modifica registro nella parte superiore della pagina.

  3. In Stackdriver Logging, seleziona un livello di log.

  4. Fai clic su Crea (se crei un nuovo registro) o su Aggiorna (se modifichi un registro esistente).

gcloud

Per creare un registro e impostare il relativo livello di log, esegui il comando gcloud iot registries create con il flag --log-level:

gcloud iot registries create REGISTRY_ID \
    --project=PROJECT_ID \
    --region=REGION \
    [--event-notification-config=topic=TOPIC,[subfolder=SUBFOLDER] [--event-notification-config=...]]
    [--state-pubsub-topic=STATE_PUBSUB_TOPIC] \
    --log-level={NONE|INFO|ERROR|DEBUG}

Per aggiornare il livello di log di un dispositivo, esegui il comando gcloud iot registries update con il flag --log-level:

gcloud iot registries update REGISTRY_ID \
    --project=PROJECT_ID \
    --region=REGION \
    --log-level={NONE|INFO|ERROR|DEBUG}

Impostare i livelli di log per un dispositivo

Puoi attivare, modificare o disattivare i log del dispositivo per un dispositivo utilizzando Google Cloud Console o gcloud. Il livello di log di un dispositivo ha la precedenza su quello del registry.

console

Per impostare il livello di log per un dispositivo nuovo o esistente:

  1. Vai alla pagina Registry in Google Cloud Console.

    Vai alla pagina Registry

  2. Fai clic sull'ID del registry del dispositivo.

  3. Nel menu del Registro di sistema a sinistra, fai clic su Dispositivi.

  4. Per creare un nuovo dispositivo, fai clic su Crea un dispositivo.

    Per modificare un dispositivo esistente, fai clic sul suo ID nella pagina Dispositivi, poi fai clic su Modifica dispositivo nella parte superiore della pagina.

  5. In Stackdriver Logging, seleziona un livello di log.

  6. Fai clic su Crea (se crei un nuovo dispositivo) o su Aggiorna (se modifichi un dispositivo esistente).

gcloud

Per creare un dispositivo e impostare un livello di log, esegui il comando gcloud iot devices create con il flag --log-level:

gcloud iot devices create DEVICE_ID \
    --project=PROJECT_ID \
    --region=REGION \
    --registry=REGISTRY_ID \
    --public-key path=PUBLIC_KEY,type=TYPE \
    --log-level={NONE|INFO|ERROR|DEBUG}

Per aggiornare il livello di log di un dispositivo, esegui il comando gcloud iot devices update con il flag --log-level:

gcloud iot devices update DEVICE_ID \
    --project=PROJECT_ID \
    --region=REGION \
    --registry=REGISTRY_ID \
    --log-level={NONE|INFO|ERROR|DEBUG}

Visualizzazione dei log

Puoi visualizzare i log delle attività dei dispositivi per il tuo progetto in Esplora log su Google Cloud Console. Seleziona device_activity nel menu del nome del log.

Per maggiori dettagli, consulta Utilizzo di Esplora log.

Server

Per leggere le voci di log tramite l'API Logging, consulta entries.list.

gcloud

Per leggere le voci di log utilizzando gcloud, vedi Lettura delle voci di log.

Esportazione dei log del dispositivo in corso...

Puoi esportare i log del dispositivo nello stesso modo in cui esporti altri tipi di log. Per informazioni dettagliate su come esportare i log, vedi Esportazione dei log.

I seguenti esempi descrivono i motivi per cui è consigliabile esportare i log del dispositivo:

  • Per conservare i log del dispositivo per un periodo di tempo più lungo o per utilizzare funzionalità di ricerca più potenti, puoi esportare delle copie dei log del dispositivo in Cloud Storage, BigQuery o Pub/Sub. Utilizzando Pub/Sub, puoi esportare in altre applicazioni, altri repository e in terze parti.

  • Per gestire i log del dispositivo in un'intera organizzazione, puoi creare sink di esportazione aggregati che possano esportare i log da qualsiasi progetto o da tutti i progetti nell'organizzazione.

Limiti di logging dei dispositivi

Le quote e i limiti di log dei dispositivi si applicano a livello di progetto. Vengono misurati separatamente e non vengono conteggiati per altre quote e limiti di Cloud Logging. Se le quote dei log dispositivo sono esaurite, le quote di Cloud Logging per gli altri servizi non saranno interessate. Questo è vero anche in caso contrario.

Le quote dei log dispositivo sono basate su due fattori:

  • Il numero di eventi del dispositivo registrati al secondo. Gli eventi includono pubblicazioni, connessioni, disconnessioni e così via.
  • La dimensione totale (in byte) degli eventi del dispositivo registrati al minuto.

Se viene superata una delle quote di log dispositivo, i log del dispositivo vengono temporaneamente interrotti.

Per un elenco delle quote e dei limiti dei log dei dispositivi, consulta la sezione Quote e limiti.

Best practice

Logging debug dispositivo

Come mostrato nell'elenco degli eventi relativi ai dispositivi registrati, l'impostazione del livello di log DEBUG per un registry o un singolo dispositivo può generare grandi quantità di informazioni di logging. Di conseguenza, se attivi il logging di debug per un registro con un ampio parco di dispositivi, i record di logging potrebbero essere eliminati a causa dell'elevata velocità e della quantità di log.

Ad esempio, supponiamo che tu abbia un registro con 100.000 dispositivi e che il livello del log di debug sia impostato per il registro. Se ogni dispositivo pubblica un evento di telemetria ogni secondo, verranno registrati solo 1000 eventi di telemetria su 100.000. Questo perché, come mostrato nella sezione Quote e limiti, il numero massimo di voci registrate è 1000 al secondo.

Per risultati ottimali, attiva il logging di debug solo per un breve periodo di tempo o per un numero limitato di dispositivi.

Risolvere gli errori durante la scrittura dei log

Quando attivi per la prima volta l'API Google Cloud IoT Core per un progetto, a un nuovo account di servizio del progetto viene assegnato automaticamente un ruolo (cloudiot.serviceAgent) che consente di scrivere i log in Cloud Logging. Se in seguito rimuovi questo ruolo predefinito dall'account di servizio del progetto pertinente, potrebbero verificarsi errori. Se non riesci a scrivere l'attività del dispositivo in Cloud Logging, segui questi passaggi:

  1. Nella pagina IAM di Google Cloud Console, verifica che il ruolo Agente di servizio Cloud IoT Core sia visualizzato nell'elenco Membri per l'account di servizio di progetto pertinente. (Cerca l'account di servizio del progetto che termina con @gcp-sa-cloudiot.iam.gserviceaccount.com).

  2. Se il ruolo Agente di servizio Cloud IoT Core non è nell'elenco Membri, utilizza gcloud per aggiungere il ruolo cloudiot.serviceAgent all'account di servizio del progetto pertinente. Questo ruolo include l'autorizzazione per scrivere i log in Cloud Logging.

    Esegui il comando seguente per aggiungere il ruolo cloudiot.serviceAgent al progetto. Per trovare PROJECT_ID e PROJECT_NUMBER, consulta Identificazione dei progetti.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudiot.iam.gserviceaccount.com \
      --role=roles/cloudiot.serviceAgent