본문 바로가기

Monitoring/PMM

MySQL/Postgre/RDS 오픈소스 모니터링 툴 PMM(Percona Monitoring and Management) 구축

반응형

PMM

  • Percona에서 제공하는 프로메테우스+그라파나 기반의 오픈소스 DB 모니터링 툴

 

지원 DB

  • MySQL, MongoDB, PostgreSQL, Amazon RDS, Microsoft Azure, …
  • 오픈소스 DB 모니터링 지원

 

 

아래와 같은 로직으로 PMM-SERVER, PMM-CLIENT, DB-SERVER가 통신하는 방식이다.

 


 

장점

 

1. 상세 성능 지표 제공 및 커스터마이징 가능

  • DML/DDL 비율
  • Transaction(Commit/Rollback) 발생 비율
  • Temp, Sort 사용 비율
  • Select Type (Range, Full, …)
  • MySQL Uptime
  • Active Connection 수
  • Transaction Commit/Rollback
  • Transaction 수행시간
  • Deadlocks

해당 지표에 대한 상세 쿼리는 확인 불가능

커스터마이징을 통한 특정 DB의 데이터가 쌓이는 건수같은 부분은 실시간 확인 가능

 

 

 

 

2. 기간별 성능지표 그래프 제공

  • COMPARE기능을 사용하여 Weekly/Monthly 단위로 비교 가능

※ 비교하고 싶은 기간이 있다면 데이터 보관주기 변경 필요 (DEFAULT : 30)

 

 

3. 알람 지원

  • 일정 임계치를 초과한 SLOW QUERY에 대해 관제 설정 가능
  • SLACK 알람 지원
  • EMAIL/SMS의 경우 따로 서비스 구축 필요
  • SLOW QUERY 관제의 경우 임계치 초과시 알람은 발생하지만 상세 쿼리 조회는 PMM에서 불가능

디테일한 데이터 수집 필요시 수집 방식 중 SLOW QUERY LOG 방식 활용

  MySQL 5.5 이하 버전까지만 지원

 

 

4. MASTER/SLAVE 동기화 복제 모니터링 지원

 

  • PMM 내부 자체적으로 REPLICATION을 모니터링 해주는 대시보드 존재
  • 자동으로 MASTER/SLACE SINGLE 을 인식하여 모니터링 제공
  • REPLICATION이 깨질 경우 PMM을 통해 알람 발생 가능
 

 

5. 수행 쿼리 수집

  • 기존 쿼리 미수집으로 상세 관제 불가능한 부분 개선
  • 문제 쿼리 확인 용이
  • 쿼리 수행 시간, 로드 비율 관제 가능

※ 데이터 저장 방식

DB : PostgreSQL

관련 설정 제어 : /etc/grafana/grafana.ini

데이터 저장 경로 : /srv/postgres14

 

 

위의 내용에 대해서는 PMM에서 DEMO를 제공하고 있기 때문에 DEMO를 통해서도 확인 가능하다.

https://pmmdemo.percona.com/graph/

 

Grafana

If you're seeing this Grafana has failed to load its application files 1. This could be caused by your reverse proxy settings. 2. If you host grafana under subpath make sure your grafana.ini root_url setting includes subpath. If not using a reverse proxy m

pmmdemo.percona.com

 

 

 


PMM 구축

1. PMM SERVER 구축

1.1. PMM-SERVER에 docker 설치
[root@pmm-server]$ yum install docker -y


1.2. docker 구동 및 부팅시 자동시작 설정
[root@pmm-server]$ systemctl enable docker
[root@pmm-server]$ systemctl start docker



1.3. pmm-server Image 다운로드
[root@pmm-server]$ docker pull percona/pmm-server:2



1.4. pmm-server Image를 Container에 보관
[root@pmm-server]$ docker create -v /opt/prometheus/data -v /opt/consul-data -v /var/lib/mysql --name pmm-data percona/pmm-server:2 /bin/true



1.5. 설정 변경 후 신규 Container 생성 
restart always : 서비스 재부팅 후 실행 여부
publish : 접속 포트번호 지정
volumnes-from : 실행되는 도커 프로세스
name : 프로세스 접속시 사용할 이름 지정
[root@pmm-server]$ docker run --detach --restart always --publish 8080:80 --publish 4433:443 --volumes-from pmm-data --name pmm-server percona/pmm-server:2



1.6. Docker 프로세스 상태 확인
[root@pmm-server]$ docker ps -a


1.7. PMM DASHBOARD 접속 테스트
접속주소 : http://공인IP:8080 
초기 계정/비밀번호 : admin/admin

 

 

1.6. DOCKER 프로세스 상태 확인시 PMM-SERVER 상태(STATUS)

1. healty 상태

  • 정상적으로 서비스되고 있는 상태

2. Unhealthy 상태

  • 아래 사유들로 인해 정상적으로 프로세스가 떠있지 못한 상태
    • Case 1 : 공인 IP가 제대로 통신을 못하고 있을 경우
    • Case 2 : CPU 자원이 부족할 경우

※ Case 2 의 경우엔 pmm-server를 도커에 띄우자마자 CPU부하로 PMM-SERVER 접속조차 안될 수 있음

   → 초기 서버 구성시 PMM 권고하는 사항에 맞춰 구축 권장

 

 

1.7. DASHBOARD 접속시 발생 가능한 ERROR CODE

  • 500 : 서버 자원 부족
  • 502 : 네트워크 이슈

 

2. PMM CLIENT 구축

2.1. PMM-CLIENT 설치
[root@pmm-client]$ yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm



2.2. PMM-CLIENT 설치
[root@pmm-client]$ yum install -y pmm2-client
[root@pmm-client]$ pmm-admin –version



2.3. pmm-agent 구동 및 부팅시 자동시작 설정
[root@pmm-client]$ systemctl enable pmm-agent
[root@pmm-client]$ systemctl start pmm-agent



2.4. PMM-SERVER에 client 서버 연결
[root@pmm-client]$ pmm-admin config --server-insecure-tls --server-url=https://admin:'password'@pmm-server-ip:4433


2.5. MYSQL 모니터링 계정 생성
Mysql> CREATE USER pmm@’localhost’ IDENTIFIED BY ‘’ WITH MAX_USER_CONNECTIONS 10;
Mysql> GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT, RELOAD ON *.* TO 'pmm'@'localhost';

 

 

 

3. 모니터링 서버 추가

3.1.  모니터링할 DB 서버 연결

http://공인IP:8080 >우측 상단 PMM > Add instance

 

 

 

3.2. 연결 확인

완료되면 PMM Inventory > Services에서 Status : Up, Monitoring : OK로 출력

1~2분 정도 소요

 

 

 

4. 대시보드 커스터마이징

4.1. Configuration > Data Source > MySQL 검색 후 추가

 

 

4.2. 신규 DASHBOARDS 생성

Dashboard > new dashboard > Add a new panel 선택

 

4.3. 상세 모니터링 기준 설정

 

4.4. 확인

 

 

5. 알람 설정

5.1. 상세 RULE 설정

 

 

5.2. 알람 전송 방법 설정

 

 

5.3. DEFAULT CONTACK POINT 설정

 

 

 

5.4. 확인

 

반응형