만자의 개발일지

[Prometheus] Docker 메트릭 수집하기 본문

Monitoring/Prometheus

[Prometheus] Docker 메트릭 수집하기

박만자 2022. 7. 28. 21:36

Promtheus에서 Docker 메트릭을 수집하여 모니터링할 수 있습니다. 다만 Docker에서 기본적으로 제공하지는 않으므로 추가적인 설정이 필요합니다.

 

Docker 메트릭 수집

아래 예제는 AWS EC2(Amazon Linux 2)에서 진행하였습니다.

 

JSON 파일 설정

다음과 같이 vi 편집기로 daemon.json 파일을 열어줍니다.

$ sudo vi /etc/docker/daemon.json

 

아래와 같이 코드를 작성한 후 저장합니다. 공식 문서에서는 9323포트를 권장하지만 다른 포트를 사용하셔도 무방합니다.

{
  "metrics-addr" : "0.0.0.0:9323",
  "experimental" : true
}

 

docker를 재실행 합니다.

$ systemctl restart docker

 

/metrics 경로로 요청을 보내 정상적으로 작동하는지 확인합니다.

$ curl localhost:9323/metrics
# HELP builder_builds_failed_total Number of failed image builds
# TYPE builder_builds_failed_total counter
builder_builds_failed_total{reason="build_canceled"} 0
builder_builds_failed_total{reason="build_target_not_reachable_error"} 0
builder_builds_failed_total{reason="command_not_supported_error"} 0
builder_builds_failed_total{reason="dockerfile_empty_error"} 0
builder_builds_failed_total{reason="dockerfile_syntax_error"} 0
builder_builds_failed_total{reason="error_processing_commands_error"} 0
builder_builds_failed_total{reason="missing_onbuild_arguments_error"} 0
builder_builds_failed_total{reason="unknown_instruction_error"} 0
# HELP builder_builds_triggered_total Number of triggered image builds
# TYPE builder_builds_triggered_total counter
builder_builds_triggered_total 0
# HELP engine_daemon_container_actions_seconds The number of seconds it takes to process each container action
# TYPE engine_daemon_container_actions_seconds histogram
engine_daemon_container_actions_seconds_bucket{action="changes",le="0.005"} 1
engine_daemon_container_actions_seconds_bucket{action="changes",le="0.01"} 1
.
.
.

# HELP swarm_store_write_tx_latency_seconds Raft store write tx latency.
# TYPE swarm_store_write_tx_latency_seconds histogram
swarm_store_write_tx_latency_seconds_bucket{le="0.005"} 0
swarm_store_write_tx_latency_seconds_bucket{le="0.01"} 0
swarm_store_write_tx_latency_seconds_bucket{le="0.025"} 0
swarm_store_write_tx_latency_seconds_bucket{le="0.05"} 0
swarm_store_write_tx_latency_seconds_bucket{le="0.1"} 0
swarm_store_write_tx_latency_seconds_bucket{le="0.25"} 0
swarm_store_write_tx_latency_seconds_bucket{le="0.5"} 0
swarm_store_write_tx_latency_seconds_bucket{le="1"} 0
swarm_store_write_tx_latency_seconds_bucket{le="2.5"} 0
swarm_store_write_tx_latency_seconds_bucket{le="5"} 0
swarm_store_write_tx_latency_seconds_bucket{le="10"} 0
swarm_store_write_tx_latency_seconds_bucket{le="+Inf"} 0
swarm_store_write_tx_latency_seconds_sum 0
swarm_store_write_tx_latency_seconds_count 0

 

위와 같이 Docker 엔진(daemon)에 관한 메트릭부터 Docker Swarm에 관한 메트릭까지 제공합니다. 

이제 Prometheus에서 해당 메트릭을 수집해 모니터링 환경을 구성할 수 있습니다.

 

Prometheus 타겟 설정

다음과 같이 Prometheus YAML파일을 구성합니다. 위에서 설정한 Docker 데몬을 타겟으로 지정합니다.

global:
  scrape_interval: 15s
  evaluation_interval: 15s
  
scrape_configs:
  
  - job_name: "Docker"

      static_configs:
      - targets: ["localhost:9323"]

 

Prometheus를 실행한 후 메트릭을 잘 불러오는지 확인합니다.

 

참고

'Monitoring > Prometheus' 카테고리의 다른 글

[Prometheus] Node Exporter란?  (1) 2022.07.28
[Prometheus] Prometheus 설치하기  (0) 2022.07.27
[Prometheus] Prometheus란?  (0) 2022.07.27
Comments