Nouvelles annonces sur les technologies sans serveur et réseau ainsi que sur le RUM (Real-User Monitoring) dévoilées à la conférence Dash ! Nouvelles annonces dévoilées à la conférence Dash !

Mesos

Ce check recueille des métriques pour les masters Mesos. Si vous cherchez à recueillir des métriques pour un slave Mesos, consultez la documentation relative à l’intégration Mesos Slave.

Dashboard Mesos Master

Présentation

Ce check recueille des métriques des masters Mesos pour :

  • les ressources du cluster ;
  • les slaves enregistrés, actifs, inactifs, connectés, déconnectés, etc. ;
  • le nombre de tâches échouées, terminées, en cours d’exécution, etc. ;
  • le nombre de frameworks actifs, inactifs, connectés ou déconnectés ;

et bien plus encore.

Implémentation

Installation

L’installation se fait de la même façon que vous utilisiez Mesos avec ou sans DC/OS. Exécutez le conteneur datadog-agent sur chacun de vos nœuds Mesos Master :

docker run -d --name datadog-agent \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  -v /proc/:/host/proc/:ro \
  -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
  -e DD_API_KEY=<VOTRE_CLÉ_API_DATADOG> \
  -e MESOS_MASTER=true \
  -e MARATHON_URL=http://leader.mesos:8080 \
  datadog/agent:latest

Spécifiez votre clé d’API Datadog et votre URL d’API Mesos Master dans la commande ci-dessus.

Configuration

Si l’URL de master transmise au lancement de datadog-agent est valide, l’Agent utilise déjà un fichier mesos_master.d/conf.yaml par défaut pour recueillir les métriques de vos masters : vous n’avez donc rien d’autre à configurer. Consultez le fichier d’exemple mesos_master.d/conf.yaml pour découvrir toutes les options de configuration disponibles.

Toutefois, vos métriques ne seront pas recueillies si l’API de votre master utilise un certificat auto-signé. Dans ce cas, spécifiez disable_ssl_validation: true dans mesos_master.d/conf.yaml.

Collecte de logs

L’Agent Datadog >6.0 recueille des logs à partir de vos conteneurs. Vous avez la possibilité de recueillir tous les logs de tous vos conteneurs ou de choisir les logs à recueillir en les filtrant par image de conteneur, étiquette de conteneur ou nom.

Ajoutez ces variables supplémentaires à la commande de lancement de l’Agent Datadog pour activer la collecte de logs :

  • -e DD_LOGS_ENABLED=true : l’ajout de cette variable avec la valeur true active la collecte de logs. L’Agent recherche alors les instructions relatives aux logs dans les fichiers de configuration ou les étiquettes de conteneur.
  • -e DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true : active la collecte de logs pour tous les conteneurs.
  • -v /opt/datadog-agent/run:/opt/datadog-agent/run:rw : monte le répertoire utilisé par l’Agent pour stocker les pointeurs de chaque log de conteneur, lui permettant ainsi de déterminer ce qui a été envoyé à Datadog ou non.

On obtient la commande suivante :

docker run -d --name datadog-agent \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  -v /proc/:/host/proc/:ro \
  -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
  -v /opt/datadog-agent/run:/opt/datadog-agent/run:rw \
  -e DD_API_KEY=<VOTRE_CLÉ_API_DATADOG> \
  -e MESOS_MASTER=true \
  -e MARATHON_URL=http://leader.mesos:8080 \
  -e DD_LOGS_ENABLED=true \
  -e DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true \
  datadog/agent:latest

Utilisez la fonction Autodiscovery pour faire en sorte que les logs remplacent les attributs service et source : vous pourrez ainsi bénéficier de la configuration automatique de l’intégration.

Validation

Dans Datadog, recherchez mesos.cluster depuis la page Metrics Explorer.

Données collectées

Métriques

mesos.framework.cpu
(gauge)
Framework cpu
mesos.framework.mem
(gauge)
Framework mem
Shown as mebibyte
mesos.framework.disk
(gauge)
Framework disk
Shown as mebibyte
mesos.role.cpu
(gauge)
Role cpu
mesos.role.mem
(gauge)
Role mem
Shown as mebibyte
mesos.role.disk
(gauge)
Role disk
Shown as mebibyte
mesos.cluster.tasks_error
(gauge)
Number of tasks that were invalid
Shown as task
mesos.cluster.tasks_failed
(count)
Number of failed tasks
Shown as task
mesos.cluster.tasks_finished
(count)
Number of finished tasks
Shown as task
mesos.cluster.tasks_killed
(count)
Number of killed tasks
Shown as task
mesos.cluster.tasks_lost
(count)
Number of lost tasks
Shown as task
mesos.cluster.tasks_running
(gauge)
Number of running tasks
Shown as task
mesos.cluster.tasks_staging
(gauge)
Number of staging tasks
Shown as task
mesos.cluster.tasks_starting
(gauge)
Number of starting tasks
Shown as task
mesos.cluster.slave_registrations
(gauge)
Number of slaves that were able to cleanly re-join the cluster and connect back to the master after the master is disconnected.
mesos.cluster.slave_removals
(gauge)
Number of slaves removed for various reasons, including maintenance
mesos.cluster.slave_reregistrations
(gauge)
Number of slave re-registrations
mesos.cluster.slave_shutdowns_canceled
(gauge)
Number of cancelled slave shutdowns
mesos.cluster.slave_shutdowns_scheduled
(gauge)
Number of slaves which have failed their health check and are scheduled to be removed
mesos.cluster.slaves_active
(gauge)
Number of active slaves
mesos.cluster.slaves_connected
(gauge)
Number of connected slaves
mesos.cluster.slaves_disconnected
(gauge)
Number of disconnected slaves
mesos.cluster.slaves_inactive
(gauge)
Number of inactive slaves
mesos.cluster.cpus_percent
(gauge)
Percentage of allocated CPUs
Shown as percent
mesos.cluster.cpus_used
(gauge)
Number of allocated CPUs
mesos.cluster.cpus_total
(gauge)
Number of CPUs
mesos.cluster.gpus_percent
(gauge)
Percentage of allocated GPUs
Shown as percent
mesos.cluster.gpus_used
(gauge)
Number of allocated GPUs
mesos.cluster.gpus_total
(gauge)
Number of GPUs
mesos.cluster.disk_percent
(gauge)
Percentage of allocated disk space
Shown as percent
mesos.cluster.disk_used
(gauge)
Allocated disk space
Shown as mebibyte
mesos.cluster.disk_total
(gauge)
Disk space
Shown as mebibyte
mesos.cluster.mem_percent
(gauge)
Percentage of allocated memory
Shown as percent
mesos.cluster.mem_used
(gauge)
Allocated memory
Shown as mebibyte
mesos.cluster.mem_total
(gauge)
Total memory
Shown as mebibyte
mesos.registrar.queued_operations
(gauge)
Number of queued operations
mesos.registrar.registry_size_bytes
(gauge)
Registry size
Shown as byte
mesos.registrar.state_fetch_ms
(gauge)
Registry read latency
Shown as millisecond
mesos.registrar.state_store_ms
(gauge)
Registry write latency
Shown as millisecond
mesos.registrar.state_store_ms.count
(gauge)
Registry write count
mesos.registrar.state_store_ms.max
(gauge)
Maximum registry write latency
Shown as millisecond
mesos.registrar.state_store_ms.min
(gauge)
Minimum registry write latency
Shown as millisecond
mesos.registrar.state_store_ms.p50
(gauge)
Median registry write latency
Shown as millisecond
mesos.registrar.state_store_ms.p90
(gauge)
90th percentile registry write latency
Shown as millisecond
mesos.registrar.state_store_ms.p95
(gauge)
95th percentile registry write latency
Shown as millisecond
mesos.registrar.state_store_ms.p99
(gauge)
99th percentile registry write latency
Shown as millisecond
mesos.registrar.state_store_ms.p999
(gauge)
99.9th percentile registry write latency
Shown as millisecond
mesos.registrar.state_store_ms.p9999
(gauge)
99.99th percentile registry write latency
Shown as millisecond
mesos.registrar.log.recovered
(gauge)
Registrar log recovered
mesos.cluster.frameworks_active
(gauge)
Number of active frameworks
mesos.cluster.frameworks_connected
(gauge)
Number of connected frameworks
mesos.cluster.frameworks_disconnected
(gauge)
Number of disconnected frameworks
mesos.cluster.frameworks_inactive
(gauge)
Number of inactive frameworks
mesos.stats.system.cpus_total
(gauge)
Number of CPUs available
mesos.stats.system.load_15min
(gauge)
Load average for the past 15 minutes
mesos.stats.system.load_1min
(gauge)
Load average for the past minutes
mesos.stats.system.load_5min
(gauge)
Load average for the past 5 minutes
mesos.stats.system.mem_free_bytes
(gauge)
Free memory
Shown as byte
mesos.stats.system.mem_total_bytes
(gauge)
Total memory
Shown as byte
mesos.stats.elected
(gauge)
Whether this is the elected master
mesos.stats.uptime_secs
(gauge)
Uptime
Shown as second
mesos.cluster.dropped_messages
(gauge)
Number of dropped messages
Shown as message
mesos.cluster.outstanding_offers
(gauge)
Number of outstanding resource offers
mesos.cluster.event_queue_dispatches
(gauge)
Number of dispatches in the event queue
mesos.cluster.event_queue_http_requests
(gauge)
Number of HTTP requests in the event queue
Shown as request
mesos.cluster.event_queue_messages
(gauge)
Number of messages in the event queue
Shown as message
mesos.cluster.invalid_framework_to_executor_messages
(gauge)
Number of invalid framework messages
Shown as message
mesos.cluster.invalid_status_update_acknowledgements
(gauge)
Number of invalid status update acknowledgements
mesos.cluster.invalid_status_updates
(gauge)
Number of invalid status updates
mesos.cluster.valid_framework_to_executor_messages
(gauge)
Number of valid framework messages
Shown as message
mesos.cluster.valid_status_update_acknowledgements
(gauge)
Number of valid status update acknowledgements
mesos.cluster.valid_status_updates
(gauge)
Number of valid status updates
mesos.stats.registered
(gauge)
Whether this slave is registered with a master

Événements

Le check Mesos-master n’inclut aucun événement.

Checks de service

mesos_master.can_connect :
Renvoie CRITICAL si l’Agent ne parvient pas à se connecter à l’API Master Mesos pour recueillir des métriques. Si ce n’est pas le cas, renvoie OK.

Dépannage

Besoin d’aide ? Contactez l’assistance Datadog.

Pour aller plus loin

Intégration Mesos_slave

Dashboard Mesos Slave

Présentation

Ce check de l’Agent recueille des métriques des slaves Mesos pour :

  • la charge système ;
  • le nombre de tâches échouées, terminées, en cours d’exécution, etc. ;
  • le nombre d’exécuteurs en cours d’exécution, terminés, etc. ;

et bien plus encore.

Ce check crée également un check de service pour chaque tâche d’exécuteur.

Implémentation

Installation

Suivez les instructions décrites dans notre article de blog pour installer l’Agent Datadog sur chaque nœud slave Mesos via l’interface Web DC/OS.

Configuration

DC/OS

  1. Depuis l’interface Web DC/OS, cliquez sur l’onglet Universe. Recherchez le paquet datadog et cliquez sur le bouton d’installation.
  2. Cliquez sur le bouton Advanced Installation.
  3. Saisissez votre clé d’API Datadog dans le premier champ.
  4. Dans le champ Instances, indiquez le nombre de nœuds slave dans votre cluster (pour déterminer ce nombre, cliquez sur l’onglet Nodes sur le côté gauche de l’interface Web DC/OS).
  5. Cliquez sur Review and Install, puis sur Install.

Marathon

Si vous n’utilisez pas DC/OS, définissez l’application Agent Datadog via l’interface Web Marathon ou en transmettant le JSON ci-dessous à l’URL de l’API. Vous devrez remplacer <VOTRE_CLÉ_API_DATADOG> par votre clé d’API, et le nombre d’instances par le nombre de nœuds slave sur votre cluster. De plus, vous devrez peut-être mettre à jour l’image Docker pour la faire correspondre à un tag plus récent. Pour obtenir la dernière version de l’image, accédez au Docker Hub.

{
  "id": "/datadog-agent",
  "cmd": null,
  "cpus": 0.05,
  "mem": 256,
  "disk": 0,
  "instances": 1,
  "constraints": [["hostname", "UNIQUE"], ["hostname", "GROUP_BY"]],
  "acceptedResourceRoles": ["slave_public", "*"],
  "container": {
    "type": "DOCKER",
    "volumes": [
      {
        "containerPath": "/var/run/docker.sock",
        "hostPath": "/var/run/docker.sock",
        "mode": "RO"
      },
      {"containerPath": "/host/proc", "hostPath": "/proc", "mode": "RO"},
      {
        "containerPath": "/host/sys/fs/cgroup",
        "hostPath": "/sys/fs/cgroup",
        "mode": "RO"
      }
    ],
    "docker": {
      "image": "datadog/agent:latest",
      "network": "BRIDGE",
      "portMappings": [
        {
          "containerPort": 8125,
          "hostPort": 8125,
          "servicePort": 10000,
          "protocol": "udp",
          "labels": {}
        }
      ],
      "privileged": false,
      "parameters": [
        {"key": "name", "value": "datadog-agent"},
        {"key": "env", "value": "DD_API_KEY=<VOTRE_CLÉ_API_DATADOG>"},
        {"key": "env", "value": "MESOS_SLAVE=true"}
      ],
      "forcePullImage": false
    }
  },
  "healthChecks": [
    {
      "protocol": "COMMAND",
      "command": {"value": "/probe.sh"},
      "gracePeriodSeconds": 300,
      "intervalSeconds": 60,
      "timeoutSeconds": 20,
      "maxConsecutiveFailures": 3
    }
  ],
  "portDefinitions": [
    {"port": 10000, "protocol": "tcp", "name": "default", "labels": {}},
    {"port": 10001, "protocol": "tcp", "labels": {}}
  ]
}

Vous n’avez rien d’autre à faire après avoir installé l’Agent, sauf si vous souhaitez modifier la configuration du fichier mesos_slave.d/conf.yaml (pour ajouter le paramètre disable_ssl_validation: true, par exemple).

Validation

DC/OS

L’Agent Datadog devrait maintenant s’afficher dans l’onglet Services de l’interface Web DC/OS. Dans Datadog, recherchez mesos.slave depuis la page Metrics Explorer.

Marathon

Si vous n’utilisez pas DC/OS, vous trouverez datadog-agent dans la liste des applications en cours d’exécution avec un statut sain. Dans Datadog, recherchez mesos.slave depuis la page Metrics Explorer.

Données collectées

Métriques

mesos.stats.system.cpus_total
(gauge)
Number of CPUs available
mesos.stats.system.load_15min
(gauge)
Load average for the past 15 minutes
mesos.stats.system.load_1min
(gauge)
Load average for the past minutes
mesos.stats.system.load_5min
(gauge)
Load average for the past 5 minutes
mesos.stats.system.mem_free_bytes
(gauge)
Free memory
Shown as byte
mesos.stats.system.mem_total_bytes
(gauge)
Total memory
Shown as byte
mesos.state.task.cpu
(gauge)
Task cpu
mesos.state.task.mem
(gauge)
Task memory
Shown as mebibyte
mesos.state.task.disk
(gauge)
Task disk
Shown as mebibyte
mesos.slave.tasks_failed
(count)
Number of failed tasks
Shown as task
mesos.slave.tasks_finished
(count)
Number of finished tasks
Shown as task
mesos.slave.tasks_killed
(count)
Number of killed tasks
Shown as task
mesos.slave.tasks_lost
(count)
Number of lost tasks
Shown as task
mesos.slave.tasks_running
(gauge)
Number of running tasks
Shown as task
mesos.slave.tasks_staging
(gauge)
Number of staging tasks
Shown as task
mesos.slave.tasks_starting
(gauge)
Number of starting tasks
Shown as task
mesos.stats.registered
(gauge)
Whether this slave is registered with a master
mesos.stats.uptime_secs
(gauge)
Slave uptime
mesos.slave.cpus_percent
(gauge)
Percentage of allocated CPUs
Shown as percent
mesos.slave.cpus_used
(gauge)
Number of allocated CPUs
mesos.slave.cpus_total
(gauge)
Number of CPUs
mesos.slave.gpus_percent
(gauge)
Percentage of allocated GPUs
Shown as percent
mesos.slave.gpus_used
(gauge)
Number of allocated GPUs
mesos.slave.gpus_total
(gauge)
Number of GPUs
mesos.slave.disk_percent
(gauge)
Percentage of allocated disk space
Shown as percent
mesos.slave.disk_used
(gauge)
Allocated disk space
Shown as mebibyte
mesos.slave.disk_total
(gauge)
Disk space
Shown as mebibyte
mesos.slave.mem_percent
(gauge)
Percentage of allocated memory
Shown as percent
mesos.slave.mem_used
(gauge)
Allocated memory
Shown as mebibyte
mesos.slave.mem_total
(gauge)
Total memory
Shown as mebibyte
mesos.slave.executors_registering
(gauge)
Number of executors registering
mesos.slave.executors_running
(gauge)
Number of executors running
mesos.slave.executors_terminated
(gauge)
Number of terminated executors
mesos.slave.executors_terminating
(gauge)
Number of terminating executors
mesos.slave.frameworks_active
(gauge)
Number of active frameworks
mesos.slave.invalid_framework_messages
(gauge)
Number of invalid framework messages
Shown as message
mesos.slave.invalid_status_updates
(gauge)
Number of invalid status updates
mesos.slave.recovery_errors
(gauge)
Number of errors encountered during slave recovery
Shown as error
mesos.slave.valid_framework_messages
(gauge)
Number of valid framework messages
Shown as message
mesos.slave.valid_status_updates
(gauge)
Number of valid status updates

Événements

Le check Mesos-slave n’inclut aucun événement.

Check de service

mesos_slave.can_connect :

Renvoie CRITICAL si l’Agent n’est pas capable de se connecter à l’endpoint des métriques de slave Mesos. Si ce n’est pas le cas, renvoie OK.

<nom_tâche_exécuteur>.ok :

Le check mesos_slave crée un check de service pour chaque tâche d’exécuteur, en lui attribuant l’un des statuts suivants :

Statut de la tâcheStatut du check de service généré
TASK_STARTINGAgentCheck.OK
TASK_RUNNINGAgentCheck.OK
TASK_FINISHEDAgentCheck.OK
TASK_FAILEDAgentCheck.CRITICAL
TASK_KILLEDAgentCheck.WARNING
TASK_LOSTAgentCheck.CRITICAL
TASK_STAGINGAgentCheck.OK
TASK_ERRORAgentCheck.CRITICAL

Dépannage

Besoin d’aide ? Contactez l’assistance Datadog.

Pour aller plus loin