Azure IoT Edge

Azure IoT Edge

Agent Check Check de l'Agent

Linux Mac OS Windows OS Supported

Présentation

Azure IoT Edge est un service entièrement géré qui permet de déployer des charges de travail Cloud pour les exécuter sur des appareils Internet of Things (IoT) Edge par le biais de conteneurs standard.

Utilisez l’intégration Datadog/Azure IoT Edge pour recueillir les métriques et les statuts de santé d’appareils IoT Edge.

Remarque : cette intégration nécessite la version 1.0.10 ou une version ultérieure du runtime IoT Edge.

Configuration

Suivez les instructions ci-dessous pour installer et configurer ce check lorsqu’un appareil IoT Edge est exécuté sur un host d’appareil.

Installation

Le check Azure IoT Edge est inclus avec le package de l'Agent Datadog.

Vous n’avez donc rien d’autre à installer sur votre appareil.

Configuration

Configurez l’appareil IoT Edge de façon à ce que l’Agent soit exécuté en tant que module personnalisé. Suivez la documentation Microsoft sur le déploiement de modules Azure IoT Edge pour en savoir plus sur l’installation et l’utilisation des modules personnalisés pour Azure IoT Edge.

Suivez les étapes ci-dessous pour configurer l’appareil IoT Edge, les modules de runtime et l’Agent Datadog et ainsi commencer à recueillir des métriques IoT Edge.

  1. Configurez le module de runtime Edge Agent comme suit :

    • La version de l’image doit être 1.0.10 ou une version ultérieure.

    • Sous « Create Options », ajoutez les étiquettes Labels suivantes. Modifiez l’étiquette com.datadoghq.ad.instances en fonction de votre cas. Consultez l'exemple de fichier azure_iot_edge.d/conf.yaml pour découvrir toutes les options de configuration disponibles. Consultez la documentation Intégrations Autodiscovery avec Docker pour en savoir plus sur la configuration d’intégrations à l’aide d’étiquettes.

      "Labels": {
          "com.datadoghq.ad.check_names": "[\"azure_iot_edge\"]",
          "com.datadoghq.ad.init_configs": "[{}]",
          "com.datadoghq.ad.instances": "[{\"edge_hub_prometheus_url\": \"http://edgeHub:9600/metrics\", \"edge_agent_prometheus_url\": \"http://edgeAgent:9600/metrics\"}]"
      }
      
    • Sous « Environment Variables », activez les métriques expérimentales en ajoutant ces variables d’environnement (notez les doubles underscores) :

      • ExperimentalFeatures__Enabled: true
      • ExperimentalFeatures__EnableMetrics: true
  2. Configurez le module de runtime Edge Hub comme suit :

    • La version de l’image doit être 1.0.10 ou une version ultérieure.
    • Sous « Environment Variables », activez les métriques expérimentales en ajoutant ces variables d’environnement (notez les doubles underscores) :
      • ExperimentalFeatures__Enabled: true
      • ExperimentalFeatures__EnableMetrics: true
  3. Installez et configurez l’Agent Datadog en tant que module personnalisé :

    • Définissez le nom du module. Par exemple : datadog-agent.

    • Définissez l’URI de l’image de l’Agent. Par exemple : gcr.io/datadoghq/agent:7.

    • Sous « Environment Variables », configurez votre DD_API_KEY. Vous pouvez également définir d’autres paramètres de configuration ici (voir Variables d’environnement de l’Agent).

    • Sous « Container Create Options », ajoutez la configuration suivante en fonction du système d’exploitation de votre appareil. Remarque : NetworkId doit correspondre au nom de réseau défini dans le fichier config.yaml de l’appareil.

      • Linux :
        {
            "HostConfig": {
                "NetworkMode": "default",
                "Env": ["NetworkId=azure-iot-edge"],
                "Binds": ["/var/run/docker.sock:/var/run/docker.sock"]
            }
        }
        
      • Windows :
        {
            "HostConfig": {
                "NetworkMode": "default",
                "Env": ["NetworkId=nat"],
                "Binds": ["//./pipe/iotedge_moby_engine:/./pipe/docker_engine"]
            }
        }
        
    • Enregistrez le module personnalisé de l’Agent Datadog.

  4. Enregistrez et déployez les modifications apportées à la configuration de votre appareil.

Collecte de logs

  1. La collecte de logs est désactivée par défaut dans l’Agent Datadog. Vous devez l’activer en configurant le module personnalisé de l’Agent Datadog :

    • Sous « Environment Variables », définissez la variable d’environnement DD_LOGS_ENABLED :

      DD_LOGS_ENABLED: true
      
  2. Configurez les modules Edge Agent et Edge Hub. Sous « Create Options », ajoutez l’étiquette suivante :

    "Labels": {
        "com.datadoghq.ad.logs": "[{\"source\": \"azure.iot_edge\", \"service\": \"<SERVICE>\"}]",
        "...": "..."
    }
    

    Modifiez le service en fonction de votre environnement.

    Répétez cette opération pour tous les autres modules personnalisés dont vous souhaitez recueillir les logs.

  3. Enregistrez et déployez les modifications apportées à la configuration de votre appareil.

Validation

Une fois l’Agent déployé sur l’appareil, lancez la sous-commande status de l’Agent et cherchez azure_iot_edge dans la section Checks.

Données collectées

Métriques

azure.iot_edge.edge_hub.gettwin_total
(count)
Total number of GetTwin calls.
azure.iot_edge.edge_hub.messages_received_total
(count)
Total number of messages received from clients.
azure.iot_edge.edge_hub.messages_sent_total
(count)
Total number of messages sent to clients of upstream.
azure.iot_edge.edge_hub.reported_properties_total
(count)
Total reported property updates calls.
azure.iot_edge.edge_hub.message_size_bytes.count
(gauge)
Count of message size from clients.
azure.iot_edge.edge_hub.message_size_bytes.sum
(gauge)
Sum of message size from clients.
Shown as byte
azure.iot_edge.edge_hub.message_size_bytes.quantile
(gauge)
Quantile of message size from clients.
Shown as byte
azure.iot_edge.edge_hub.gettwin_duration_seconds.count
(gauge)
Count of time taken for get twin operations.
azure.iot_edge.edge_hub.gettwin_duration_seconds.sum
(gauge)
Sum of time taken for get twin operations.
Shown as second
azure.iot_edge.edge_hub.gettwin_duration_seconds.quantile
(gauge)
Quantile of time taken for get twin operations.
Shown as second
azure.iot_edge.edge_hub.message_send_duration_seconds.count
(gauge)
Count of time taken to send a message.
azure.iot_edge.edge_hub.message_send_duration_seconds.sum
(gauge)
Sum of time taken to send a message.
Shown as second
azure.iot_edge.edge_hub.message_send_duration_seconds.quantile
(gauge)
Quantile of time taken to send a message.
Shown as second
azure.iot_edge.edge_hub.message_process_duration_seconds.count
(gauge)
Count of time taken to process a message from the queue.
azure.iot_edge.edge_hub.message_process_duration_seconds.sum
(gauge)
Sum of time taken to process a message from the queue.
Shown as second
azure.iot_edge.edge_hub.message_process_duration_seconds.quantile
(gauge)
Quantile of time taken to process a message from the queue.
Shown as second
azure.iot_edge.edge_hub.reported_properties_update_duration_seconds.count
(gauge)
Count of time taken to update reported properties.
azure.iot_edge.edge_hub.reported_properties_update_duration_seconds.sum
(gauge)
Sum of time taken to update reported properties.
Shown as second
azure.iot_edge.edge_hub.reported_properties_update_duration_seconds.quantile
(gauge)
Quantile of time taken to update reported properties.
Shown as second
azure.iot_edge.edge_hub.direct_method_duration_seconds.count
(gauge)
Count of time taken to resolve a direct message.
azure.iot_edge.edge_hub.direct_method_duration_seconds.sum
(gauge)
Sum of time taken to resolve a direct message.
Shown as second
azure.iot_edge.edge_hub.direct_method_duration_seconds.quantile
(gauge)
Quantile of time taken to resolve a direct message.
Shown as second
azure.iot_edge.edge_hub.direct_methods_total
(count)
Total number of direct messages sent.
azure.iot_edge.edge_hub.queue_length
(gauge)
Current length of Edge Hub's queue for a given `priority`.
azure.iot_edge.edge_hub.messages_dropped_total
(count)
Total number of messages removed because of `reason`.
azure.iot_edge.edge_hub.messages_unack_total
(count)
Total number of messages unack because of storage failure.
azure.iot_edge.edge_hub.offline_count_total
(count)
Total number of times Edge Hub went offline.
azure.iot_edge.edge_hub.offline_duration_seconds.count
(gauge)
Count of time Edge Hub was offline.
azure.iot_edge.edge_hub.offline_duration_seconds.sum
(gauge)
Sum of time Edge Hub was offline.
Shown as second
azure.iot_edge.edge_hub.offline_duration_seconds.quantile
(gauge)
Quantile of time Edge Hub was offline.
Shown as second
azure.iot_edge.edge_hub.operation_retry_total
(count)
Total number of times Edge operations were retried.
azure.iot_edge.edge_hub.client_connect_failed_total
(count)
Total number of times clients failed to connect to Edge Hub.
azure.iot_edge.edge_agent.total_time_running_correctly_seconds
(gauge)
The amount of time the module `module_name` was specified in the deployment and was in the running state.
azure.iot_edge.edge_agent.total_time_expected_running_seconds
(gauge)
The amount of time the module `module_name` was specified in the deployment.
azure.iot_edge.edge_agent.module_start_total
(count)
Number of times the Edge Agent asked Docker to start the module `module_name`.
azure.iot_edge.edge_agent.module_stop_total
(count)
Number of times the Edge Agent asked Docker to stop the module `module_name`.
azure.iot_edge.edge_agent.command_latency_seconds.count
(gauge)
Count of how long it took for Docker to execute the given `command`. Possible commands are: create, update, remove, start, stop, restart.
azure.iot_edge.edge_agent.command_latency_seconds.sum
(gauge)
Sum of how long it took for Docker to execute the given `command`. Possible commands are: create, update, remove, start, stop, restart.
Shown as second
azure.iot_edge.edge_agent.command_latency_seconds.quantile
(gauge)
Quantile of how long it took for Docker to execute the given `command`. Possible commands are: create, update, remove, start, stop, restart.
Shown as second
azure.iot_edge.edge_agent.iothub_syncs_total
(count)
Total number of times the Edge Agent attempted to sync its twin with IoT Hub, both successful and unsuccessful. Includes both Edge Agent requesting a twin, and IoT Hub notifying of a twin update.
azure.iot_edge.edge_agent.unsuccessful_iothub_syncs_total
(count)
Total number of times the Edge Agent failed to sync its twin with IoT Hub.
azure.iot_edge.edge_agent.deployment_time_seconds.count
(gauge)
Count of amount of time it took to complete a new deployment after receiving a change.
azure.iot_edge.edge_agent.deployment_time_seconds.sum
(gauge)
Sum of amount of time it took to complete a new deployment after receiving a change.
Shown as second
azure.iot_edge.edge_agent.deployment_time_seconds.quantile
(gauge)
Quantile of amount of time it took to complete a new deployment after receiving a change.
Shown as second
azure.iot_edge.edge_agent.direct_method_invocations_count
(count)
Total number of times a built-in Edge Agent direct method is called, such as Ping or Restart.
azure.iot_edge.edge_agent.host_uptime_seconds
(gauge)
How long the host has been running.
Shown as second
azure.iot_edge.edge_agent.iotedged_uptime_seconds
(gauge)
How long `iotedged` has been running.
Shown as second
azure.iot_edge.edge_agent.available_disk_space_bytes
(gauge)
Amount of space left on the disk `disk_name.
Shown as byte
azure.iot_edge.edge_agent.total_disk_space_bytes
(gauge)
Size of the disk `disk_name.
Shown as byte
azure.iot_edge.edge_agent.used_memory_bytes
(gauge)
Amount of RAM used by all processes in module `module_name`.
Shown as byte
azure.iot_edge.edge_agent.total_memory_bytes
(gauge)
Total amount of RAM available to module `module_name`.
Shown as byte
azure.iot_edge.edge_agent.used_cpu_percent.count
(gauge)
Count of percent of CPU used by all processes in module `module_name`.
azure.iot_edge.edge_agent.used_cpu_percent.sum
(gauge)
Sum of percent of CPU used by all processes in module `module_name`.
Shown as percent
azure.iot_edge.edge_agent.used_cpu_percent.quantile
(gauge)
Quantile of percent of CPU used by all processes in module `module_name`.
Shown as percent
azure.iot_edge.edge_agent.created_pids_total
(gauge)
Total number of processes the module `module_name` has created.
azure.iot_edge.edge_agent.total_network_in_bytes
(count)
Total amount of bytes received from the network by module `module_name`.
Shown as byte
azure.iot_edge.edge_agent.total_network_out_bytes
(count)
Total amount of bytes sent to the network by module `module_name`.
Shown as byte
azure.iot_edge.edge_agent.total_disk_read_bytes
(count)
Total amount of bytes read from the disk by module `module_name`.
Shown as byte
azure.iot_edge.edge_agent.total_disk_write_bytes
(count)
Total amount of bytes written to the disk by module `module_name`.
Shown as byte

Checks de service

azure.iot_edge.edge_agent.prometheus.health :
Renvoie CRITICAL si l’Agent ne parvient pas à se connecter à l’endpoint Prometheus des métriques de l’Edge Agent. Dans le cas contraire, renvoie OK.

azure.iot_edge.edge_hub.prometheus.health :
Renvoie CRITICAL si l’Agent ne parvient pas à se connecter à l’endpoint de Prometheus des métriques de l’Edge Hub. Dans le cas contraire, renvoie OK.

Événements

Azure IoT Edge n’inclut aucun événement.

Dépannage

Besoin d’aide ? Contactez l’assistance Datadog.

Pour aller plus loin