Prometheus에서 cAdvisor 메트릭 얻기 ~ docker run으로 시작 ~

소개



Kubernetes의 감시에 대해 조사했을 때 , cAdvisor를 사용할 필요가 있다고 생각했습니다만, cAdvisor를 잘 이해하고 있지 않고, 「Kubernetes를 시작하면 함께 일어나거나 하는 것?」등이라고 생각하고 있었습니다. 이대로는 마즈이이므로 cAdvisor를 사용법에서 조사했습니다. 여기에서는 최소 cAdvisor를 이동하여 Prometheus(+Grafana)에서 메트릭을 얻을 수 있도록 합니다.

cAdvisor란?



cAdvisor(Container Advisor)는, 가동중의 컨테이너의 정보를 모아 출력해, 자원과 퍼포먼스 상황을 가르쳐 주는 툴입니다. 취득하는 리소스는 각 컨테이너의 가동 상황(running,stopped등), CPU나 메모리의 사용량등입니다.

공식 github 페이지는 여기입니다.

cAdvisor 시작



cAdvisor는 docker 컨테이너 이미지에서 제공되므로 docker 명령과 구성 관리 파일을 사용하여 시작합니다. 여기에서는 docker run으로 직접 시작하는 방법을 소개합니다.

구현 환경



이 기사와 유사합니다. Prometheus나 Grafana의 사용법도 이 페이지에서 봐 주세요.

OS: Centos7
Kubernetes 버전: 1.13.1
User: 다음 작업은 모두 루트 사용자로 수행됩니다.

docker run 명령



공식 github 페이지을 참조하면서 다음과 같이 명령을 입력하여 컨테이너를 시작했습니다.
[root@k8s-master ~]# docker run --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest
20fea528ac6bca0f2dd7b0d71a077920cdc770634af34a3da0e6f898938a9617
[root@k8s-master ~]# docker ps --filter "name=cadvisor"
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                    NAMES
20fea528ac6b        google/cadvisor:latest   "/usr/bin/cadvisor..."   17 minutes ago      Up 17 minutes       0.0.0.0:8080->8080/tcp   cadvisor
[root@k8s-master ~]# 

GUI에서 http://<ホストのグローバルIPアドレス:8080>에 액세스합니다.

기본적으로 표시되는 것은 CPU, 메모리, 네트워크 등입니다.




메트릭 목록은 예를 들어 http://<ホストのグローバルIPアドレス:8080/metrics>에 액세스할 때 표시됩니다.


Prometheus(+Grafana)에서 메트릭 얻기



cAdvisor를 시작할 수 있었으므로 Prometheus에서 메트릭을 가져옵니다. Prometheus 공식 페이지는 방법을 소개합니다.

구성 파일 편집



Prometheus 구성 파일에 해당하는 prometheus.yml를 편집하여 대상에 cAdvisor를 추가합니다.

prometheus.yml
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']

# ここからcAdvisorの部分に該当する
  - job_name: cadvisor
    scrape_interval: 5s
    static_configs:
    - targets: ['localhost:8080']

Prometheus에 GUI에서 액세스



구성 파일 편집이 완료되면 Prometheus를 시작하고 GUI에서 http://<ホストのグローバルIPアドレス:9090>에 액세스합니다. 그런 다음 화면 상단의 StatusTargets를 클릭하면 cAdvisor가 표시되는지 확인할 수 있습니다.

이제 Prometheus에서 cAdvisor 메트릭을 수집할 수 있습니다. 시험에 cadvisor_version_info 라는 알기 쉬운 지표를 가져옵니다.

취득을 확인할 수 있었습니다.

Grafana에 GUI에서 액세스



Grafana에서도 물론 확인할 수 있습니다. Prometheus Dashboard에서 새 그래프를 만들고 검색 메트릭을 cadvisor_version_info로 지정합니다.


요약



아무것도 생각하지 않고 cAdvisor를 시작하는 것만 큼 간단합니다. 또한 Prometheus(+Grafana)에서 메트릭을 얻는 것도 그리 어렵지 않을 것 같습니다.
다만 cAdvisor는 장기간 데이터를 보존할 수 없기 때문에, InfluxDB등과 조합해 사용하는 것이 많은 것 같습니다.
또한 이번에는 docker run 명령으로 시작했지만 yaml 파일을 만들고 시작할 수도 있습니다. 공식 페이지에서는 kustomize를 이용한 배포 방법를 소개합니다.

참고 링크



【Docker】cAdvisor에 의한 Docker 컨테이너의 감시에 대해서
How to monitor docker containers using cAdvisor [ Part 1 ]
How to monitor docker containers using cAdvisor [ Part 2 ]

좋은 웹페이지 즐겨찾기