728x90
반응형
SMALL
Grafana + Prometheus + Exporter로 서버 모니터링 구성하기
1.리눅스 서버 모니터링
1-1.준비할것
1.Grafana 설치
2.Prometheus 설치
3.exporter 설치
4.Prometheus 환경파일(prometheus.yml)
위의 경우 docker compose로 한번에 세팅 가능
docker-compose.yml
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- /data/jyyoon/prometheus:/etc/prometheus
- prometheus_data:/data/jyyoon/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- "9091:9090"
restart: unless-stopped
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3000:3000"
volumes:
- grafana_data:/data/jyyoon/grafana
restart: unless-stopped
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
pid: "host"
network_mode: "host"
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- '--path.rootfs=/rootfs'
- '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($|/)'
restart: unless-stopped
volumes:
prometheus_data:
grafana_data:
prometheus.yml
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['192.168.51.152:9100']
모두 준비되었다면 docker compose up -d
1-2. Grafana 세팅

Load 의 ID 값은 템플릿 ID를 사용하자.
1860: 기본 리눅스 서버 모니터링
10991: RabbitMQ 모니터링

2.RabbitMQ 모니터링
나는 RabbitMQ 도 상세히 모니터링 하고 싶어서 추가했다.
docker-compose.yml(rabbitmq)
services:
rabbitmq:
image: rabbitmq:3-management
container_name: rabbitmq
ports:
- "5672:5672" # AMQP
- "15672:15672" # Management UI
- "15692:15692" # 프로메테우스 플러그인 매트릭 포트
volumes:
- /data/jyyoon/rabbitmq:/var/lib/rabbitmq
environment:
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
prometheus.yml(rabbitmq)
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['192.168.51.152:9100']
- job_name: 'rabbitmq'
metrics_path: /metrics
static_configs:
- targets: ['192.168.51.152:15692']

rabbitmq 의 경우 자체적으로 metrics 를 지원하기 prometheus.yml에 주소만 선언해주면 되지만 만약에 db를 추가하고 싶다면 db는 자체적으로 내부 정보를 알려주는 api가 없기 때문에 exporter 인스턴스를 만들어줘야한다.
ex)db의 경우 아래와 같이 선언
docker-compose.yml(db)
services:
mysql:
container_name: mysql
image: mysql:8.0.34
volumes:
- /data/jyyoon/db/mysql/mysql-data:/var/lib/mysql
- /data/jyyoon/db/mysql/init-exporter.sql:/docker-entrypoint-initdb.d/init-exporter.sql:ro
environment:
TZ: "Asia/Seoul"
MYSQL_DATABASE: mysqldb
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: exporter
MYSQL_PASSWORD: export_pwd
ports:
- "3306:3306"
restart: always
mysqld-exporter:
container_name: mysqld_exporter
image: prom/mysqld-exporter
command:
- "--config.my-cnf=/etc/mysql_exporter.cnf"
- "--web.listen-address=:9104"
volumes:
- /data/jyyoon/db/mysql/mysql_exporter.cnf:/etc/mysql_exporter.cnf:ro
links:
- mysql
ports:
- 9104:9104
depends_on:
- mysql
restart: unless-stopped
init-exporter.sql
CREATE USER 'exporter'@'%' IDENTIFIED BY 'export_pwd';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';
FLUSH PRIVILEGES;
mysql-exporter.cnf
[client]
user=exporter
password=export_pwd
host=mysql
prometheus.yml(db)
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['192.168.51.152:9100']
- job_name: 'rabbitmq'
metrics_path: /metrics
static_configs:
- targets: ['192.168.51.152:15692']
- job_name: 'mysqld_exporter'
metrics_path: /metrics
static_configs:
- targets: ['서버주소:9104']
**그라파나 템플릿ID**
입맛에 맞게 이~쁜거 골라서 쓰자(14031, 7362, 20016)

728x90
반응형
LIST
'나의 주니어 개발 일기 > Docker(도커)' 카테고리의 다른 글
| Pinpoint 를 통해서 모니터링을 해보자 (0) | 2024.05.13 |
|---|---|
| nGrinder 로 API 부하테스트 하기 with 도커 (1) | 2024.03.29 |
| Docker-compose로 DB 스키마 자동생성 하는 방법 (0) | 2024.03.28 |
| DOCKER COMPOSE의 환경변수 사용 방법 (0) | 2024.03.08 |
| Docker overlay2 경로 이동 방법 (0) | 2024.02.27 |