Partilhar via


Acessar métricas internas no Azure IoT Edge

Aplica-se a:Marca de verificação do IoT Edge 1.5 IoT Edge 1.5

Importante

O IoT Edge 1.5 LTS é a versão suportada. O IoT Edge 1.4 LTS está em fim de vida útil a partir de 12 de novembro de 2024. Se tiver uma versão anterior, consulte Atualizar IoT Edge.

Os componentes de tempo de execução do IoT Edge, o hub do IoT Edge e o agente do IoT Edge produzem métricas internas no formato de exposição Prometheus. Aceda a estas métricas remotamente para monitorizar e compreender o estado de funcionamento de um dispositivo IoT Edge.

Use sua própria solução para acessar essas métricas ou use o módulo coletor de métricas, que coleta as métricas internas e as envia para o Azure Monitor ou o Hub IoT do Azure. Para obter mais informações, consulte Coletar e transportar métricas.

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

Acesse as métricas do host ao expor e mapear a porta de métricas no módulo createOptions. O exemplo a seguir 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 de host distintos e únicos ao mapear as endpoints de métricas do edgeHub e do edgeAgent.

Nota

A variável de ambiente httpSettings__enabled não deve ser configurada como false de modo a impedir que as métricas internas fiquem disponíveis para coleta.

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

Métricas disponíveis

As métricas incluem tags que identificam a natureza da métrica que está sendo coletada. Todas as métricas incluem as seguintes tags:

Etiqueta Descrição
iothub O hub com o qual o dispositivo se comunica
edge_device O ID do dispositivo atual
número_de_instância Um GUID que representa o tempo de execução atual. Na reinicialização, todas as métricas são redefinidas. Esse GUID facilita a reconciliação de reinicializações.

O formato de exposição Prometheus inclui quatro tipos de métricas principais: contador, medidor, histograma e resumo. Para obter mais informações sobre os diferentes tipos de métricas, consulte a documentação de tipos de métricas Prometheus.

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

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

Nome Dimensões Descrição
edgehub_gettwin_total source (fonte 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 mensagem)
id
Tipo: contador
Número total de mensagens recebidas de clientes
edgehub_messages_sent_total from (fonte da mensagem)
to (destino da mensagem)
from_route_output
to_route_input (entrada de destino da mensagem)
priority (prioridade da mensagem para o destino)
Tipo: contador
Número total de mensagens enviadas aos clientes ou a montante
to_route_input está vazio quando to está $upstream
edgehub_reported_properties_total target(meta 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 medição fosse relatada por 10 minutos. Para o tipo summary, os contadores _count e _sum correspondentes são emitidos.
edgehub_gettwin_duration_seconds source
id
Tipo: resumo
Tempo necessário para obter operações duplas
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 (destinatário)
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 (fonte da mensagem)
priority (prioridade da fila)
Tipo: calibre
Comprimento atual da fila do edgeHub para uma determinada prioridade
edgehub_messages_dropped_total reason (sem_rota, expiração_ttl)
from
from_route_output
Tipo: contador
Número total de mensagens removidas por motivo
edgehub_messages_unack_total reason (storage_failure)
from
from_route_output
Tipo: contador
Número total de mensagens não reconhecidas devido a 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
O hub de borda de tempo estava offline
edgehub_operation_retry_total id
operation (nome da operação)
Tipo: contador
Número total de vezes que as operações 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 gera as seguintes métricas:

Nome Dimensões Descrição
edgeAgent_total_time_running_correctly_seconds module_name Tipo: calibre
A quantidade de tempo que o módulo foi especificado na implantação e ficou no estado de execução
edgeAgent_total_time_expected_running_seconds module_name Tipo: calibre
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 edgeAgent pediu ao docker para iniciar o módulo
edgeAgent_module_stop_total module_name, module_version Tipo: contador
Número de vezes que edgeAgent pediu ao docker para parar o módulo
edgeAgent_command_latency_seconds command Tipo: calibre
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 ou sem sucesso. Esse número inclui o Agente solicitando um gêmeo e o Hub notificando de uma atualização gêmea
edgeAgent_unsuccessful_iothub_syncs_total Tipo: contador
Número de vezes que o edgeAgent não conseguiu sincronizar seu gêmeo com o iotHub.
edgeAgent_deployment_time_seconds Tipo: contador
O tempo necessário para concluir uma nova implantação após receber uma alteração.
edgeagent_direct_method_invocations_count method_name Tipo: contador
Número de vezes que um método direto edgeAgent interno é chamado, como Ping ou Restart.
edgeAgent_host_uptime_seconds Tipo: calibre
Há quanto tempo o anfitrião está ligado
edgeAgent_iotedged_uptime_seconds Tipo: calibre
Há quanto tempo o iotedged está em execução
edgeAgent_available_disk_space_bytes disk_name, disk_filesystem, disk_filetype Tipo: calibre
Quantidade de espaço restante no disco
edgeAgent_total_disk_space_bytes disk_name, disk_filesystem, disk_filetype Tipo: calibre
Tamanho do disco
edgeAgent_used_memory_bytes module_name Tipo: calibre
Quantidade de RAM utilizada por todos os processos
edgeAgent_total_memory_bytes module_name Tipo: calibre
RAM disponível
edgeAgent_used_cpu_percent module_name Tipo: histograma
Porcentagem de CPU usada por todos os processos
edgeAgent_created_pids_total module_name Tipo: calibre
O número de processos ou threads que o contêiner criou
edgeAgent_total_network_in_bytes module_name Tipo: calibre
O número de bytes recebidos da rede
edgeAgent_total_network_out_bytes module_name Tipo: calibre
O número de bytes enviados para a rede
edgeAgent_total_disk_read_bytes module_name Tipo: calibre
O número de bytes lidos do disco
edgeAgent_total_disk_write_bytes module_name Tipo: calibre
O número de bytes gravados no disco
edgeAgent_metadata edge_agent_version, experimental_features, host_information Tipo: calibre
Metadados gerais sobre o dispositivo. O valor é sempre 0 e as informações são codificadas nas tags. Observe que experimental_features e host_information são objetos JSON. host_information {"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"}parece . Observação ServerVersion é a versão do Docker e Version é a versão do daemon de segurança do IoT Edge.

Próximos passos