Prometheus and Grafana
목표
- 프로메테우스와 그라파나를 연결합니다
- 그라파나에 대시보드를 추가해 시각적인 정보를 생성합니다
DB컨테이너 준비
-
여태 작업했던 DB컨테이너를 모두 종료합니다
-
Docker HOST에 MySQL그룹을 생성하고 mysql 유저를 추가합니다
이때 사전에 만든 Docker Image와 동일하게 GID UID를 갖도록 합니다
이렇게 하면 컨테이너 유저의 GID, UID가 DOCKER HOST 유저의 GID, UID가 같아지게 됩니다
-
호스트 디렉터리의 OWNER를 mysql로 변경하고 권한을 755로 변경합니다
-
mysql57 이미지를 이용해 db001 컨테이너를 로드합니다
-
mysql57 이미지를 이용해 db002 컨테이너를 로드합니다
-
mysql57 이미지를 이용해 db003 컨테이너를 로드합니다
Prometheus 컨테이너 준비
-
프로메테우스가 사용할 디렉터리를 준비합니다
프로메테우스는 mysql 유저로 사용하는 것이 아니기 때문에 일단 777권한을 부여합니다
-
프로메테우스 설정파일을 작성합니다
-
설정 파일은 각 컨테이너별 node exporter용 job과 mysqld exporter용 job을 등록하고
각 컨테이너별로 연결 정보를 등록합니다
global: scrape_interval: 5s evaluation_interval: 5s scrape_configs: - job_name: linux_db001 static_configs: - targets: ['db001:9100'] labels: alias: db001 - job_name: mysql_db001 static_configs: - targets: ['db001:9104'] labels: alias: db001 - job_name: linux_db002 static_configs: - targets: ['db002:9100'] labels: alias: db002 - job_name: mysql_db002 static_configs: - targets: ['db002:9104'] labels: alias: db002 - job_name: linux_db003 static_configs: - targets: ['db003:9100'] labels: alias: db003 - job_name: mysql_db003 static_configs: - targets: ['db003:9104'] labels: alias: db003 -
9090포트를 이용해 프로메테우스 컨테이너를 실행합니다
Prometheus ↔ MySQL DB 연결
db001
-
db001 컨테이너 SQL서버에 접속합니다
-
mysqld exporter가 사용할 'exporter' 유저를 생성합니다
-
exporter 유저에게 권한을 부여합니다
-
사전 이미지 작업때 작성했던 셸스크립트를 실행해 exporter를 실행합니다
db002
-
db002 컨테이너 SQL서버에 접속합니다
-
mysqld exporter가 사용할 'exporter' 유저를 생성합니다
-
exporter 유저에게 권한을 부여합니다
-
사전 이미지 작업때 작성했던 셸스크립트를 실행해 exporter를 실행합니다
db003
-
db003 컨테이너 SQL서버에 접속합니다
-
mysqld exporter가 사용할 'exporter' 유저를 생성합니다
-
exporter 유저에게 권한을 부여합니다
-
사전 이미지 작업때 작성했던 셸스크립트를 실행해 exporter를 실행합니다
Prometheus 시작
-
http://{DOCKER HOST IP}:9090 에 접속하여 Prometheus GUI 콘솔에 접속합니다
Tip
💡 AWS EC2 환경이면 인바운드에서 9090포트를 열어둬야 합니다
-
프로메테우스 콘솔에 정상적으로 접속되었습니다

-
컨테이너에서 제대로 정보를 수집하고 있는지 알아보기 위해 'up'쿼리를 실행합니다

-
컨테이너에서 각각 두 개씩의 exporter가 잘 수행되고 있습니다

Grafana ↔ Prometheus 연결
-
호스트 13000포트에 그라파나컨테이너 3000포트로 매핑하여 컨테이너를 로드합니다
-
http://{DOCKER HOST IP}:13000 에 접속하여 Grafana 콘솔에 접속합니다
-
grafana 초기 비밀접속 정보는 username : admin / password : admin 입니다

-
그라파나 콘솔에서 데이터 소스 연결 메뉴에 진입합니다

-
새로운 데이터소스를 클릭합니다

-
데이터소스 종류에서 프로메테우스를 선택합니다

-
데이터 수신 주소에 호스트이름:포트번호 (prom001:9090) 을 입력합니다

-
Save&Test를 클릭하면 자동으로 테스트 후 데이터소스에 연결합니다

Dashboard 생성
-
이미 생성된 Dashboard를 사용하기 위해 다음 주소에 접속합니다
-
MySQL Overview 대시보드를 사용하겠습니다

-
해당 JSON파일에서 RAW를 클릭하고 파일 전체 내용을 복사합니다

-
그라파나 콘솔에서 Dashboard Import를 클릭합니다

-
복사한 JSON파일을 붙여넣고 LOAD 합니다

-
설정값을 확인하고 IMPORT 합니다

-
뭔가 있어보이는 대시보드가 생성되었습니다. 이처럼 다른 여러 대시보드를 다운받아 사용해볼 수 있고, PromQL을 이용해 Dashboard를 직접 생성할 수도 있습니다
