Docker

Grafana에서 PostgreSql 모니터링 하기(postgresql_exporter연동)

hwanguu 2024. 4. 28. 21:22

 

Docker Postgresql + exporter 실행

version: '3'
services:
  postgres:
    image: postgres:latest
    ports:
      - "5432:5432"
    environment:
      POSTGRES_PASSWORD: {postgres db 비밀번호}
    volumes:
      - {postgresql 데이터 저장할 host 주소}:/var/lib/postgresql/data

  postgres_exporter:
    image: wrouesnel/postgres_exporter:v0.5.1
    ports:
      - "9187:9187"
    command: ["--extend.query-path=/etc/queries.yaml", "--web.listen-address=0.0.0.0:9187"]
    depends_on:
      - postgres

 

docker compose 파일을 실행 시킨다.

 

postgres-exporter는 9187 포트 사용

 

localhost:9187/metrics 접속하게 되면 

위와같이 매트릭 정보가 나올것이다.

 

 

프로메테우스 yml에 설정

global:
  scrape_interval: 1s # 10초마다 매트릭을 수집 default 1분
  evaluation_interval: 1m # 1분마다 규칙을 평가 default 1분
  external_labels: # 외부 시스템에 표시할 이 서버의 레이블
    monitor: 'localhost'
rule_files: # 규칙을 로딩하고 evaluation_interval 설정에 따라 정기적으로 평가한다.
# - "first.rules"
# - "second.rules"
scrape_configs:

  ...
      
  # Postgresql Exporter metrics (exporter 연동)
  - job_name: "postgres"
    static_configs:
      - targets: ["host.docker.internal:9187"]

prometheus.yml에 postgresql-exporter를 등록한다.

 

그리고 prometheus 접속해서

위와같이 state가 up상태이면 된다.

 

그라파나 데이터소스 등록

 

왼쪽 메뉴 Home > Connections > Data sources 클릭

 

 

Add new data source 클릭

 

필자는 prometheus 포트가 9090이어서 위와 같이 설정했다.

그리고 host.docker.internal 를 붙인건 prometheus가 docker 환경에서 실행중이기 때문이다.

 

만일 프로메테우스 및 그라파나가 설치 안되어있다면 https://hwanguu.tistory.com/54 이 글을 보자.

 

 

 

Save & test 를 클릭하면 위와같이 성공할 것이다.

 

 

 

대쉬보드 만들기

 

왼쪽 메뉴중 Dashboards 클릭

New > New dashboard 버튼 클릭

 

Import bashboard 클릭

 

필자는 https://grafana.com/grafana/dashboards/9628-postgresql-database/ 해당 템플릿을 사용할 것이다.

 

더 많은 템플릿은 https://grafana.com/grafana/dashboards/ 여기서 볼 수 있다.

 

9628 입력후 Load 클릭하게되면

 

 

생성이 완료된다.