도커로 프로메테우스와 그라파나 그리고 스프링 부트를 연결하는 방법은 아래와 같습니다.
global:
scrape_interval: 30s
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090'] #프로메테우스 자기 자신 호출
- job_name: 'grafana'
scrape_interval: 5s
static_configs:
- targets: ['grafana:3000'] #그라파나 호출
- job_name: 'my-spring'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
static_configs:
- targets: ['my-spring:8080'] #실제 서비스 호출
도커 환경에서는 같은 네트워크안에서는 dns처럼 호출 할 수 있기에 위와 같이 설정하였습니다.
version: "3.7"
services:
my-spring:
image: my-spring
ports:
- "8080:8080"
restart: on-failure
depends_on:
- mariadb
networks:
- net
mariadb:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: 1111
MYSQL_DATABASE: test
MYSQL_USER: user
MYSQL_PASSWORD: 1111
ports:
- "3306:3306"
networks:
- net
grafana:
image: grafana/grafana
restart: on-failure
ports:
- "3000:3000"
depends_on:
- prometheus
networks:
- net
prometheus:
image: prom/prometheus
restart: on-failure
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
command:
- '--config.file=/etc/prometheus/prometheus.yml'
depends_on:
- my-spring
networks:
- net
networks:
net:
위 파일을 설명하자면
mariadb
를 생성하여 기존 프로젝트의 db로 연결하여 사용하였으며 프로메테우스와 그라파나를 같이 띄우게 하였습니다. depends-on을 통해 의존관계를 설정해 만약mysql
이나 스프링에 문제가 생겨서 실행이 안된다면 다른 프로그램도 실행이 되지 않게 하였습니다.
해당 작업들은 chagGpt를 통해서 기초를 작성하고 이후 나머지를 작성하였습니다.