Acessar métricas internas no Azure IoT Edge

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

Importante

IoT Edge 1.5 LTS e IoT Edge 1.4 LTS são versões suportadas. O IoT Edge 1.4 LTS termina a vida útil em 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.

Você pode usar sua própria solução para acessar essas métricas. Ou, você pode usar o módulo coletor de métricas, que lida com a coleta das métricas internas e enviá-las 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 automaticamente 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 porta mapeada para o host por padrão.

Acesse as métricas do host expondo e mapeando a porta de métricas do módulo createOptions. O exemplo abaixo 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 diferentes e exclusivos se estiver mapeando os pontos de extremidade de métricas do edgeHub e do edgeAgent.

Nota

A variável httpSettings__enabled de ambiente não deve ser definida para false que as métricas internas estejam 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 contêm tags para ajudar a identificar a natureza da métrica que está sendo coletada. Todas as métricas contêm as seguintes tags:

Etiqueta Description
iothub O hub com o qual o dispositivo está falando
edge_device O ID do dispositivo atual
instance_number 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.

No formato de exposição Prometheus, existem 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 fornecidos para o histograma embutido e métricas 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 Description
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 comunicados como NaN se não fossem comunicadas novas medições durante um determinado período de tempo (atualmente 10 minutos), para summary o tipo, são emitidos contadores e _count_sum correspondentes.
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 (no_route, ttl_expiry)
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 produz as seguintes métricas:

Nome Dimensões Description
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, as informações são codificadas nas tags. Note 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