Percona Monitoring and Management (PMM) benim open-source database’leri monitor etmek için en çok kullandığım uygulama. Bu uygulama sayesinde MySQL, Percona MySQL, MongoDB, PostgreSQL database’lerinin bir çok metriğini izleyebilirsiniz. Hatta işletim sistemi seviyesinde de cpu, io, network vs. metrikleri de izleyip herhangi bir sorun anında bottleneck’i çok hızlı tespit edebilirsiniz. Bu tool bir çok ortamda hayat kurtardı. Open-source database’leriniz için (hatta bazen sadece işletim sistemini izlemek için bile kullanıyorum) şiddetle öneririm.
Bu makalede de bu tool’un kurulumundan bahsedeceğim. Docker üzerine çalışacak olan bu tool kolay deploy edilme ve kolay yönetimi sayesinde dakikalar içinde kullanıma hazır hale geliyor.
Server client mimarisinde çalışan tool için minimum 4 cpu 8GB RAM’li sanal bir makine yeterli olacaktır. Şimdi hızlıca kurulumuna geçelim.
Not: Monitor edilecek ortam sayısı ve metriğe göre bu sayıları arttırmak gerekebilir. PMM2 versiyonu ile birlikte ciddi iyileştirmeler geldi ancak yine de ara ara pmm-server’ın metriklerine göz atıp cpu veya io’da bir bottleneck olup olmadığına bakmakta fayda var. Yoksa ekranlar oldukça yavaş gelecektir.
Docker Kurulumu
[root@pmm ~]# yum install -y yum-utils
[root@pmm ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
[root@pmm ~]# yum install docker-ce docker-ce-cli containerd.io
[root@pmm ~]# rpm -qa |grep -i docker
docker-ce-20.10.3-3.el7.x86_64
docker-ce-cli-20.10.3-3.el7.x86_64
docker-ce-rootless-extras-20.10.3-3.el7.x86_64
[root@pmm ~]# systemctl start docker
PMM Server Kurulumu
[root@pmm ~]# docker pull percona/pmm-server:2
2: Pulling from percona/pmm-server
2d473b07cdd5: Pull complete
70acf2a23802: Pull complete
Digest: sha256:d774c291f904321147671dabc74c12f8b3f4a45f83179545024abe17727618c7
Status: Downloaded newer image for percona/pmm-server:2
docker.io/percona/pmm-server:2
[root@pmm ~]# docker create --volume /srv \
> --name pmm-data percona/pmm-server:2 /bin/true
48584e5b9fb6291880078a34d203a1e8b8b070ddbe452cefcc1ec073e9d628e7
[root@pmm ~]# docker run --detach --restart always \
--publish 80:80 --publish 443:443 \
--volumes-from pmm-data --name pmm-server \
percona/pmm-server:2
91d63e3ebffbd013ae39c409519d0455401b6c226a7e7a03372645fc83ddaa44
[root@pmm ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
91d63e3ebffb percona/pmm-server:2 "/opt/entrypoint.sh" 4 seconds ago Up 3 seconds (health: starting) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp pmm-server
[root@pmm ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
91d63e3ebffb percona/pmm-server:2 "/opt/entrypoint.sh" 9 seconds ago Up 8 seconds (healthy) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp pmm-server
username : admin, password: admin ile girdiğimde ise home ekranı aşağıdaki gibi.
Server kurulumu bu kadar basit. Bundan sonraki kısım monitor edilecek client’ları eklemek. Server’ın defaultta OS metriklerinin PMM’e eklendiğini görebilirsiniz. PMM Server’da yaşanacak darboğazları yine bu ekranlardan monitor edebilirsiniz.
Services –> Nodes Overview –> OS –> Node Summary
PMM Client Yüklenmesi
Şimdi üzerinde PostgreSQL çalışan başka bir centos sunucuyu monitor edeceğim.
[root@db3 ~]# yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
[root@db3 ~]# yum install pmm2-client
[root@db3 ~]# pmm-admin config --server-insecure-tls --server-url=https://admin:admin@192.168.33.12: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@db3 ~]# pmm-admin status
Agent ID: /agent_id/f137554e-262c-478a-beb5-63a8f393006f
Node ID : /node_id/37dfddf3-38a8-40b6-9e88-4c8493bd6ca6
PMM Server:
URL : https://192.168.33.12:443/
Version: 2.14.0
PMM Client:
Connected : true
Time drift : -1.141068ms
Latency : 440.908µs
pmm-admin version: 2.14.0
pmm-agent version: 2.14.0
Agents:
/agent_id/be56d06e-a678-4afd-a83c-db6d98d42b6d vmagent Running
/agent_id/fea6f1a1-394b-47bb-b09d-635c381e5098 node_exporter Running
[root@db3 ~]# pmm-admin list
Service type Service name Address and port Service ID
Agent type Status Metrics Mode Agent ID Service ID
pmm_agent Connected /agent_id/f137554e-262c-478a-beb5-63a8f393006f
node_exporter Running push /agent_id/fea6f1a1-394b-47bb-b09d-635c381e5098
vmagent Running push /agent_id/be56d06e-a678-4afd-a83c-db6d98d42b6d
PostgreSQL Monitoring
[root@db3 ~]# yum install -y postgresql13-contrib
-- Aşağıdaki parametreler postgresql conf dosyasına eklenir.
shared_preload_libraries = 'pg_stat_statements'
track_activity_query_size = 2048 # Increase tracked query string size
pg_stat_statements.track = all # Track all statements including nested
-- PostgreSQL restart edilir ve extension create edilir.
[root@db3 ~]# systemctl restart postgresql-13.service
-bash-4.2$ /usr/pgsql-13/bin/psql
psql (13.1)
Type "help" for help.
postgres=# CREATE EXTENSION pg_stat_statements SCHEMA public;
CREATE EXTENSION
postgres=# CREATE USER pmm_user WITH SUPERUSER ENCRYPTED PASSWORD 'root123';
CREATE ROLE
[root@db3 ~]# pmm-admin add postgresql --username=pmm_user --password=root123 postgres 127.0.0.1:5432
PostgreSQL Service added.
Service ID : /service_id/03ca9e65-280d-41a9-8579-f120675e9337
Service name: postgres
Gördüğünüz gibi oldukça kullanışlı metrikler var. Bir sonraki yazımda QAN (Query Analytics) üzerinden database’e gelen sorguları inceleyeceğiz.
Umarım faydalı olmuştur.
Kaynaklar;
https://www.percona.com/doc/percona-monitoring-and-management/2.x/index.html