En este check se recopilan métricas para maestros de Mesos. Para las métricas de esclavos de Mesos, consulta la integración Mesos Slave.

Dashboard de maestros de Mesos

Información general

Este check recopila métricas de maestros de Mesos para:

  • Recursos del clúster
  • Esclavos registrados, activos, inactivos, conectados, desconectados, etc.
  • Número de tareas fallidas, finalizadas, preconfiguradas, en ejecución, etc.
  • Número de estructuras activas, inactivas, conectadas y desconectadas

Y muchos más.

Configuración

Instalación

La instalación es la misma en Mesos con y sin DC/OS. Ejecuta el contenedor del Datadog-Agent en cada uno de sus nodos maestros de Mesos:

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=<YOUR_DATADOG_API_KEY> \
  -e MESOS_MASTER=true \
  -e MARATHON_URL=http://leader.mesos:8080 \
  datadog/agent:latest

Sustituye tu clave de la API de Datadog y la URL de la API de Mesos Master en el comando anterior.

Configuración

Si pasaste la URL maestra correcta cuando iniciaste el Datadog Agent, el Agent ya está utilizando un mesos_master.d/conf.yaml en forma predeterminada para recopilar métricas de tus maestros. Consulta el ejemplo de mesos_master.d/conf.yaml para ver todas las opciones disponibles de configuración.

A no ser que la API de tus maestros utilice un certificado autofirmado. En ese caso, configura disable_ssl_validation: true en mesos_master.d/conf.yaml.

Recopilación de logs

  1. La recopilación de logs está desactivada en forma predeterminada en el Datadog Agent, actívala en tu archivo datadog.yaml:

    logs_enabled: true
    
  2. Añade este bloque configuración a tu archivo mesos_master.d/conf.yaml para empezar a recopilar tus logs de Mesos:

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

    Cambia el valor del parámetro path en función de tu entorno o utiliza el stdout predefinido de docker:

    logs:
      - type: docker
        source: mesos
    

    Consulta el ejemplo de mesos_master.d/conf.yaml para todas las opciones disponibles de configuración.

  3. Reinicia el Agent.

Para activar logs para entornos de Kubernetes, consulta Recopilación de logs de Kubernetes.

Validación

En Datadog, busca mesos.cluster en el explorador de métricas.

Datos recopilados

Métricas

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

Eventos

El check de Mesos-master no incluye ningún evento.

Checks de servicio

mesos_master.can_connect
Returns CRITICAL if the Agent cannot connect to the Mesos Master API to collect metrics, UNKNOWN if the master is not detected as the leader, otherwise OK.
Statuses: ok, critical, unknown

Solucionar problemas

¿Necesitas ayuda? Ponte en contacto con soporte técnico de Datadog.

Referencias adicionales

Integración de Mesos Slave

Dashboard de Mesos Slave

Información general

Este check del Agent recopila métricas de los esclavos de Mesos:

  • Carga del sistema
  • Número de tareas fallidas, finalizadas, preconfiguradas, en ejecución, etc.
  • Número de ejecutores en ejecución, finalizados, etc.

Y muchos más.

Este check también crea un check de servicio para cada tarea de ejecutor.

Configuración

Instalación

Consulta Instalación de Datadog en Mesos con DC/OS para instalar el Datadog Agent en cada nodo del agente de Mesos con la interfaz de usuario web de DC/OS.

Configuración

DC/OS

  1. En la interfaz de usuario web de DC/OS, haz clic en la pestaña Universo. Busca el paquete de Datadog y haz clic en el botón Instalar.
  2. Haz clic en el botón Instalación avanzada.
  3. Introduce tu clave de la API de Datadog en el primer campo.
  4. En el campo Instancias, introduce el número de nodos esclavos en tu clúster (Puedes determinar el número de nodos en tu clúster haciendo clic en la pestaña Nodos del lado izquierdo de la interfaz de usuario web de DC/OS).
  5. Haz clic en Revisar e instalar y luego en Instalar.

Marathon

Si no utilizas DC/OS, usa la interfaz de usuario web de Marathon o publica en la URL de la API, el siguiente JSON para definir el Datadog Agent. Debes cambiar <YOUR_DATADOG_API_KEY> con tu clave de la API y el número de instancias con el número de nodos esclavos en tu clúster. También puedes necesitar actualizar la imagen del docker utilizada a una etiqueta (tag) más reciente. Puedes encontrar la última en 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=<YOUR_DATADOG_API_KEY>" },
        { "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": {} }
  ]
}

A menos que desees configurar un mesos_slave.d/conf.yaml personalizado, quizás necesites configurar disable_ssl_validation: true. no necesitas hacer nada después de instalar el Agent.

Recopilación de logs

  1. La recopilación de logs está desactivada en forma predeterminada en el Datadog Agent, actívala en tu archivo datadog.yaml:

    logs_enabled: true
    
  2. Añade este bloque de configuración a tu archivo mesos_slave.d/conf.yaml para empezar a recopilar tus logs de Mesos:

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

    Cambia el valor del parámetro path en función de tu entorno o utiliza el stdout predeterminado de Docker:

    logs:
      - type: docker
        source: mesos
    

    Consulta el ejemplo de mesos_slave.d/conf.yaml para todas las opciones disponibles de configuración.

  3. Reinicia el Agent.

Para activar logs para entornos de Kubernetes, consulta Recopilación de logs de Kubernetes.

Validación

DC/OS

En la pestaña de Servicios en la interfaz de usuario web de DC/OS, debería aparecer el Datadog Agent. En Datadog, busca mesos.slave en el explorador de métricas.

Marathon

Si no estás utilizando DC/OS, entonces el Datadog-Agent está en el lista de aplicaciones en ejecución con un buen estado. En Datadog, busca mesos.slave en el explorador de métricas.

Datos recopilados

Métricas

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

Eventos

El check de Mesos-slave no incluye ningún evento.

Checks de servicio

mesos_slave.can_connect
Returns CRITICAL if the Agent cannot connect to the Mesos slave metrics endpoint, otherwise OK.
Statuses: ok, critical

Solucionar problemas

¿Necesitas ayuda? Ponte en contacto con soporte técnico de Datadog.

Referencias adicionales