Prometheus-Grafana with Docker
2020-01-20
음, 예전부터 해보려고했는데 뭔가 감이 안와서 못건드리고있다가.. 갑자기 필받아서 하게되었다.
아키텍처는 아래와 같다.
다른 모니터링 툴과는 다르게 pull 방식을 사용하고 있는데, prometheus server 가 직접 monitoring target 에 깔려있는 client (exporter) 들에게 접속해서 정보를 가져오는 방식이다.
설정
# 전역 설정
global:
scrape_interval: 15s # 15초마다 매트릭을 수집한다. 기본은 1분.
evaluation_interval: 15s # 15초마다 규칙을 평가한다. 기본은 1분.
# 외부 시스템에 표시할 이 서버의 레이블
external_labels:
monitor: 'codelab-monitor'
# 규칙을 로딩하고 'evaluation_interval' 설정에 따라 정기적으로 평가한다.
rule_files:
# - "first.rules"
# - "second.rules"
# 매트릭을 수집할 엔드포인드
scrape_configs:
- job_name: 'my-prometheus'
# metrics_path의 기본 경로는 '/metrics'이고 scheme의 기본값은 `http`다
static_configs:
- targets: ['localhost:9090']
# 아래서 설정할 postgresql 서버에 대한 node exporter 를 미리 설정한다.
- job_name: 'my-postgresql'
static_configs:
- targets: ['mypostgresqlurl:9100']
설정을 연결해서 실행하는 두가지 방법
prometheus.yml
설정 파일명은 고정인가보다.
설정 파일만 연결하는 방법.
docker run \
-d \
-p 9090:9090 \
-v /home/ec2-user/prometheus.yml:/etc/prometheus/prometheus.yml \
--name myprom \
prom/prometheus
폴더를 연결하는 방법.
docker run \
-p 9090:9090 \
-v /path/to/config:/etc/prometheus \
prom/prometheus
설정된 서버의 9090 포트로 접속해보면 간결한 ui 를 확인할 수 있다.
익스포터 설정
익스포터를 깔자. 일단은 가장 기본적인 서버자원의 메트릭을 수집하는 node 익스포터.
이미지를 받고,
docker pull prom/node-exporter
실행하면 된다.
docker run \
-d \
-p 9100:9100 \
--net="host" \
--name mynodeexporter \
prom/node-exporter
위에 설정파일에서 미리 설정했으므로 확인하면된다. 이걸로 프로메테우스는 일단 끝.
Grafana
이미지를 받는다.
docker pull grafana/grafana
그리고 실행.
docker run \
-d \
--name=mygraf \
-p 3000:3000 \
grafana/grafana
호옹이 뭐하지도않았는데 막 나오네.. 좋다…
메모리도 별로 안잡아먹는 것 같다..
익스포터를 커스터마이즈하는 방법을 알면 아무데나 써먹을 수 있을 것 같다
출처