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.
- Connessione a Cloud IoT Core.
- Inviare e ricevere dati di telemetria e/o di stato.
- 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:
- Vai alla pagina Registry in Google Cloud Console.
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.
In Stackdriver Logging, seleziona un livello di log.
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:
- Vai alla pagina Registry in Google Cloud Console.
Fai clic sull'ID del registry del dispositivo.
Nel menu del Registro di sistema a sinistra, fai clic su Dispositivi.
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.
In Stackdriver Logging, seleziona un livello di log.
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:
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
).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