[ PMM - DB monitoring 서버 구축 ]

안녕하세요 이번 글에선 도커를 이용하여 기본 PMM percona 모니터링 서버 구축해보도록 하겠습니다.

 

 

 

PMM 이란

 

PMM은 서버 클라이언트 형태로 MySQL(MariaDB), MongoDB를 모니터할수 있는 플랫폼입니다.

PMM Server는 Docker 이미지로 배포됩니다. 따라서 docker 설치 후 컨테이너 생성

 • PMM Client : 모니터링하고자 하는 DB서버에 직접 설치한다. 서버정보, DB정보, 쿼리정보등을 수집해 PMM Server로 보내준다.
 • PMM Server : PMM Client에서 수집된 데이터를 저장하고 이를 이용해 웹기반의 대시보드와 그래프를 보여준다.

 

 

 

 

공식 문서 

 

 PMM 설치

 

■ PMM server 설치

## OS 버전에 맞게 설치 진행을 위해 yum update 실행
[root@pmm-server ~]# yum -y update

[root@pmm-server ~]# yum -y install docker


[root@pmm-server ~]# systemctl start docker


[root@pmm-server ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2022-02-14 11:00:20 KST; 8s ago
     Docs: http://docs.docker.com
Main PID: 100307 (dockerd-current)
   CGroup: /system.slice/docker.service
           ├─100307 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker...
           └─100313 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontai...

Feb 14 11:00:20 pmm-server dockerd-current[100307]: time="2022-02-14T11:00:20.338205061+...m"
Feb 14 11:00:20 pmm-server dockerd-current[100307]: time="2022-02-14T11:00:20.365038793+...s"
Feb 14 11:00:20 pmm-server dockerd-current[100307]: time="2022-02-14T11:00:20.365721597+...."
Feb 14 11:00:20 pmm-server dockerd-current[100307]: time="2022-02-14T11:00:20.528238421+...e"
Feb 14 11:00:20 pmm-server dockerd-current[100307]: time="2022-02-14T11:00:20.682078827+...s"
Feb 14 11:00:20 pmm-server dockerd-current[100307]: time="2022-02-14T11:00:20.745579292+...."
Feb 14 11:00:20 pmm-server dockerd-current[100307]: time="2022-02-14T11:00:20.763246503+...n"
Feb 14 11:00:20 pmm-server dockerd-current[100307]: time="2022-02-14T11:00:20.763296062+....1
Feb 14 11:00:20 pmm-server dockerd-current[100307]: time="2022-02-14T11:00:20.775375713+...k"
Feb 14 11:00:20 pmm-server systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.




## 도커 이미지 받기
[root@pmm-server ~]# 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
9ecaf2bf2dc5: Pull complete
Digest: sha256:87b976d11aa54cdd5685a1a357c1b8086e5b613f5c74f52d0776c7fdae9b195d
Status: Downloaded newer image for docker.io/percona/pmm-server:latest




## 도커 이미지 확인
[root@pmm-server ~]# docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
docker.io/percona/pmm-server   latest              2e9948a25f8e        10 days ago         1.77 GB




## 받아온 이미지를 통해 PMM-data 컨테이너 생성
[root@pmm-server ~]# docker create -v /srv --name pmm-data percona/pmm-server:2 /bin/true
5ce5f4e819eb053e0daf2d43ad44d23c6149090a8758c743d2dde284954ae616




## PMM 서버 컨테이너 실행
※ 이미 80 포트를 쓰고있어서 에러가 났다..zabbix-server에서 사용하고 있어서 해당 에러난 container 삭제후 8080포트로 다시 만들었다.
[root@pmm-server ~]# docker run -d  -p 8080:80  -p 443:443  --volumes-from pmm-data  --name pmm-server  --restart always   percona/pmm-server:2
c466e7c8b928566cc7a933676c618b476aec38804ef55616e2e8d231d616e376



## 생성한 컨테이너 확인
[root@pmm-server ~]# docker ps
CONTAINER     ID        IMAGE         COMMAND       CREATED        STATUS           PORTS             NAMES
c466e7c8b928        percona/pmm-server:2   "/opt/entrypoint.sh"   About a minute ago   Up About a minute (healthy)   0.0.0.0:443->443/tcp, 0.0.0.0:8080->80/tcp   pmm-server
 
 
 
 
 

 PMM Client 설치(db node)

Client는 모니터링 할 DB서버에 설치되고 각종 데이터를 수집해 수집된 데이터는 Server로 보내줍니다.
(Client에서 Server로 데이터를 밀어주는 방식. 따라서 Client에서 Server를 등록해줘야 합니다.)
 
설치시 기본 경로 : /usr/local/percona/
## RPM 설치
[root@node1 ~]# rpm -ivh pmm2-client-2.18.0-6.el7.x86_64.rpm
warning: pmm2-client-2.18.0-6.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 8507efa5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:pmm2-client-2.18.0-6.el7         ################################# [100%]




모니터링 서비스 영역
• linux:metrics : 시스템 자체의 모니터링
• mysql:metrics : MySQL 인스턴스의 모니터링
• mysql:queries : 쿼리 모니터링
• mongodb:metrics : MongoDB 인스턴스의 모니터링





[root@node1 ~]# pmm-admin config --server-insecure-tls --server-url=https://admin:admin@192.168.100.55:443
Checking local pmm-agent status...
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@node1 ~]# pmm-admin add mysql --query-source=perfschema --username=root --password=root 127.0.0.1:3306
MySQL Service added.
Service ID  : /service_id/1e535bf9-5e67-4086-bbc9-80458af188fc
Service name: 127.0.0.1:3306

Table statistics collection enabled (the limit is 1000, the actual table count is 181).





## 등록 확인
[root@node1 ~]# pmm-admin list
Service type        Service name          Address and port        Service ID
MySQL               127.0.0.1:3306        127.0.0.1:3306          /service_id/1e535bf9-5e67-4086-bbc9-80458af188fc

Agent type                    Status           Metrics Mode        Agent ID                                              Service ID
pmm_agent                     Connected                            /agent_id/3e89d4e1-23ee-4765-8d61-8d45dade27ed         
node_exporter                 Running          push                /agent_id/8e6e0b4b-8d87-48ea-a447-aef6a448e0c2         
mysqld_exporter               Running          push                /agent_id/72415484-502d-4df0-844e-34f8ed1c8c1a        /service_id/1e535bf9-5e67-4086-bbc9-80458af188fc
mysql_perfschema_agent        Running                              /agent_id/9e3b0b36-dac5-4f6d-8e00-68c8e7bae389        /service_id/1e535bf9-5e67-4086-bbc9-80458af188fc
vmagent                       Running          push                /agent_id/9d11beb5-fc48-4699-b286-c3c6a4e3fa72

 

※ local pc의 ip를 pmm server에 8080으로 접속하면 80포트로 도커 컨테이너로 보내준다.

 
 
 

 WEB 접속

http://서버아이피/graph
 
 
 
 

 node1 을 정보를 볼 수 있습니다.

 
 
 

 좌측 바에서 PMM dashboards-> MYSQL -> MYSQL Overview

DB connection, Client Threads 등 DB정보 확인 가능

 
 
 
 

 

참고