Mesos

Ce check recueille des métriques pour les masters Mesos. Pour en savoir plus sur les métriques de slave Mesos, consultez la section 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= \
  -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. 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

  1. La collecte de logs est désactivée par défaut dans l’Agent Datadog. Vous devez l’activer dans datadog.yaml :

    logs_enabled: true
    
  2. Ajoutez ce bloc de configuration à votre fichier mesos_master.d/conf.yaml pour commencer à recueillir vos logs Mesos :

    logs:
      - type: file
        path: /var/log/mesos/*
        source: mesos
    

    Modifiez la valeur du paramètre path en fonction de votre environnement, ou utilisez le stdout Docker standard :

    logs:
      - type: docker
        source: mesos
    

    Consultez le fichier d’exemple mesos_master.d/conf.yaml pour découvrir toutes les options de configuration disponibles.

  3. Redémarrez l’Agent.

Pour activer les logs pour les environnements Kubernetes, consultez la section Collecte de logs avec Kubernetes.

Validation

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

Données collectées

Métriques

mesos.cluster.cpus_percent
(gauge)
Percentage of allocated CPUs
Shown as percent
mesos.cluster.cpus_total
(gauge)
Number of CPUs
mesos.cluster.cpus_used
(gauge)
Number of allocated CPUs
mesos.cluster.disk_percent
(gauge)
Percentage of allocated disk space
Shown as percent
mesos.cluster.disk_total
(gauge)
Disk space
Shown as mebibyte
mesos.cluster.disk_used
(gauge)
Allocated disk space
Shown as mebibyte
mesos.cluster.dropped_messages
(gauge)
Number of dropped messages
Shown as message
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.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.cluster.gpus_percent
(gauge)
Percentage of allocated GPUs
Shown as percent
mesos.cluster.gpus_total
(gauge)
Number of GPUs
mesos.cluster.gpus_used
(gauge)
Number of allocated GPUs
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.mem_percent
(gauge)
Percentage of allocated memory
Shown as percent
mesos.cluster.mem_total
(gauge)
Total memory
Shown as mebibyte
mesos.cluster.mem_used
(gauge)
Allocated memory
Shown as mebibyte
mesos.cluster.outstanding_offers
(gauge)
Number of outstanding resource offers
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.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.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.framework.cpu
(gauge)
Framework cpu
mesos.framework.disk
(gauge)
Framework disk
Shown as mebibyte
mesos.framework.mem
(gauge)
Framework mem
Shown as mebibyte
mesos.registrar.log.recovered
(gauge)
Registrar log recovered
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.role.cpu
(gauge)
Role cpu
mesos.role.disk
(gauge)
Role disk
Shown as mebibyte
mesos.role.mem
(gauge)
Role mem
Shown as mebibyte
mesos.stats.elected
(gauge)
Whether this is the elected master
mesos.stats.registered
(gauge)
Whether this slave is registered with a master
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.uptime_secs
(gauge)
Uptime
Shown as second

Événements

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

Checks de service

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

Dépannage

Besoin d’aide ? Contactez l’assistance Datadog.

Pour aller plus loin

Intégration Mesos Slave

Dashboard Slave Mesos

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.

Configuration

Installation

Consultez la documentation relative à l’installation de Datadog sur Mesos avec DC/OS pour installer l’Agent Datadog sur chaque nœud d’Agent Mesos avec l’interface Web DC/OS.

Procédure à suivre

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’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).

Collecte de logs

  1. La collecte de logs est désactivée par défaut dans l’Agent Datadog. Vous devez l’activer dans datadog.yaml :

    logs_enabled: true
    
  2. Ajoutez ce bloc de configuration à votre fichier mesos_slave.d/conf.yaml pour commencer à recueillir vos logs Mesos :

    logs:
      - type: file
        path: /var/log/mesos/*
        source: mesos
    

    Modifiez la valeur du paramètre path en fonction de votre environnement, ou utilisez le stdout Docker standard :

    logs:
      - type: docker
        source: mesos
    

    Consultez le fichier d’exemple mesos_slave.d/conf.yaml pour découvrir toutes les options de configuration disponibles.

  3. Redémarrez l’Agent.

Pour activer les logs pour les environnements Kubernetes, consultez la section Collecte de logs avec Kubernetes.

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.slave.cpus_percent
(gauge)
Percentage of allocated CPUs
Shown as percent
mesos.slave.cpus_total
(gauge)
Number of CPUs
mesos.slave.cpus_used
(gauge)
Number of allocated CPUs
mesos.slave.disk_percent
(gauge)
Percentage of allocated disk space
Shown as percent
mesos.slave.disk_total
(gauge)
Disk space
Shown as mebibyte
mesos.slave.disk_used
(gauge)
Allocated disk space
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.gpus_percent
(gauge)
Percentage of allocated GPUs
Shown as percent
mesos.slave.gpus_total
(gauge)
Number of GPUs
mesos.slave.gpus_used
(gauge)
Number of allocated GPUs
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.mem_percent
(gauge)
Percentage of allocated memory
Shown as percent
mesos.slave.mem_total
(gauge)
Total memory
Shown as mebibyte
mesos.slave.mem_used
(gauge)
Allocated memory
Shown as mebibyte
mesos.slave.recovery_errors
(gauge)
Number of errors encountered during slave recovery
Shown as error
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.slave.valid_framework_messages
(gauge)
Number of valid framework messages
Shown as message
mesos.slave.valid_status_updates
(gauge)
Number of valid status updates
mesos.state.task.cpu
(gauge)
Task cpu
mesos.state.task.disk
(gauge)
Task disk
Shown as mebibyte
mesos.state.task.mem
(gauge)
Task memory
Shown as mebibyte
mesos.stats.registered
(gauge)
Whether this slave is registered with a master
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.uptime_secs
(gauge)
Slave uptime

Événements

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

Checks de service

mesos_slave.can_connect
Renvoie CRITICAL si l’Agent n’est pas capable de se connecter au endpoint « Mesos slave metrics ». Si ce n’est pas le cas, renvoie OK.
Statuses: ok, critical

Dépannage

Besoin d’aide ? Contactez l’assistance Datadog.

Pour aller plus loin