MySQL, MariaDB 오픈소스 모니터링 툴



 

Percona PMM server

페르코나는 MySQL 개발 하던 사람들이 나와서 MySQL 관련 컨설팅을 하면서 MySQL 강화 버전인 Percona-Server를 제공하는 회사입니다.

Percona-server는 xtraDB 라는 InnoDB 강화 버전의 엔진을 탑재한 MySQL 기반의 DB입니다.

Precona에서는 MySQL이나 MariaDB에서 사용 할 수 있는 무료 모니터링 툴을 제공하고 있는데, 그것이 PMM 서버입니다.

그라파나를 가지고 시각화 해주는 것인데, 템플릿 자체를 Percona 에서 미리 만들어서 제공을 합니다.

MongoDB나 postgresql 도 모니터링이 가능하다고 하는데 postgres는 약간 설정하는 방법이 다르고, 여기서는 다루지 않겠습니다.

 

Percona PMM-server 설치

설치는 Docker를 가지고 진행을 합니다.

$ docker pull percona/pmm-server:latest

데이터 컨테이너 생성

$ docker create -v /opt/prometheus/data -v /opt/consul-data -v /var/lib/mysql --name pmm-data percona/pmm-server

데이터 컨테이너만 있으면, PMM-server 컨테이너가 버전업이 되어도 지난 데이터를 가지고 올라옵니다.

PMM-server run

$ docker run -d -p 8000:80 --volumes-from pmm-data --name pmm-server --restart always percona/pmm-server

모니터링 데이터의 보관 주기를 설정하고자 한다면 docker run 옵션에 -e METRICS_RETENTION=192h (시간) 옵션을 주면 됩니다.

서버의 8000 포트를 이용해서 모니터링 화면을 볼수 있습니다.

PMM-server를 올리면 PMM-server가 올라간 장비의 OS 자원 사용량을 기본적으로 모니터링 할 수 있습니다.

저의 경우는 시놀로지 NAS의 Docker로 올렸기 때문에, 시놀로지 NAS서버의 자원 사용량을 볼수 있습니다.

 

PMM-client 설치

모니터링 할 서버 및 DB가 설치된 서버에 rpm 방식으로 설치하여 세팅하면 됩니다.

agent가 PMM–server 데이터를 전송하는 방식이며, Client에서 PMM-server 연결은 기본값은 80포트로(도커에서 80:80으로 포트를 설정했다면 80번으로 통신을 합니다.)하며

저같은 경우는 8000 번으로 설치 했기 때문에 8000번으로 통신을 하겠죠?

https://www.percona.com/downloads/pmm-client/LATEST/ 에서 최신버전을 구할 수 있으며 현재 최신버전은 1.17.1 입니다.

[root@client ~]# rpm -ivh pmm-client-1.0.4-1.x86_64.rpm

기본 설치 경로는 /usr/local/percona 입니다.

[root@client ~]# wget https://www.percona.com/downloads/pmm/1.17.1/binary/redhat/7/x86_64/pmm-client-1.17.1-1.el7.x86_64.rpm
[root@client ~]# rpm -ivh pmm-client-1.17.1-1.el7.x86_64.rpm

클라이언트를 받고 설치를 진행 합니다.

 

PMM-server 등록

pmm-admin config –client-name 클라이언트 호스트네임 –server PMM-server ip –bind-address 사설 ip –client-address 클라이언트 ip

[root@client ~]# pmm-admin config --client-name app.rastalion.me --server 192.168.10.115:8000 --client-address 192.168.10.102
OK, PMM server is alive.

PMM Server      | 192.168.10.115:8000 
Client Name     | app.rastalion.me
Client Address  | 192.168.10.102

클라이언트가 사설 IP를 사용한다면, –bind-address 옵션을 주셔야 합니다.

클라이언트 서버에 모니터링용 사설IP와 서비스용 공인 IP가 같이 설치되어 있다면, 추가적으로 –client-address 옵션을 주면 됩니다.

 

모니터링 서비스 등록하기

모니터링 서비스 영역에는 총 4가지가 있습니다.

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

이 외에 SET로 구성된 것도 있습니다.

  • mysql : linux:metrics + mysql:metrics + mysql:queries
  • mongodb : linux:metrics + mongodb:metrics

개별적으로 하나씩 등록해도 되지만 간단하게 mysql 이나 mongodb 같은 셋트영역을 사용하면 됩니다.

Linux 만 등록 할 때

[root@client ~]# pmm-admin add linux:metrics 
OK, now monitoring this system.
[root@client ~]# pmm-admin list
pmm-admin 1.17.1

PMM Server      | 192.168.10.115:8000 
Client Name     | app.rastalion.me
Client Address  | 192.168.10.102
Service Manager | linux-systemd

-------------- ----------------- ----------- -------- ------------ --------
SERVICE TYPE   NAME              LOCAL PORT  RUNNING  DATA SOURCE  OPTIONS 
-------------- ----------------- ----------- -------- ------------ --------
linux:metrics  app.rastalion.me  42000       YES      -
[root@client ~]# pmm-admin check-network
PMM Network Status

Server Address | 192.168.10.115:8000
Client Address | 192.168.10.102

* System Time
NTP Server (0.pool.ntp.org)         | 2019-04-04 11:22:15 +0000 UTC
PMM Server                          | 2019-04-04 11:22:15 +0000 GMT
PMM Client                          | 2019-04-04 20:22:15 +0900 KST
PMM Server Time Drift               | OK
PMM Client Time Drift               | OK
PMM Client to PMM Server Time Drift | OK

* Connection: Client --> Server
-------------------- -------      
SERVER SERVICE       STATUS       
-------------------- -------      
Consul API           OK
Prometheus API       OK
Query Analytics API  OK

Connection duration | 712.638µs
Request duration    | 7.894641ms
Full round trip     | 8.607279ms


* Connection: Client <-- Server
-------------- ----------------- --------------------- ------- ---------- ---------
SERVICE TYPE   NAME              REMOTE ENDPOINT       STATUS  HTTPS/TLS  PASSWORD 
-------------- ----------------- --------------------- ------- ---------- ---------
linux:metrics  app.rastalion.me  192.168.10.102:42000  OK      YES        -      

만약 pmm-admin check-network 명령을 쳤을때 status 가 Down으로 보일때는 방화벽 체크를 해줘야 합니다.

server-client 통신에 42000번 포트가 막혀있어서 그런겁니다.

MySQL 이나 MariaDB를 모니터링 할때는 42002포트가 기본값이며, Mongo는 42003번 , add 옵션으로 등록 할 때 포트를 변경할 수도 있습니다.

모니터링이 쌓이면 그래프가 보이기 시작합니다.



You may also like...

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다