구성도
환경정보
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 들
대시보드 구성 및 테스트
출처
'모니터링' 카테고리의 다른 글
mysql 매트릭 값 분석 (1) | 2024.12.09 |
---|---|
grafana + prometheus + alarm (0) | 2024.11.27 |
그라파나 설치 (0) | 2024.11.24 |