Como visualizar registros de dispositivos

Opcionalmente, o Cloud IoT Core pode enviar registros de atividades do dispositivo para o Cloud Logging. Os registros de atividade do dispositivo incluem informações como conexões e erros do dispositivo. Esses eventos são chamados de eventos.

Falhas de autenticação não são registradas. Um dispositivo precisa ser autenticado no Cloud IoT Core para gerar registros de eventos.

Ciclo de vida dos eventos do dispositivos

Todos os dispositivos do Cloud IoT Core seguem um ciclo de vida semelhante aos seguintes eventos: Alguns desses eventos e os detalhes subjacentes são capturados nos registros do dispositivo.

  1. Como se conectar ao Cloud IoT Core.
  2. Enviar e receber eventos de telemetria e/ou estado.
  3. Desconexão ou perda da conexão com o Cloud IoT Core.

A forma como esses eventos ocorrem e são registrados é determinada se os dispositivos usam a ponte MQTT ou a ponte HTTP.

Como registrar a atividade do dispositivo

O Cloud IoT Core usa níveis de registro para determinar quais eventos de dispositivos são enviados para o Cloud Logging. É possível definir níveis de registro de dispositivo para um registro e todos os dispositivos dele ou para dispositivos individuais. O nível de registro definido para um registro se aplica a todos os dispositivos no registro. O nível de registro definido para um dispositivo individual modifica a configuração do registro dele.

A tabela a seguir descreve os níveis de registro do dispositivo disponíveis:

Nível de registro Descrição
Nenhuma Nenhum registro de evento do dispositivo é coletado.
ERROR Captura todos os eventos de ERROR, como publicações com falha. Consulte a lista de eventos de dispositivo registrados para ver uma lista completa de eventos ERROR.
INFO (MQTT somente) Captura todos os eventos de INFO, como conexões e desconexões no MQTT. Também captura todos os eventos ERROR. Consulte a lista de eventos de dispositivo registrados para ver uma lista completa de eventos INFO.
DEBUG Captura todos os eventos de DEBUG, como publicações, inscrições e sinais de funcionamento. Ele é útil para identificar problemas em dispositivos específicos. Também captura todos os eventos ERROR e INFO. Consulte a lista de eventos de dispositivo registrados para ver uma lista completa de eventos DEBUG. Consulte Registro de depuração de dispositivo para saber mais.

Lista de eventos do dispositivo registrados

As tabelas a seguir mostram o seguinte:

  • Quais eventos do dispositivo são registrados.
  • O eventType do evento conforme registrado no Cloud Logging.
  • Se sucessos, falhas ou ambos são registrados para cada evento.
  • O nível de registro que precisa ser definido em um registro ou dispositivo para registrar o evento.

Ponte MQTT

Evento do dispositivo eventType Sucesso Falha
Autenticar no servidor N/A Ações não registradas* Ações não registradas
Conectar ao servidor CONNECT INFO ERROR
Desconectar do servidor DISCONNECT INFO Ações não registradas
Anexar um dispositivo a um gateway ATTACH_TO_GATEWAY INFO ERROR
Remover um dispositivo de um gateway DETACH_FROM_GATEWAY INFO ERROR
Publicar um evento ou estado de telemetria no servidor PUBLISH (no tópico MQTT /devices/{device-id}/events ou /devices/{device-id}/state) DEBUG ERROR
Receber uma atualização de configuração PUBLISH (no /devices/{device-id}/config tópico MQTT) DEBUG ERROR
Inscrever-se no tópico de configuração do Pub/Sub SUBSCRIBE DEBUG ERROR
Cancelar inscrição no tópico de configuração do Pub/Sub UNSUBSCRIBE DEBUG ERROR
PUBACK recebido do servidor PUBACK DEBUG ERROR
O ping do sinal de atividade foi enviado para o servidor PINGREQ DEBUG ERROR
Comando enviado de um servidor ao dispositivo PUBLISH DEBUG ERROR
Comando PUBACK enviado ao servidor PUBACK DEBUG ERROR

* Se a autenticação MQTT for bem-sucedida, o dispositivo se conectará ao Cloud IoT Core e um evento CONNECT será registrado em vez de um evento "Autenticar com o servidor".

Ponte HTTP

Evento do dispositivo methodName Sucesso Falha
Autenticar no servidor N/A Ações não registradas** Ações não registradas
Publicar um evento de telemetria google.cloud.iot.v1.PublishEvent DEBUG ERROR
Definir estado do dispositivo google.cloud.iot.v1.SetDeviceState DEBUG ERROR
Receber uma atualização de configuração google.cloud.iot.v1.GetDeviceConfig DEBUG ERROR

**Se a autenticação HTTP for bem-sucedida, o dispositivo se conectará ao Cloud IoT Core e à mensagem de solicitação relevante (GET se uma configuração for recebida ou POST se uma mensagem será publicada) será registrada.

Como ativar, alterar e desativar a geração de registros do dispositivo

É possível escolher quais tipos de registros são informados ao Cloud Logging ao criar ou editar um registro ou um dispositivo no Console do Google Cloud ou com a ferramenta gcloud.

Como definir níveis de registro em um registro

É possível ativar, alterar ou desativar registros do dispositivo para um registro usando o Console do Google Cloud ou a gcloud. As configurações de registro do registro se aplicam automaticamente a todos os dispositivos no registro.

Console

Para criar ou editar um registro e definir o nível de registro dele:

  1. Acesse a página Registros no Console do Google Cloud.

    Acessar a página Registros

  2. Na parte superior da página, clique em Criar registro.

    Para editar um registro, clique no código dele na página Registros. Em seguida, clique em Editar registro na parte superior da página.

  3. Em Stackdriver Logging, selecione um nível de registro.

  4. Clique em Criar (se estiver criando um novo registro) ou em Atualizar (se estiver editando um registro existente).

gcloud

Para criar um registro e definir o nível de registro, execute o comando gcloud iot registries create com a sinalização --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}

Para atualizar o nível de registro de um dispositivo, execute o comando gcloud iot registries update com a sinalização --log-level:

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

Como definir níveis de registro em um dispositivo

É possível ativar, alterar ou desativar registros de um dispositivo usando o Console do Google Cloud ou a gcloud. O nível de registro de um dispositivo substitui o nível de registro do registro.

Console

Para definir o nível de registro de um dispositivo novo ou existente:

  1. Acesse a página Registros no Console do Google Cloud.

    Acessar a página Registros

  2. Clique no ID do registro do dispositivo.

  3. No menu de registro à esquerda, clique em Dispositivos.

  4. Para criar um novo dispositivo, clique em Criar um dispositivo.

    Para editar um dispositivo, clique no código dele na página Dispositivos e, depois, em Editar dispositivo na parte superior da página.

  5. Em Stackdriver Logging, selecione um nível de registro.

  6. Clique em Criar (se estiver criando um novo dispositivo) ou em Atualizar (se estiver editando um dispositivo existente).

gcloud

Para criar um dispositivo e definir um nível de registro, execute o comando gcloud iot devices create com a sinalização --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}

Para atualizar o nível de registro de um dispositivo, execute o comando gcloud iot devices update com a sinalização --log-level:

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

Como ver registros

É possível ver os registros de atividade do dispositivo do seu projeto no Explorador de registros no Console do Google Cloud. Selecione device_activity no menu do nome do registro.

Veja mais detalhes em Como usar o Explorador de registros.

API

Para ler suas entradas de registro por meio da API Logging, consulte entries.list.

gcloud

Para ler suas entradas de registro usando o gcloud, consulte Como ler entradas de registro.

Exportando registros de dispositivos

É possível exportar os registros de auditoria da mesma forma que você exporta outros tipos de registro. Para ver detalhes sobre como exportar registros, consulte Exportar registros.

Veja a seguir os motivos para exportar registros de dispositivos:

  • Para manter registros de auditoria por mais tempo ou usar recursos de pesquisa mais eficientes, exporte cópias desses registros para o Cloud Storage, o BigQuery ou o Pub/Sub. Com o Pub/Sub, faça exportações para outros aplicativos e repositórios ou para terceiros.

  • Para gerenciar os registros de auditoria em toda a organização, é possível criar coletores de exportação agregados. Eles exportam registros de todos os projetos na organização.

Limites de geração de registros do dispositivo

As cotas e os limites de registro do dispositivo são aplicados no nível do projeto. Eles são medidos separadamente e não são contabilizados em outras cotas e limites do Cloud Logging. Se as cotas de registro do dispositivo se esgotarem, as cotas do Cloud Logging para outros serviços não serão afetadas. O inverso também é verdadeiro.

As cotas de registro de dispositivos são baseadas em dois fatores:

  • O número de entradas de dispositivo registradas por segundo. Os eventos incluem publicações, conexões, desconexões etc.
  • O tamanho total em bytes de entradas de dispositivos registradas por minuto.

Se uma das cotas do registro de dispositivo for excedida, os registros do dispositivo serão interrompidos temporariamente.

Para ver uma lista de cotas e limites de registros do dispositivo, consulte Cotas e limites.

Práticas recomendadas

Geração de registros de depuração do dispositivo

Conforme mostrado na lista de eventos de dispositivo registrados, definir o nível de registro DEBUG para um registro ou um dispositivo individual pode gerar grandes quantidades de informações de geração de registros. Como resultado, se você ativar a geração de registros de depuração para um registro com uma grande frota de dispositivos, os registros de registro poderão ser descartados devido à alta velocidade e quantidade de registros.

Por exemplo, suponha que você tenha um registro com 100.000 dispositivos e que o nível de registro de depuração esteja definido como registro. Se cada dispositivo publicar um evento de telemetria a cada segundo, apenas 1.000 de 100.000 eventos de telemetria serão registrados a cada segundo. Isso porque, conforme mostrado em Cotas e limites, o número máximo de entradas registradas é de 1.000 por segundo.

Para melhores resultados, ative a geração de registros de depuração por um curto período ou para um pequeno número de dispositivos.

Solução de problemas de erros ao gravar registros

Quando você ativa a API Google Cloud IoT Core pela primeira vez em um projeto, uma nova conta de serviço para o projeto recebe automaticamente um papel (cloudiot.serviceAgent) que permite gravar registros no Cloud Logging. Remover esse papel padrão da conta de serviço do projeto relevante posteriormente pode causar erros. Se não for possível gravar a atividade do dispositivo no Cloud Logging, conclua as seguintes etapas:

  1. Na página do IAM no Console do Google Cloud, verifique se o papel Agente de serviço do Cloud IoT Core aparece na lista Membros da conta de serviço do projeto em questão. Procure a conta de serviço do projeto que termina com @gcp-sa-cloudiot.iam.gserviceaccount.com.

  2. SeAgente de serviços do Cloud IoT Core não aparece no de participantes lista, usegcloud para adicionar acloudiot.serviceAgent para a conta de serviço do projeto relevante. Esse papel inclui permissão para gravar registros no Cloud Logging.

    Execute o comando a seguir para adicionar o papel cloudiot.serviceAgent ao seu projeto. Para encontrar o PROJECT_ID e o PROJECT_NUMBER, consulte Como identificar projetos.

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