HeeLee_DBA
MySQL - PMM 구성 및 Alert(Email) 기능 본문
PMM(Percona Monitoring and Management)은 오픈소스 모니터링 솔루션이며, MySQL, PostgreSQL등을 지원한다.
Docker 방식으로 구성 테스트 진행함
참조 : https://www.percona.com/doc/percona-monitoring-and-management/2.x/index.html
Percona Monitoring and Management
Welcome Percona Monitoring and Management (PMM) is an open-source database monitoring, management, and observability solution for MySQL, PostgreSQL, and MongoDB. It allows you to observe the health of your database systems, explore new patterns in their be
docs.percona.com
OS :AWS EC2 – RedHat Linux8.5
DBMS : MySQL8.0.36 single로 테스트

1. Docker 설치
PMM 설치에 앞서 Docker를 설치하고 PMM 서버가 설치된 Docker 컨테이너를 내려 받아야 한다.
-- yum 업데이트를 해서 최신 패키지정보를 업데이트 한다.
[root@localhost ~]# yum update
-- Docker & Docker Registry 설치
[root@localhost ~]# yum install docker docker-registry
Docker가 설치되었으면 재기동시 자동으로 데몬이 올라올수 있게 서비스를 등록해준다.
-- 서비스 등록
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
-- 서비스 실행
[root@localhost ~]# systemctl start docker
-- 상태 확인
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2024-08-19 01:56:20 UTC; 1 day 3h ago
Docs: https://docs.docker.com
Main PID: 63066 (dockerd)
Tasks: 43
Memory: 355.2M
CGroup: /system.slice/docker.service
├─ 63066 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
.
2. PMM Server 설치
PMM server는 Docker로 설치된 Image만 내려받으면 되기때문에 아주 간단하다.
-- Docker Image 내려받기
[root@localhost ~]# docker pull percona/pmm-server
Using default tag: latest
Trying to pull repository docker.io/percona/pmm-server ...
latest: Pulling from docker.io/percona/pmm-server
2d473b07cdd5: Pull complete
e05cef0f5a85: Pull complete
Digest: sha256:57a7a150218e35c0126466294367c18de12fe7d4b0076ab587684cc2110691ee
Status: Downloaded newer image for docker.io/percona/pmm-server:latest
-- Image 확인
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
percona/pmm-server latest 8a3a13ce2d13 2 months ago 2.39GB
-- PMM Data 컨테이너 생성
[root@localhost ~]# docker create -v /opt/prometheus/data -v /opt/consul-data -v /var/lib/mysql --name pmm-data percona/pmm-server /bin/true
-- 컨테이너 이미지 확인
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
19c3d34575dd percona/pmm-server "/bin/true" 28 hours ago Created pmm-data
-- PMM Server 컨테이너 실행
-- 외부에서 접속하는 port를 변경하여 설정이 가능하다 (80 -> 8080, 443 -> 4433)
[root@localhost ~]# docker run --detach --restart always --publish 8080:80 --publish 4433:443 --volumes-from pmm-data --name pmm-server percona/pmm-server
-- 현재 실행중인 컨테이너 확인
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
316dd71c0937 percona/pmm-server "/opt/entrypoint.sh" 28 hours ago Up 23 hours (healthy) 0.0.0.0:8080->80/tcp, :::8080->80/tcp, 0.0.0.0:4433->443/tcp, :::4433->443/tcp pmm-server
-- 컨테이너 중지
[root@localhost ~]# docker stop 316dd71c0937
-- 컨테이너 삭제
[root@localhost ~]# docker rm 316dd71c0937
3. PMM Server 접속
서버의 IP와 port를 확인해서 서버 콘솔을 접속한다.
url : http://서버 IP:8080
콘솔 접속시 최초 ip/password는 admin/admin이며 접속 후 password 변경화면이 나온다.


4. PMM Client 설치
PMM 서버설치가 끝났으면 Client를 설치하여 연결하면 된다.
-- yum repositories 등록
[root@mysql_test1 ~]# yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
-- pmm-client 설치
[root@mysql_test1 ~]# yum install -y pmm2-client
-- pmm-admin 설치 version 확인
[root@mysql_test1 ~]# pmm-admin --version
ProjectName: pmm-admin
Version: 2.42.0
PMMVersion: 2.42.0
Timestamp: 2024-06-06 15:28:26 (UTC)
FullCommit: 74e57527735bd062c4bd37adbd89c31bb14ebc15
[root@mysql_test1 ~]# systemctl status pmm-agent
● pmm-agent.service - pmm-agent
Loaded: loaded (/usr/lib/systemd/system/pmm-agent.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2022-01-27 14:01:19 KST; 3min 0s ago
Main PID: 3056 (pmm-agent)
CGroup: /system.slice/pmm-agent.service
└─3056 /usr/sbin/pmm-agent --config-file=/usr/local/percona/pmm2/config/pmm-agent.yaml
클라이언트 설치가 끝나면 Mysql parameter를 설정하여 PMM 계정 생성 및 performance_schema를 활성활 시켜준다.
PMM 계정 생성 및 권한 부여
-- 계정 생성
root@localhost:(none) > create user pmm@'127.0.0.1' identified by 'XXXX' WITH MAX_USER_CONNECTIONS 10;
-- 권한 부여
root@localhost:(none) > GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT, RELOAD, show view ON *.* TO 'pmm'@'127.0.0.1' ;
root@localhost:(none) > GRANT SELECT, UPDATE, DELETE, DROP ON performance_schema.* TO 'pmm'@'127.0.0.1';
Mysql 성능 모니터링을 위해서 slow query와 performance_schema 사용을 해야한다.
slow_query_log = ON
slow_query_log_file = /log/slow_query.log
long_query_time = 1
log_output = FILE
performance_schema=ON
PMM Server 등록
-- PMM Server 연결
[root@mysql_test1 ~]# pmm-admin config --server-insecure-tls --server-url=https://admin:XXXX@10.0.2.14:4433
pmm-agent is running.
Registering pmm-agent on PMM Server...
Registered.
Configuration file /usr/local/percona/pmm2/config/pmm-agent.yaml updated.
Reloading pmm-agent configuration...
Configuration reloaded.
Checking local pmm-agent status...
pmm-agent is running.
[root@mysql_test1 ~]#
-- confile 확인
[root@mysql_test1 ~]# cat /usr/local/percona/pmm2/config/pmm-agent.yaml
# Updated by `pmm-agent setup`.
---
id: /agent_id/bad3f41d-dfb0-4384-b718-3ab13bc996a7
listen-address: 127.0.0.1
listen-port: 7777
server:
address: 10.0.2.14:4433
username: admin
password: XXXX
insecure-tls: true
paths:
paths_base: /usr/local/percona/pmm2
exporters_base: /usr/local/percona/pmm2/exporters
node_exporter: /usr/local/percona/pmm2/exporters/node_exporter
mysqld_exporter: /usr/local/percona/pmm2/exporters/mysqld_exporter
mongodb_exporter: /usr/local/percona/pmm2/exporters/mongodb_exporter
postgres_exporter: /usr/local/percona/pmm2/exporters/postgres_exporter
proxysql_exporter: /usr/local/percona/pmm2/exporters/proxysql_exporter
rds_exporter: /usr/local/percona/pmm2/exporters/rds_exporter
azure_exporter: /usr/local/percona/pmm2/exporters/azure_exporter
vmagent: /usr/local/percona/pmm2/exporters/vmagent
tempdir: /tmp
pt_summary: /usr/local/percona/pmm2/tools/pt-summary
pt_pg_summary: /usr/local/percona/pmm2/tools/pt-pg-summary
pt_mysql_summary: /usr/local/percona/pmm2/tools/pt-mysql-summary
pt_mongodb_summary: /usr/local/percona/pmm2/tools/pt-mongodb-summary
ports:
min: 42000
max: 51999
debug: false
trace: false
[root@mysql_test1 ~]#
mysqld_exporter 연동
[root@mysql_test1 ~]# pmm-admin add mysql --query-source=perfschema --username=pmm --password=XXXX
MySQL Service added.
Service ID : /service_id/4fe4ddc3-c355-4e14-85f9-07d008f952dd
Service name: mysql_test1-mysql
Table statistics collection enabled (the limit is 1000, the actual table count is 328).
Dashboard 확인하여 연결 확인 및 QAM으로 service를 확인 할 수있다

E-Mail을 통한 Alert 기능
pmm 서버로 접속하여 grafana 설정파일로 SMTP 정보를 먼저 설정해 주어야 한다.
1. PMM 서버 설정
PMM 서버가 설치된 경로로 접어가서 grafana config 파일에 smtp를 설정한다.
-- docker 상태 확인
[root@pmm-server ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
316dd71c0937 percona/pmm-server "/opt/entrypoint.sh" 28 hours ago Up 23 hours (healthy) 0.0.0.0:8080->80/tcp, :::8080->80/tcp, 0.0.0.0:4433->443/tcp, :::4433->443/tcp pmm-server
-- docker 접속 (Image 명을 입력)
[root@pmm-server ~]# docker exec -it pmm-server /bin/bash
grafana 설정파일을 열어서 [smtp] 부분을 수정한다.
만약 password에 "#" 이나 ";" 이 들어 있으면 triple quotes로 묶어주어야 한다.
Example: """#password;"""
참조 : https://grafana.com/docs/grafana/latest/administration/configuration/
Configure Grafana | Grafana documentation
Enterprise Open source Configure Grafana You can use Grafana Cloud to avoid installing, maintaining, and scaling your own instance of Grafana. Create a free account to get started, which includes free forever access to 10k metrics, 50GB logs, 50GB traces,
grafana.com
[root@316dd71c0937 opt]# cd /etc/grafana
[root@316dd71c0937 grafana]# vi grafana.ini
#################################### SMTP / Emailing ##########################
[smtp]
enabled = true
host = smtp.gmail.com:587
user = xxx@gmail.com
password = "xxxxx"
;cert_file =
;key_file =
skip_verify = false
from_address = xxx@gmail.com
;from_name = Grafana
;EHLO identity in SMTP dialog (defaults to instance_name)
;ehlo_identity = dashboard.example.com
[emails]
;welcome_email_on_sign_up = false
smtp 설정이 완료되면 docker를 재기동 해줘야 한다.
[root@pmm-server ~]# docker restart pmm-server
2. PMM 콘솔 설정
PMM 콘솔창의 왼쪽 메뉴창에 Alert -> Contact points 메뉴를 클릭해서 다음과 같이 Mail 정보를 입력하고 Test를 눌러서 Mail이 오는지 테스트를 할 수 있다.

PMM(Grafana)에서 Email Alert 설정하기
Metric 임계치를 설정하여 임계치를 넘으면 여러가지 Alert 기능을 통해 실시간으로 서버의 상태를 모니터링 할 수 있다. E-Mail을 통한 Alert 기능 pmm 서버로 접속하여 grafana 설정파일로 SMTP 정보를 먼
m2seo.tistory.com
'MySQL' 카테고리의 다른 글
MySQL - InnoDBCluster 구성하기 (3) | 2024.08.30 |
---|---|
MySQL - MySQL8.0에서 server_id 변경하기 (0) | 2024.08.30 |
MySQL - binlog_format (1) | 2022.11.23 |
MySQL - (MHA)Master -Slave 동기화 깨졌을 경우 (2) | 2022.07.15 |
MySQL - Master-Slave 구성 (0) | 2022.05.16 |