본문 바로가기
Database/PMM

PMM 설치하기

by 화곡공룡 2022. 1. 27.
반응형

CentOS 7으로 설치 되었으며 OS 버전 정보는 아래와 같이 확인

[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core)​

1. Docker 설치

PMM 설치에 앞서 Docker를 설치하고 PMM 서버가 설치된 Docker 컨테이너를 내려 받아야 한다.

-- yum 업데이트를 해서 최신 패키지정보를 업데이트 한다.
[root@localhost ~]# yum -y update

-- Docker & Docker Registry 설치
[root@localhost ~]# yum -y install docker docker-registry
Docker가 설치되었으면 재기동시 자동으로 데몬이 올라올수 있게 서비스를 등록해준다.
 
-- 서비스 등록
[root@localhost ~]# systemctl enable docker.service
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 Thu 2022-01-27 11:28:03 KST; 52s ago
     Docs: http://docs.docker.com
 Main PID: 6017 (dockerd-current)
   CGroup: /system.slice/docker.service
           ├─6017 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path...
           └─6022 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/c...

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
docker.io/percona/pmm-server   latest              2cfce486d2a8        6 weeks ago         1.78 GB
[root@localhost ~]#

-- 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
724188b30b7c0d1d5655d328a769fe6ad16434df35b867497ef38d8644ef5a2c

-- 컨테이너 이미지 확인
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                COMMAND             CREATED             STATUS              PORTS               NAMES
724188b30b7c        percona/pmm-server   "/bin/true"         34 seconds 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
3ee95170ceeb8b59a5902095ff7b4338b3b06f03cd35d875f8a635e5d65a3d28

-- 현재 실행중인 컨테이너 확인
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                COMMAND                CREATED             STATUS                   PORTS                                         NAMES
3ee95170ceeb        percona/pmm-server   "/opt/entrypoint.sh"   2 minutes ago       Up 2 minutes (healthy)   0.0.0.0:8080->80/tcp, 0.0.0.0:4433->443/tcp   pmm-server

-- 컨테이너 중지
[root@localhost ~]# docker stop 3ee95170ceeb

-- 컨테이너 삭제
[root@localhost ~]# docker rm 3ee95170ceeb

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.25.0
PMMVersion: 2.25.0
Timestamp: 2021-12-13 09:38:36 (UTC)
FullCommit: 4b81157ad02975c417daef2600cb0dcd3907ffa1


[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 확인하면 아래와 같이 mysql 서버가 연결이 된것을 볼 수 있다.

 

 

 

PMM 이란? (DB 모니터링 솔루션)

Mysql DB를 운영하면서 DB 모니터링을 어떻게 할것인가 고민을 하게 되었다. 그래서 무료 Open 소스의 툴이 어떻게 있는지 살펴보던차에 PMM이라는 강력한 Open 소스 툴을 발견하게 되었다. ​ ​ PMM이

m2seo.tistory.com

 

 

PMM서버에 Windows Export 연동

PMM서버에 Windows Export 연동하기 PMM은 기본적으로 Open Source Database의 Metric 정보만 연동하기 때문에 Windows 서버는 지원하지 않는다. 하지만 Grafana Open Souce기반으로 만들어졌기때문에 Prometheus에서 제

m2seo.tistory.com

 

반응형

댓글