해당 작업은 elastic metricbeat docker module 과 Docker Performance Monitoring with Metricbeat and ELK Stack (사진 출처) 을 참고하여 작업하였습니다.
개요
Linux에 ELK Stack(Metricbeat) 를 세팅하여 dashboard에서 확인하는 과정은 여기 에서 확인할 수 있다.
ELK metricbeat는 Docker container 들에서 metric 데이터를 가져올 수 있는 모듈을 제공한다.
추가적으로 아래의 다른 모듈들도 기본적으로 제공되는데, ./metricbeat-7.12.1-linux-x86_64(다운로드 경로)/modules.d 경로에서 확인해볼 수 있다.
activemq.yml.disabled docker.yml (이후 활성화되면 disabled가 없어짐) kibana-xpack.yml.disabled postgresql.yml.disabled
aerospike.yml.disabled docker.yml.disabled kibana.yml.disabled prometheus.yml
apache.yml.disabled dropwizard.yml.disabled kubernetes.yml.disabled rabbitmq.yml.disabled
appsearch.yml.disabled elasticsearch-xpack.yml.disabled kvm.yml.disabled redisenterprise.yml.disabled
awsfargate.yml.disabled elasticsearch.yml.disabled linux.yml.disabled redis.yml.disabled
aws.yml.disabled envoyproxy.yml.disabled logstash-xpack.yml.disabled sql.yml.disabled
azure.yml.disabled etcd.yml.disabled logstash.yml.disabled stan.yml.disabled
beat-xpack.yml.disabled gcp.yml.disabled memcached.yml.disabled statsd.yml.disabled
beat.yml.disabled golang.yml.disabled mongodb.yml.disabled system.yml
ceph-mgr.yml.disabled graphite.yml.disabled mssql.yml.disabled tomcat.yml.disabled
ceph.yml.disabled haproxy.yml.disabled munin.yml.disabled traefik.yml.disabled
cloudfoundry.yml.disabled http.yml.disabled mysql.yml.disabled uwsgi.yml.disabled
cockroachdb.yml.disabled ibmmq.yml.disabled nats.yml.disabled vsphere.yml.disabled
consul.yml.disabled iis.yml.disabled nginx.yml windows.yml.disabled
coredns.yml.disabled istio.yml.disabled openmetrics.yml.disabled zookeeper.yml.disabled
couchbase.yml.disabled jolokia.yml.disabled oracle.yml.disabled
couchdb.yml.disabled kafka.yml.disabled php_fpm.yml.disabled
docker.yml.disabled 파일의 아래 내용을 주석 해제한다. 아래 코드는 container, cpu, healthcheck 등의 docker metricsets들에 대한 정보가 fetch될 것임을 의미한다.
metricbeat.modules:
- module: docker
metricsets:
- "container"
- "cpu"
- "diskio"
- "event"
- "healthcheck"
- "info"
#- "image"
- "memory"
- "network"
#- "network_summary"
hosts: ["unix:///var/run/docker.sock"]
period: 10s
enabled: true
Docker.yml 파일 enabled (활성화) 시키기
./metricbeat modules enable docker
Background에서 metricbeat가 돌아가도록 실행
nohup sudo ./metricbeat -e &
Kibana 작업
kibana > Dashboard > Create New DashBoard > Create New Panel 하여 Kibana로 시각화할 수 있다.
Kibana는 시계열 작업에 유리하며, x축과 y축, 그리고 필드를 이용하여 커스텀화해 나타낼 수 있다.
docker 관련 Kibana구성은 아래 사진과 같이 커스텀화하여 모니터링할 수 있다.
1. 각 도커 이미지별 CPU 사용률, Docker DISKIO 사용률, Memory 사용률, Memory RSS 사용률 등을 파악할 수 있다.
X-axis에 docker.container.name을, Y-axis에 docker.cpu.usage.total ,docker.memory.usage.total,, 등을 추가한다
2. Memory Usage / CPU Usage Over time
컨테이너별 memory/cpu 세부 사용률을 시간별로 보기 위해서는 X-axis에 @timestamp를, Y-axis에 docker.memory.usage.total을, 세부 항목에 docker.container.name을 추가한다.
3. 도커 컨테이너(Total, Running, Stopped) 개수 조회
Unique Count aggregation 항목과 docker.container.name 항목을 통해 현재 running되고 있는, stopped된 도커 컨테이너 수를 알 수 있다 !
주의할 점
Docker 모니터링에 metricbeats를 도입하려고 하는 사람이라면 Kibana에서 얻을 수 있는 자료의 종류를 미리 알아본 후에 도입해보는 걸 추천한다!
'INFRA' 카테고리의 다른 글
[API GATEWAY] KONG API Gateway -2 (0) | 2023.10.25 |
---|---|
[API GATEWAY] KONG API Gateway -1 (0) | 2023.10.23 |
[Docker] 도커를 공부하며.. 🐳 (2) | 2023.10.23 |
[ELK] Elastic Search ILM 정책 (+추가 에러 핸들링) (2) | 2023.09.25 |
[ELK] GPU 성능 모니터링: Metricbeat와 ELK 스택 (2) | 2023.09.11 |