Notice
Recent Posts
Recent Comments
Link
반응형
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

HeeLee_DBA

MySQL - PMM 구성 및 Alert(Email) 기능 본문

MySQL

MySQL - PMM 구성 및 Alert(Email) 기능

HeeLee_ 2024. 8. 20. 14:57
반응형

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로 테스트
 

- PMM 아키텍처 -

 
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 변경화면이 나온다.
 

- PMM 로그인 화면 -

 

- 홈 화면 -

 
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를 확인 할 수있다
 

- QAM -

 
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이 오는지 테스트를 할 수 있다.
 

- Email 등록 -

 
출처: https://m2seo.tistory.com/entry/PMMGrafana%EC%97%90%EC%84%9C-Email-Alert-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0

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