Mesos

이 점검에서는 Mesos 마스터의 주요 메트릭을 수집합니다. Mesos 보조 메트릭의 경우 Mesos 보조 통합을 참고하세요.

Mesos 주요 대시보드

개요

이 점검에서는 다음 Mesos 주요 메트릭을 수집합니다.

  • 클러스터 리소스
  • 등록, 활성, 비활성, 연결, 비연결 상태의 보조 개수
  • 실패, 완료, 준비, 실행 중인 작업 수
  • 활성, 비활성, 연결, 비연결된 프레임워크 수

이 외에도 더 많은 사항을 추적할 수 있습니다.

구성

설치

DC/OS가 있든 없든 Mesos 설치 방법은 동일합니다. Mesos 각 주요 노드에서 datadog-agent 컨테이너를 실행하세요.

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

위 명령에서 Datadog API 키와 Mesos Master API URL을 대체하세요.

설정

datadog-agent를 실행할 때 올바른 Master URL을 전달했다면 에이전트가 이미 기본값 mesos_master.d/conf.yaml을 사용해 주요 노드에서 메트릭을 수집하고 있을 겁니다. 모든 구성 옵션을 보려면 mesos_master.d/conf.yaml 샘플을 참고하세요.

주요 노드의 API에서 자체 서명된 인증서를 사용하고 있을 경우에는 이와 다릅니다. 이 경우에는 mesos_master.d/conf.yaml에서 disable_ssl_validation: true를 설정하세요.

로그 수집

  1. Datadog 에이전트에서 로그 수집은 기본적으로 사용하지 않도록 설정되어 있습니다. datadog.yaml 파일에서 로그 수집을 사용하도록 설정합니다.

    logs_enabled: true
    
  2. Mesos 로그 수집을 시작하려면 이 설정 블록을 mesos_master.d/conf.yaml 파일에 추가합니다.

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

    내 환경에 맞게 path 파라미터 값을 변경하거나 docker stdout 기본값을 사용하세요.

    logs:
      - type: docker
        source: mesos
    

    사용 가능한 설정 옵션을 모두 확인하려면 mesos_master.d/conf.yaml 샘플을 참고하세요.

  3. 에이전트를 다시 시작합니다.

쿠버네티스 환경에서 로그를 활성화하려면 쿠버네티스 로그 수집을 참고하세요.

검증

Datadog의 Metric Explorer에서 mesos.cluster를 찾습니다.

수집한 데이터

메트릭

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

이벤트

Mesos-master 점검에는 이벤트가 포함되지 않습니다.

서비스 점검

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

트러블슈팅

도움이 필요하신가요? Datadog 고객지원에 연락하세요.

참고 자료

Mesos 보조 통합

Mesos 보조 대시보드

개요

이 에이전트 점검에서는 다음 Mesos 보조 메트릭을 수집합니다.

  • 시스템 로드
  • 실패, 완료, 준비, 실행 중인 작업 수
  • 실행, 종료 및 기타 실행기 수

이 외에도 더 많은 사항을 추적할 수 있습니다.

또 이 점검에서는 각 실행기 작업마다 서비스 점검을 생성합니다.

구성

설치

DC/OS 웹 UI로 각 Mesos 에이전트 노드에 Datadog 에이전트를 설치하려면 DC/OS로 Mesos에 Datadog 설치하기를 참고하세요.

설정

DC/OS

  1. DC/OS 웹 UI에서 Universe 탭을 클릭하세요. datadog 패키지를 찾은 후 설치 버튼을 클릭하세요.
  2. Advanced Installation 버튼을 클릭하세요.
  3. 첫 번째 필드에 Datadog API 키를 입력하세요.
  4. 인스턴스 필드에 클러스터의 보조 노드 수를 입력하세요(DC/OS 웹 UI 좌측에 있는 Nodes 탭을 클릭해 클러스터의 노드 수를 결정할 수 있음).
  5. Review and Install을 클릭하고 Install을 누릅니다.

Marathon

DC/OS를 사용하지 않는 경우, Marathon 웹 UI를 사용하거나 다음 JSON에 따라 API URL을 게시해 Datadog 에이전트를 정의하세요. 이때 <YOUR_DATADOG_API_KEY>를 내 API 키로 변경하고 보조 노드 수에는 내 클러스터에 있는 보조 노드 수를 입력해야 합니다. docker 이미지도 최근 태그로 업데이트해야 할 수 있습니다. 최근 이미지를 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": {} }
  ]
}

disable_ssl_validation: true로 설정하는 등 mesos_slave.d/conf.yaml를 커스텀 구성해야 하는 경우를 제외하고, 에이전트를 설치한 후에 해야 하는 추가 작업은 없습니다.

로그 수집

  1. Datadog 에이전트에서 로그 수집은 기본적으로 사용하지 않도록 설정되어 있습니다. datadog.yaml파일에서 로그 수집을 사용하도록 설정합니다.

    logs_enabled: true
    
  2. Mesos 로그 수집을 시작하려면 이 설정 블록을 mesos_slave.d/conf.yaml 파일에 추가합니다.

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

    내 환경에 맞게 path 파라미터 값을 변경하거나 docker stdout 기본값을 사용하세요.

    logs:
      - type: docker
        source: mesos
    

    사용 가능한 설정 옵션을 모두 확인하려면 mesos_slave.d/conf.yaml 샘플을 참고하세요.

  3. 에이전트를 다시 시작합니다.

쿠버네티스 환경에서 로그를 활성화하려면 쿠버네티스 로그 수집을 참고하세요.

검증

DC/OS

DC/OS 웹 UI의 Service 탭 아래에 Datadog 에이전트가 나타납니다. Datadog의 Metrics Explorer에서 mesos.slave를 검색하세요.

Marathon

DC/OS를 사용하지 않는 경우, 정상적으로 실행 중인 애플리케이션 목록에 datadog-agent가 있습니다. Datadog의 Metrics Explorer에서 mesos.slave를 찾으세요.

수집한 데이터

메트릭

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

이벤트

Mesos-slave 점검에는 이벤트가 포함되지 않습니다.

서비스 점검

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

트러블슈팅

도움이 필요하신가요? Datadog 고객지원에 연락하세요.

참고 자료