Acessar métricas internas no Azure IoT Edge

Aplica-se a:marca de seleção do IoT Edge 1.4 IoT Edge 1.4

Importante

A versão com suporte é a IoT Edge 1.4. Se você estiver em uma versão anterior, confira Atualizar o IoT Edge.

Os componentes de runtime do IoT Edge, o hub do IoT Edge e o agente do IoT Edge produzem métricas internas no formato de exposição do Prometheus. Acesse essas métricas remotamente para monitorar e entender a integridade de um dispositivo do IoT Edge.

Você pode usar sua própria solução para acessar essas métricas. Ou você pode usar o módulo do coletor de métricas, que lida com a coleta de métricas internas e o envio delas ao Azure Monitor ou ao Hub IoT do Azure. Para obter mais informações, confira Coletar e transportar métricas.

As métricas são automaticamente expostas por padrão na porta 9600 dos módulos edgeHub e edgeAgent (http://edgeHub:9600/metrics e http://edgeAgent:9600/metrics). Elas não são portas mapeadas para o host por padrão.

Acesse as métricas do host expondo e mapeando a porta das métricas do createOptions do módulo. O seguinte exemplo mapeia a porta de métricas padrão para a porta 9601 no host:

{
  "ExposedPorts": {
    "9600/tcp": {}
  },
  "HostConfig": {
    "PortBindings": {
      "9600/tcp": [
        {
          "HostPort": "9601"
        }
      ]
    }
  }
}

Escolha números de porta do host diferentes e exclusivos se você estiver mapeando ambos os pontos de extremidade de métricas do edgeHub e do edgeAgent.

Observação

A variável de ambiente httpSettings__enabled não deve ser definida como false para que as métricas internas estejam disponíveis para coleta.

As variáveis de ambiente que podem ser usadas para desabilitar as métricas são listadas no documento do repositório azure/iotedge.

Métricas disponíveis

As métricas contêm marcas para ajudar a identificar a natureza da métrica que está sendo coletada. Todas as métricas contêm as seguintes marcas:

Marca Descrição
iothub O Hub com o qual o dispositivo está se comunicando
edge_device A ID do dispositivo atual
instance_number Um GUID representando o runtime atual. Na reinicialização, todas as métricas são redefinidas. Esse GUID torna mais fácil reconciliar as reinicializações.

No formato de exposição do Prometheus, há quatro tipos principais de métrica: contador, medidor, histograma e resumo. Para obter mais informações sobre os diferentes tipos de métrica, confira a documentação dos tipos de métrica do Prometheus.

Os quantis fornecidos para as métricas internas de histograma e de resumo são 0,1, 0,5, 0,9 e 0,99.

O módulo edgeHub produz as seguintes métricas:

Nome Dimensões Descrição
edgehub_gettwin_total source (origem da operação)
id (ID do módulo)
Tipo: contador
Número total de chamadas GetTwin
edgehub_messages_received_total route_output (saída que enviou a mensagem)
id
Tipo: contador
Número total de mensagens recebidas dos clientes
edgehub_messages_sent_total from (origem da mensagem)
to (destino da mensagem)
from_route_output
to_route_input (entrada do destino da mensagem)
priority (prioridade da mensagem para o destino)
Tipo: contador
Número total de mensagens enviadas aos clientes ou upstream
to_route_input está vazio quando o to é $upstream
edgehub_reported_properties_total target(destino de atualização)
id
Tipo: contador
Total de chamadas de atualizações de propriedade relatadas
edgehub_message_size_bytes id
Tipo: resumo
Tamanho da mensagem dos clientes
Os valores podem ser relatados como NaN se nenhuma nova medida for relatada por um determinado período (atualmente, 10 minutos). Para o tipo summary, os contadores correspondentes _count e _sum são emitidos.
edgehub_gettwin_duration_seconds source
id
Tipo: resumo
Tempo gasto para operações get twin
edgehub_message_send_duration_seconds from
to
from_route_output
to_route_input
Tipo: resumo
Tempo necessário para enviar uma mensagem
edgehub_message_process_duration_seconds from
to
priority
Tipo: resumo
Tempo necessário para processar uma mensagem da fila
edgehub_reported_properties_update_duration_seconds target
id
Tipo: resumo
Tempo necessário para atualizar as propriedades relatadas
edgehub_direct_method_duration_seconds from (chamador)
to (receptor)
Tipo: resumo
Tempo necessário para resolver uma mensagem direta
edgehub_direct_methods_total from
to
Tipo: contador
Número total de mensagens diretas enviadas
edgehub_queue_length endpoint (origem da mensagem)
priority (prioridade da fila)
Tipo: medidor
Comprimento atual da fila do edgeHub para determinada prioridade
edgehub_messages_dropped_total reason (no_route, ttl_expiry)
from
from_route_output
Tipo: contador
Número total de mensagens removidas por causa do motivo
edgehub_messages_unack_total reason (storage_failure)
from
from_route_output
Tipo: contador
Número total de mensagens não confirmadas por falha de armazenamento
edgehub_offline_count_total id Tipo: contador
Número total de vezes que o edgeHub ficou offline
edgehub_offline_duration_seconds id Tipo: resumo
Tempo que o edgeHub ficou offline
edgehub_operation_retry_total id
operation (nome da operação)
Tipo: contador
Número total de vezes que as operações do edgeHub foram repetidas
edgehub_client_connect_failed_total id
reason (não autenticado)
Tipo: contador
Número total de vezes que os clientes não conseguiram se conectar ao edgeHub

O módulo edgeAgent produz as seguintes métricas:

Nome Dimensões Descrição
edgeAgent_total_time_running_correctly_seconds module_name Tipo: medidor
A quantidade de tempo que o módulo foi especificado na implantação e estava no estado em execução
edgeAgent_total_time_expected_running_seconds module_name Tipo: medidor
A quantidade de tempo que o módulo foi especificado na implantação
edgeAgent_module_start_total module_name, module_version Tipo: contador
Número de vezes que o edgeAgent pediu ao Docker para iniciar o módulo
edgeAgent_module_stop_total module_name, module_version Tipo: contador
Número de vezes que o edgeAgent pediu ao Docker para interromper o módulo
edgeAgent_command_latency_seconds command Tipo: medidor
Quanto tempo o Docker levou para executar o comando fornecido. Os comandos possíveis são: criar, atualizar, remover, iniciar, parar e reiniciar
edgeAgent_iothub_syncs_total Tipo: contador
Número de vezes que o edgeAgent tentou sincronizar seu gêmeo com o iotHub, com e sem sucesso. Esse número inclui tanto as solicitações de gêmeo do agente quanto as notificação do Hub sobre atualizações do gêmeo
edgeAgent_unsuccessful_iothub_syncs_total Tipo: contador
Número de vezes que o edgeAgent falhou ao sincronizar seu gêmeo com o iotHub.
edgeAgent_deployment_time_seconds Tipo: contador
A quantidade de tempo que leva para concluir uma nova implantação depois de receber uma alteração.
edgeagent_direct_method_invocations_count method_name Tipo: contador
Número de vezes que um método direto interno do edgeAgent, como Ping ou Reiniciar, é chamado.
edgeAgent_host_uptime_seconds Tipo: medidor
Há quanto tempo o host está ativado
edgeAgent_iotedged_uptime_seconds Tipo: medidor
Há quanto tempo o iotedged está em execução
edgeAgent_available_disk_space_bytes disk_name, disk_filesystem, disk_filetype Tipo: medidor
Quantidade de espaço restante no disco
edgeAgent_total_disk_space_bytes disk_name, disk_filesystem, disk_filetype Tipo: medidor
Tamanho do disco
edgeAgent_used_memory_bytes module_name Tipo: medidor
Quantidade de RAM usada por todos os processos
edgeAgent_total_memory_bytes module_name Tipo: medidor
RAM disponível
edgeAgent_used_cpu_percent module_name Tipo: histograma
Percentual de CPU usada por todos os processos
edgeAgent_created_pids_total module_name Tipo: medidor
Número de processos ou threads que o contêiner criou
edgeAgent_total_network_in_bytes module_name Tipo: medidor
Número de bytes recebidos da rede
edgeAgent_total_network_out_bytes module_name Tipo: medidor
Número de bytes enviados para a rede
edgeAgent_total_disk_read_bytes module_name Tipo: medidor
Número de bytes lidos do disco
edgeAgent_total_disk_write_bytes module_name Tipo: medidor
Número de bytes gravados no disco
edgeAgent_metadata edge_agent_version, experimental_features, host_information Tipo: medidor
Metadados gerais sobre o dispositivo. O valor é sempre 0, as informações estão codificadas nas marcas. Observe que experimental_features e host_information são objetos json. host_information se parece com {"OperatingSystemType": "linux", "Architecture": "x86_64", "Version": "1.2.7", "Provisioning": {"Type": "dps.tpm", "DynamicReprovisioning": false, "AlwaysReprovisionOnStartup": false}, "ServerVersion": "20.10.11+azure-3", "KernelVersion": "5.11.0-1027-azure", "OperatingSystem": "Ubuntu 20.04.4 LTS", "NumCpus": 2, "Virtualized": "yes"}. Observe que ServerVersion é a versão do Docker e Version é a versão do daemon de segurança do IoT Edge.

Próximas etapas