모니터링

grafana + prometheus

dbavayne 2024. 11. 24. 21:39

구성도

 

환경정보

192.168.100.128 cent os 7.9 그라파나 서버     node_exporter
192.168.100.128 cent os 7.9 프로메테우스 서버     node_exporter
192.168.100.128 cent os 7.9 mha 서버     node_exporter
192.168.100.179 cent os 7.9 DB서버  mysql 5.7 master node_exporter
mysqld_exporer
192.168.100.129 cent os 7.9 DB서버  mysql 5.7 slave node_exporter
mysqld_exporer

 

  • node exporter는 서버당 한개, db exporter는 db 인스턴스별로 설치

1. prometheus 설치

https://prometheus.io/download/

 

설치할 서버 OS 에 맞게 LTS 버전의 링크를 복사

-- 파일 다운로드
wget https://github.com/prometheus/prometheus/releases/download/v2.53.3/prometheus-2.53.3.linux-amd64.tar.gz

-- 압축 해제 
tar -xvf prometheus-2.53.3.linux-amd64.tar.gz

 

 


2. prometheus user 생성 및 서비스등록 & 실행

-- 디렉토리 프로비저닝
useradd --no-create-home --shell /bin/false prometheus

-- 계정확인
cat /etc/passwd | grep prometheus

-- 권한변경
chown -R prometheus:prometheus prometheus-2.53.3.linux-amd64

-- 서비스 파일 등록
sudo vi /etc/systemd/system/prometheus.service

[Unit]
Description=Prometheus Server
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
Type=simple
ExecStart=/prometheus/prometheus-2.53.3.linux-amd64/prometheus --config.file=/prometheus/prometheus-2.53.3.linux-amd64/prometheus.yml

[Install]
WantedBy=multi-user.target


-- 서비스 등록
sudo systemctl daemon-reload
sudo systemctl enable prometheus.service
sudo systemctl start prometheus.service
sudo systemctl restart prometheus.service
sudo systemctl status prometheus.service

 

 

기본 port 9090으로 해당 local host url 접속 - 타겟에서 서버상태 정보 확인

http://192.168.100.128:9090/


3. node_exporter 설치 ( H/W 모니터링, CPU, memory, network ) 

 wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz

tar -xvf node_exporter-1.5.0.linux-amd64.tar.gz

 

 

node_exporter 서비스 등록

sudo vi /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
Type=simple
ExecStart=/root/node_exporter-1.5.0.linux-amd64/node_exporter

[Install]
WantedBy=multi-user.target

##서비스등록
sudo systemctl daemon-reload
sudo systemctl enable node_exporter.service
sudo systemctl start node_exporter.service
sudo systemctl restart node_exporter.service
sudo systemctl status node_exporter.service

 

 

9100 포트로 node exporter가 잘 실행되고 있음을 확인 


4. prometheus <> node_exporter 연동
ㄴ prometheus가 node_exporter의 metric HTTP endpoint에 접근할 수 있도록..

 

## prometheus가 설치된 서버에 prometheus.yml 파일 내용 추가

scrape_configs: 
  - job_name: "node-exporter"
    static_configs:
      - targets: ["192.168.100.128:9100"]
      
## prometheus 재시작

sudo systemctl restart prometheus.service
sudo systemctl status prometheus.service

 

node_exporter 추가 확인

 


5. 그라파나 + prometheus 연동 
ㄴ 서버 모니터링 대시보드 구성

대시보드 템플릿 다운로드 

https://grafana.com/grafana/dashboards/1860-node-exporter-full/

 

- 24/05/22 년 버전으로 받았음 파일 형식은 json

 

- 그라파나에 템플릿 import 

 

- data source 선택시 prometheus 설정

 

- import

 

- 필요한 패널 편집해서 대시보드 구성

 


6. mysqld_exporter 설치 ( DB모니터링, replication check ) 

- 대시보드 템플릿

https://grafana.com/grafana/dashboards/14057-mysql/

- mysql 모니터링 항목

 

- mysqld_exporter 설치 가이드 참고 url

https://grafana.com/oss/prometheus/exporters/mysql-exporter/?tab=installation

https://github.com/prometheus/mysqld_exporter

## 현재 최신 버전 16 다운 

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.16.0/mysqld_exporter-0.16.0.linux-amd64.tar.gz

tar -xvf mysqld_exporter-0.16.0.linux-amd64.tar.gz
cd mysqld_exporter-0.16.0.linux-amd64

## mysql 에 exporter 계정 생성

CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'Exporter!231' WITH MAX_USER_CONNECTIONS 2; 
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost'; 
FLUSH PRIVILEGES;

 

 

 

mysqld_exporter 데몬 같은 경로에 .my.cnf 파일 생성해주고 계정, 비밀번호 기입

[root@server2 mysqld_exporter-0.16.0.linux-amd64]# cat .my.cnf
[client]
user=exporter
password=Exporter!231

 

 

- mysqld_exporter 서비스 등록

collect 옵션은 github에 있는 collector flags 참조 ( collect.heartbeat 추가해봤음 ) 

sudo vi /etc/systemd/system/mysqld_exporter.service

[Unit]
Description=MySQL Exporter
Wants=network-online.target
After=network-online.target

[Service]
[Service]
User=root
Group=root
Type=simple
Restart=always
ExecStart=/root/mysqld_exporter-0.16.0.linux-amd64/mysqld_exporter \
--config.my-cnf /root/mysqld_exporter-0.16.0.linux-amd64/.my.cnf \
--collect.heartbeat \
--collect.global_status \
--collect.auto_increment.columns \
--collect.info_schema.innodb_metrics \
--collect.info_schema.processlist \
--collect.binlog_size \
--collect.info_schema.tablestats \
--collect.global_variables \
--collect.info_schema.query_response_time \
--collect.info_schema.userstats \
--collect.info_schema.tables \
--collect.perf_schema.tablelocks \
--collect.perf_schema.file_events \
--collect.perf_schema.eventswaits \
--collect.perf_schema.indexiowaits \
--collect.perf_schema.tableiowaits \
--collect.slave_status \
--web.listen-address=0.0.0.0:9104

[Install]  
WantedBy=multi-user.target

##백그라운드 서비스 등록
systemctl daemon-reload
systemctl start mysqld_exporter
systemctl enable mysqld_exporter
systemctl restart mysqld_exporter
systemctl status mysqld_exporter

 

시스템 등록 후 서비스 기동 확인

 

http://192.168.100.129:9104/metrics 확인

 

- prometheus <> mysqld_exporter 연동

  - job_name: "mysqld-exporter"
    static_configs:
      - targets: ["192.168.100.129:9104"]

# 재기동
sudo systemctl restart prometheus.service
sudo systemctl status prometheus.service

 

 

promethues에서 수집주인 metric 들 

 

대시보드 구성 및 테스트

 

 

 

 

 

 

 

 

출처

https://velog.io/@inhwa1025/%EA%B3%BC%EC%A0%9C-prometheus%EC%99%80-grafana%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-DB-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81-%EA%B5%AC%EC%B6%95#1-db-%EC%84%9C%EB%B2%84%EC%99%80-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81-%EC%84%9C%EB%B2%84-%EC%B4%88%EA%B8%B0-%EA%B5%AC%EC%84%B1

'모니터링' 카테고리의 다른 글

mysql 매트릭 값 분석  (1) 2024.12.09
grafana + prometheus + alarm  (0) 2024.11.27
그라파나 설치  (0) 2024.11.24