Grafana 외부 서버의 데이터를 가져오기 - prometheus-mysqld-exporter 강의이야기 | Posted on 2022. 2. 13. 22:34
이번에는 MySQL 모니터링을 해보겠습니다.
exporter 가 MySQL 에 접속해서 데이터를 가져가야 하기때문에, 전용 계정을 하나 생성합니다.
sudo mysql
use mysql;
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'password!1234' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
이 글을 볼 정도라면 mysql 의 create user 와 grant 명령어는 아실거라 생각하기 때문에 자세한 설명은 생략합니다.
알아서 수정해서 쓰시면 됍니다.
그러면 이제 설치를 합니다.
sudo apt install -y prometheus-mysqld-exporter
설치가 종료돼면, 위에서 만든 계정으로 로그인하도록 설정을 수정합니다.
sudo vi /etc/default/prometheus-mysqld-exporter
파일을 열어서 로그인 설정을 추가합니다.
# Using UNIX domain sockets and authentication:
# DATA_SOURCE_NAME="prometheus:nopassword@unix(/run/mysqld/mysqld.sock)/"
DATA_SOURCE_NAME=exporter:password!1234@unix(/run/mysqld/mysqld.sock)/
위에서 만든 계정 설정대로라면 이렇게 수정하시면 됍니다.
설정을 변경하셨으니, 재시작합니다.
sudo service prometheus-mysqld-exporter restart
이제 이걸로 끝났으니, Grafana 에 설치됀 Prometheus 의 설정을 변경합니다.
sudo vi /etc/prometheus/prometheus.yml
파일을 열어서 9104 포트 설정을 추가합니다.
- job_name: node
# If prometheus-node-exporter is installed, grab stats about the local
# machine by default.
static_configs:
- targets:
- 'localhost:9100'
# test server
- '{Your Test Server IP}:9100'
- '{Your Test Server IP}:9113'
- '{Your Test Server IP}:9121'
- '{Your Test Server IP}:9104'
relabel_configs:
- source_labels: ['__address__']
regex: 'localhost:91[0-9]+'
target_label: instance
replacement: 'Grafana'
- source_labels: ['__address__']
regex: '{Your}\.{Test}\.{Server}\.{IP}:91[0-9]+'
target_label: instance
replacement: 'Test'
프로메테우스를 재시작합니다.
sudo service prometheus restart
Grafana 에 대시보드를 추가합니다.
mysql 로 검색했을때 맨 위에 나오는 7362 번을 추가하겠습니다.
MySQL Overview dashboard for Grafana | Grafana Labs
추가를 하면 이렇게 데이터를 불러오지 못합니다.
현재는 불러오지 못하는게 정상입니다.
(prometheus-mysqld-exporter 에 문제가 있어서 그렇습니다.)
http://{Your Master Prometheus IP}:9090/targets
프로메테우스 타겟으로 확인을 해보면..
9104 포트가 에러가 발생한것을 볼 수 있습니다.
저게 prometheus-mysqld-exporter 가 MySQL 로 접속을 못하는걸로 보이는데..
실제로 sock이 아닌, IP로 하면 페이지는 열리는데 데이터가 없습니다.
이 문제는 prometheus-mysqld-exporter 를 업데이트하면 해결됍니다.
prometheus-mysqld-exporter 가 설치됀 서버로 다시 와서, 버전을 확인합니다.
prometheus-mysqld-exporter --version
위의 코드로 확인을 해보면..
mysqld_exporter, version 0.11.0+ds (branch: debian/sid, revision: 0.11.0+ds-1)
build user: pkg-go-maintainers@lists.alioth.debian.org
build date: 20181016-00:53:55
go version: go1.10.4
이렇게 0.11.0 버전을 사용한다고 나옵니다.
sudo service prometheus-mysqld-exporter status
위의 명령어를 치시고..
Loaded: loaded (/lib/systemd/system/prometheus-mysqld-exporter.service; enabled; vendor preset: enabled)
위의 라인을 찾습니다.
서비스 파일이 /lib/systemd/system/prometheus-mysqld-exporter.service 에 있네요.
CGroup: /system.slice/prometheus-mysqld-exporter.service
└─14885 /usr/bin/prometheus-mysqld-exporter
그리고 위의 라인도 찾아서 /usr/bin/prometheus-mysqld-exporter 도 기억해둡니다.
일단 서비스 파일을 열어봅니다.
sudo vi /lib/systemd/system/prometheus-mysqld-exporter.service
열어서 확인을해보면..
Documentation=https://prometheus.io/docs/introduction/overview/
프로메테우스의 프로그램인듯합니다.
GitHub - prometheus/mysqld_exporter: Exporter for MySQL server metrics
프로메테우스의 깃허브에서 mysqld_exporter 를 찾습니다.
여기에 있는 최신버전으로 교체를 합니다.
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.13.0/mysqld_exporter-0.13.0.linux-amd64.tar.gz
tar -zxvf mysqld_exporter-0.13.0.linux-amd64.tar.gz
cd mysqld_exporter-0.13.0.linux-amd64/
mv mysqld_exporter /usr/bin/prometheus-mysqld-exporter
sudo service prometheus-mysqld-exporter restart
버전과 CPU에 주의하시고, 위에서 기억하라고 한 파일의 위치로 수정해줍니다.
수정후에 프로메테우스의 타겟을 확인해보면, 오류가 사라진것을 확인 할 수 있습니다.
대시보드를 새로고침해보면 No data 가 사라지고, 정상적으로 데이터가 보이기 시작합니다.
ps. 개인적으로 연동 난이도가 가장 높았던건 MySQL 이었다고 생각을하네요..
설마 우분투 기본버전이 에러일줄이야;;
설정이 이상한건가 싶어서 약 하루종일 삽질을 했었네요;;
그냥 깃허브에서 최신 버전으로 업그레이드하면 해결됍니다;;