Azure IoT Edge

Supported OS Linux Mac OS Windows

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_agent.available_disk_space_bytes
(gauge)
Amount of space left on the disk `disk_name.
Shown as byte
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.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.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.created_pids_total
(gauge)
Total number of processes the module module_name has created.
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.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.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.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.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.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.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_space_bytes
(gauge)
Size of the disk `disk_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
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.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_time_expected_running_seconds
(gauge)
The amount of time the module module_name was specified in the deployment.
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.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.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.quantile
(gauge)
Quantile of percent of CPU used by all processes in module module_name.
Shown as percent
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_memory_bytes
(gauge)
Amount of RAM used by all processes in module module_name.
Shown as byte
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_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.quantile
(gauge)
Quantile of time taken to resolve a direct message.
Shown as second
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_methods_total
(count)
Total number of direct messages sent.
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.quantile
(gauge)
Quantile of time taken for get twin operations.
Shown as second
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_total
(count)
Total number of GetTwin calls.
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.quantile
(gauge)
Quantile of time taken to process a message from the queue.
Shown as second
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_send_duration_seconds.count
(gauge)
Count of time taken to send a message.
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_send_duration_seconds.sum
(gauge)
Sum of time taken to send a message.
Shown as second
azure.iot_edge.edge_hub.message_size_bytes.count
(gauge)
Count of message size from clients.
azure.iot_edge.edge_hub.message_size_bytes.quantile
(gauge)
Quantile of message size from clients.
Shown as byte
azure.iot_edge.edge_hub.message_size_bytes.sum
(gauge)
Sum of message size from clients.
Shown as byte
azure.iot_edge.edge_hub.messages_dropped_total
(count)
Total number of messages removed because of reason.
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.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.quantile
(gauge)
Quantile of time Edge Hub was offline.
Shown as second
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.operation_retry_total
(count)
Total number of times Edge operations were retried.
azure.iot_edge.edge_hub.queue_length
(gauge)
Current length of Edge Hub's queue for a given priority.
azure.iot_edge.edge_hub.reported_properties_total
(count)
Total reported property updates calls.
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.quantile
(gauge)
Quantile of time taken to update reported properties.
Shown as second
azure.iot_edge.edge_hub.reported_properties_update_duration_seconds.sum
(gauge)
Sum of time taken to update reported properties.
Shown as second

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

PREVIEWING: may/unit-testing