이렇게 멋진 대시보드 한 번 가져보자!
docker-compose.monitoring.yml 파일 작성
services:
prometheus:
image: prom/prometheus
container_name: prometheus
ports:
- "9090:9090"
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--web.external-url=/prometheus'
volumes:
- ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml
networks:
- frontend-network
depends_on:
- cadvisor
grafana:
image: grafana/grafana-oss
container_name: grafana
expose:
- "3002"
ports:
- "3002:3002"
environment:
- GF_SERVER_ROOT_URL=http://localhost:3002/grafana
- GF_SERVER_SERVE_FROM_SUB_PATH=true
volumes:
- grafana:/var/lib/grafana
networks:
- frontend-network
depends_on:
- loki
cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.47.0
container_name: cadvisor
ports:
- "8082:8082"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
networks:
- frontend-network
- backend-network
depends_on:
- backend
- frontend
- adminer
- mysql
loki:
image: grafana/loki:latest
container_name: loki
ports:
- 3100:3100
networks:
- frontend-network
volumes:
- ./monitoring/loki-config.yml:/etc/loki/loki-config.yaml
promtail:
image: grafana/promtail:latest
container_name: promtail
networks:
- frontend-network
- backend-network
volumes:
- ./monitoring/promtail-config.yml:/etc/promtail/promtail-config.yaml
depends_on:
- loki
volumes:
grafana:
기존 docker-compose.prod.yml에 include추가하기
docker compose -f docker-compose.prod.yml up
으로 명시적으로 docker-compose 파일을 ssh 상에서 띄우면 docker-compose.monitoring.yml 도 같이 작동한다.
include:
- docker-compose.monitoring.yml
services:
nginx_proxy:
image: jc21/nginx-proxy-manager:latest
container_name: nginx_proxy_manager
SSL 인증서 받은 도메인에 경로 추가
Nginx proxy manager - proxy host - custom locations에 추가한 경로에 / 으로 구분해 각 컨테이너로 라우팅해준다.
관리자가 <your:domain>/prometheus로 접속할 수 있게 해준 것이다.
Prometheus 확인
ec2 방화벽도 그에 맞게 열어주었다. sudo ufw status
Grafana 띄우기
Nginx proxy manager 로 경로 설정 후, 일단 처음 접속하면 처음에는 별 화면이 없어서 놀랄 수 있다 오른쪽 상단 로그인 후 (최초 로그인 시 id: admin, pw: admin) 최초 비번 설정 변경 후 데이터 소스를 추가할 수 있다.
add data source - prometheus 클릭
밑의 나머지 설정은 그대로 두고 save&test
알맞게 설정되면
가 뜬다. loki도 똑같이 http://loki:3100으로 추가하기
잘 추가된 모습을 볼 수 있다.
대시보드 구성하기
오른쪽 상단 + - import dashboard 클릭
대시보드 id 19792 입력 후 로드 클릭. cadvisor 기반 dashboard 템플릿 id이다.
데이터 소스로 prometheus 클릭 후 가져오기
아름다운 대시보드가 완성되었다.
로그기반 대시보드 구성
다중컨테이너로 구성된 docker compose up 하다보면 로그가 너무 많이 뜨는 문제가 있다. 이를 필터로 볼 수 있게 하고 싶었다.
오른쪽 상단 + - new dashboard - 오른쪽 상단 settings - variables
원하는 대시보드 구성요소 설정 후
Add
최종 프로젝트 기술 스택