Prometheus MySQL Exporter 설정

DevOps Engineer·2023년 10월 27일
0

Grafana 관련

목록 보기
3/3

Redis Exporter를 하다보니 MySQL exporter도 있으면 좋겠다 싶어서 적용해봄

크게 해야할 점

  • exporter 설치
  • servicemonitor 등록
  • Prometheus Target 확인하기
  • 대시보드에 활용해보기 + Alert 설정( 데이터 엔지니어분에게 조언을 구해보자... )

Exporter 설치

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
tar -xzvf mysqld_exporter-0.12.1.linux-amd64.tar.gz
mv mysqld_exporter-0.12.1.linux-amd64/ mysqld_exporter

cd mysqld_exporter
vi my.cnf

[client]
user=mysqluser
password=my-password

#서비스등록
vi /usr/lib/systemd/system/mysqld_exporter.service

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

[Service]
User=root
Group=root
Type=simple
ExecStart=/opt/prometheus/mysqld_exporter/mysqld_exporter  \
--config.my-cnf /opt/prometheus/mysqld_exporter/my.cnf

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl start mysqld_exporter
systemctl enable mysqld_exporter

netstat -tnlp | grep 9104

Servicemonitor

helm install 했을 때 생긴 에러가 템플릿에 있는 mod.yaml에서 에러가 발생한 것으로 생각하고 mod.yaml을 뺀 템플릿을 따로 만들어서 진행함

#helm으로 진행함
helm repo add ygqygq2 https://ygqygq2.github.io/charts/
helm pull ygqygq2/mysql-servicemonitor
tar -xvzf ./mysql-servicemonitor-1.0.0.tgz
#values.yaml 작성
# where the mysql installed namespace
namespaceSelector: monitoring
# endports
endpoints:
  - xxx.xxx.xxx.xxx # 예로 3개의 mysql이 있다고 가정함
  - yyy.yyy.yyy.yyy
  - zzz.zzz.zzz.zzz
# on what port are the metrics exposed by etcd
metricsPortName: metrics
metricsPort: 9104
# Are we talking http or https?
scheme: http
# default rules are in templates/mysql-servicemonitor.rules.yaml
# prometheusRules: {}
## Custom Labels to be added to ServiceMonitor
# 经过测试,servicemonitor标签添加prometheus operator的release标签即可正常监控
additionalServiceMonitorLabels:
  release: prometheus-operator #operator에서 다룰 수 있어야 해서 꼭 넣어야함!
##Custom Labels to be added to Prometheus Rules CRD
additionalRulesLabels:
  release: prometheus-operator
prometheusRules:
  enabled: false
만약 prometheus 내에 다른 네임스페이스의 서비스모니터를 인식할 수 있게 옵션을 안 주면
같은 네임스페이스 내에 servicemonitor를 설정해야함


helm install mysql-servicemonitor -f ./mysql-servicemonitor-values.ymal  -n monitoring

템플릿에 의해 만들어진 것들
service, endpoint, servicemonitor

프로메테우스 Target이 제대로 잡히는지 확인하기
이후 Grafana에서 dashBoard 추가할 때 prometheus로 만들 수 있음

참고사이트
https://artifacthub.io/packages/helm/ygqygq2/mysql-servicemonitor

profile
madame의 Techblog

0개의 댓글