Visualizzazione dei log del dispositivo

Facoltativamente, Cloud IoT Core può inviare i log delle attività del dispositivo a Cloud Logging. I log delle attività del dispositivo includono informazioni come connessioni del dispositivo ed errori. Questi eventi vengono 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 vengono acquisiti nei log del dispositivo.

  1. Connessione a Cloud IoT Core.
  2. Invio e ricezione di dati di telemetria e/o stato.
  3. Disconnessione o eliminazione della connessione a Cloud IoT Core.

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

Registrazione dell'attività del dispositivo

Cloud IoT Core utilizza i livelli di log per determinare quali eventi dei dispositivi vengono inviati a Cloud Logging. Puoi impostare i livelli di log dei dispositivi per un registro e tutti i relativi 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 di sistema.

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

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

Elenco di eventi del dispositivo registrati

Le tabelle seguenti mostrano:

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

Bridge MQTT

Evento dispositivo eventType Operazione riuscita Non riuscita
Autentica al server N/A Non registrati* 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 /devices/{device-id}/events o /devices/{device-id}/state argomento MQTT) DEBUG ERROR
Ricevi un aggiornamento della configurazione PUBLISH (su argomento /devices/{device-id}/config MQTT) DEBUG ERROR
Abbonati 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 ha esito positivo, il dispositivo si connette a Cloud IoT Core e viene registrato un evento CONNECT anziché un evento "quoit-auth to server" (Autentica al server).

Bridge HTTP

Evento dispositivo methodName Operazione riuscita Non riuscita
Autentica al server N/A Non registrati** Non registrato
Pubblica 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 ha esito positivo, il dispositivo si connette a Cloud IoT Core e viene registrato il messaggio della richiesta pertinente (GET se viene ricevuta una configurazione o POST se viene pubblicato un messaggio).

Attivazione, modifica e disattivazione del logging dei dispositivi

Puoi scegliere quali tipi di log vengono 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 abilitare, modificare o disabilitare i log dei dispositivi 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 di sistema.

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 di sistema esistente, fai clic sul suo ID nella pagina Registry e quindi in 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 abilitare, modificare o disabilitare 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 registro.

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, quindi 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 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à del dispositivo nel tuo progetto in Esplora log su Google Cloud Console. Seleziona device_activity nel menu del nome del log.

Per ulteriori dettagli, consulta Utilizzo di Esplora log.

API

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

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 spiegano perché potresti voler esportare i log del dispositivo:

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

  • Per gestire i log del dispositivo di un'intera organizzazione, puoi creare sink di esportazione aggregati in grado di esportare i log da uno o tutti i progetti dell'organizzazione.

Limiti del logging dei dispositivi

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

Le quote dei log del dispositivo si basano 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 del dispositivo, i log del dispositivo si interrompono temporaneamente.

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 dei dispositivi registrati, l'impostazione del livello di log DEBUG per un registro o per un singolo dispositivo può generare grandi quantità di informazioni di logging. Di conseguenza, se attivi il logging di debug per un registro con un vasto 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 di log di debug sia impostato per il registro. Se ogni dispositivo pubblica un evento di telemetria al secondo, verranno registrati solo 1000 eventi di telemetria su 100.000. Questo perché, come mostrato in Quote e limiti, il numero massimo di voci registrate è 1000 al secondo.

Per ottenere 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 abiliti 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 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 su Cloud Logging, procedi nel seguente modo:

  1. Nella pagina IAM in Google Cloud Console, verifica che venga visualizzato il ruolo Agente di servizio Cloud IoT Core nell'elenco Membri per l'account di servizio del 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 principale di Cloud IoT non compare 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 questo comando per aggiungere il ruolo cloudiot.serviceAgent al progetto. Per trovare PROJECT_ID e PROJECT_NUMBER, consulta la sezione Identificare i progetti.

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