Skip to content
Dokumentatsiya
PMM bilan PostgreSQL Monitoring

Percona PMM bilan PostgreSQL monitoring

Kirish

Hozirgi zamonaviy IT infratuzilmalarida monitoring tizimlari katta ahamiyat kasb etadi. Tizim holatini kuzatish va uning ishlash samaradorligini oshirish uchun monitoring tollari zarur. Shu maqsadda, ushbu qo'llanmada Percona Monitoring and Management (PMM) yordamida PostgreSQL monitoringini haqida bo'ladi bugungi amaliyotimiz

Percona - open source ma'lumotlar bazalari uchun yuqori sifatli servicelar va tollar ishlab chiqaruvchi yetakchi kompaniyalardan biridir. U MySQL, PostgreSQL va MongoDB kabi ma'lumotlar bazalari bilan ishlashni soddalashtiruvchi yechimlar taqdim etadi. Percona Monitoring and Management (PMM) esa ma'lumotlar bazalari va serverlarni kuzatish, analiz qilish va boshqarish uchun kuchli vosita hisoblanadi.

PostgreSQL - yuqori darajada kengaytiriladigan va mustahkam open source ma'lumotlar bazasi tizimi bo'lib, dunyo bo'ylab keng qo'llaniladi. Uni samarali boshqarish uchun monitoring juda muhimdir. Monitoring orqali tizim yuklamasini(load) kuzatish va muvozanatni ta'minlash, write va read jarayonlarining samaradorligini oshirish, resurslardan samarali foydalanish va nosozliklarni oldindan aniqlash kabi maqsadlarga erishish mumkin.

Ushbu qo'llanma davomida biz Percona PMM yordamida PostgreSQL monitoringini bosqichma-bosqich ko'rib chiqamiz. Sizga PMM o'rnatish, sozlash va undan foydalanish jarayonlarini amaliy misollar bilan ko'rsatamiz.

Ishni boshlash

Ushbu amaliyotni amalga oshirish uchun bizga quyidagi minimum server talablaridagi server kerak bo'ladi.

Minimum Server talabi

Eslatma: Server Linux OS ning qaysi distroligi muhim emas bu qo'llanmada Red Hat based va Debian based serverlarda ko'rsatiladi

HostOSRAMCPUXotira
pmm-serverUbuntu 20.04 yoki Rocky Linux 84GB2vCPU,1 core50GB
postgres-serverUbuntu 20.04 yoki Rocky Linux 84GB4vCPU,2 core50GB

PMM bir nechta asosiy komponentlardan tashkil topgan:

  • PMM Server-> PMM Server barcha ma'lumotlarni yig'ib, saqlab va vizualizatsiya qilish uchun markaziy rolni o'ynaydi. U Prometheus yordamida ma'lumotlarni yig'adi va VictoriaMetrics yoki ClickHouse kabi ma'lumotlar bazalarida saqlaydi. Grafana bu ma'lumotlarni grafikalar ko'rinishida taqdim etadi, bu esa foydalanuvchiga tizim holatini real vaqt rejimida kuzatish imkonini beradi.

  • PMM Client-> PMM Agent monitoring qilinayotgan serverlarga o'rnatiladi va ma'lumotlarni to'plab PMM Server'ga uzatadi. U turli servicelar uchun metrikalarni yig'ish va kuzatish vazifasini bajaradi, masalan, Node Exporter yordamida server resurslarini, Database Exporter orqali ma'lumotlar bazasining ichki metrikalarini, va QAN Agent yordamida querylarni(so'rovlarni) tahlil qilishni amalga oshiradi.

  • Query Analytics-> PMMning yana bir muhim komponenti bu Query Analytics (QAN) bo'lib, u ma'lumotlar bazasidagi querylarni tahlil qiladi va samaradorligini baholaydi. Bu sekin ishlayotgan yoki resurslarni ko'p talab qiladigan querylarni aniqlash va optimallashtirishga yordam beradi.

PMM componentlarini quyidagi percona rasmiy sahifasida ko'rishingiz mumkin - PMM components and versions (opens in a new tab)

PMM arxitketurasini quyidagi rasmda ko'rishingiz mumkin(Rasm olingna sahifa (opens in a new tab))

PMM server o'rnatish

Hammasi bilan tanishib chiqganimizdan keyin ishni boshlasak ham bo'ladi monitoring uchun ajratilgan serverimizga PMM serverni Docker yordamida o'rnatamiz.

Agar serveringizda Docker o'rnatilmagan bo'lsa quyidagi qo'llanma yordami Docker o'rnatib olishingiz mumkin. - Linux serverlarga Docker o'rnatish (opens in a new tab)

1-> PMM server malumotlarini saqlash uchun docker volumedan foydalanadi bu qo'llanmada biz host-pathdan foydalanamiz. PMM server malumotlarini saqlash uchun directoriya ochib olamiz.

mkdir -p /mnt/pmm
chmod 0755 /mnt/pmm

2-> PMM docker imageni pull qilib olamiz.

docker pull percona/pmm-server:2

3-> PMM serverni ishga tushiramiz.

docker run -d \
  --name pmm-server \
  --restart always \
  -p 443:443 \
  -p 80:80 \
  -v /mnt/pmm:/srv \
  percona/pmm-server:2

4-> PMM serverni Docker yordamida ishga tushirganimizdan keyin 1-daqida kutib keyin container ichiga kirib admin parol qo'yishimiz kerak bo'ladi.

docker exec -t pmm-server change-admin-password parolimiziLIR34123

Parol qo'yganimizda rasmdagidek bo'lishi kerak.

5-> Brazuer orqali serveringiz IPsiga 80 portga kirsangiz sizda PMM server Grafana ochilishi kerak rasmdagidek. Bu yerda default user admin parol esa yuqorida qo'ygan parolimiz bizning holatda parolimiziLIR34123.

PMM serverga login qilib kirganingizda sizda default Home Dashbord ochilishi kerak.

Okeyy PMM serverni o'rnatib sozlab oldik endi PMM client o'rnatishimiz kerak.

PMM client o'rnatish

1-> PMM clientni paketini serverlarimizga o'rnatamiz.

Debian-based serverlar uchun

1-> Repositoriyani sozlab olamiz

wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
dpkg -i percona-release_latest.generic_all.deb

2-> PMM clientni install qilamiz.

sudo apt update
sudo apt install -y pmm2-client

3-> Versiyasini tekshiramiz.

pmm-admin --version

Redhat-based serverlar uchun

1-> Repositoriyani sozlab olamiz

sudo yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm

2-> PMM clientni install qilamiz.

sudo yum install -y pmm2-client

3-> Versiyasini tekshiramiz.

pmm-admin --version

2-> PMM client o'rnatib olganimizdan keyin uni PMM serverga register qilib qo'shishimiz kerak bo'ladi, buning uchun quyidagi buyruqdan foydalanamiz.

pmm-admin config --server-insecure-tls --server-url=https://admin:parolimiziLIR34123@137.184.123.133:443 143.198.149.142 generic dev-postgres

Keling bu buyruqni tushuntirib beraman.

  • pmm-admin config Ushbu buyruq yordamida PMM Agent PMM Server bilan bog'lanadi.

  • --server-insecure-tls PMM Server sertifikati self-signed bo'lsa, bu parametr TLS sertifikatni tekshirishni ochiradi, ya'ni sertifikatning haqiqiyligini tekshirish talab qilinmaydi.

  • --server-url=https://admin:parolimiziLIR34123@137.184.123.133 Bu URL shuni anglatadi: https - PMM Serverga HTTPS orqali ulanishni bildiradi. admin:parolimiziLIR34123- PMM Serverdagi admin login va parol. 137.184.123.133:443 - PMM Server IP manzili va port (443 HTTPS uchun standart port).

  • 143.198.149.142 Bu PMM Agent o'rnatilgan va kuzatilayotgan serverning IP manzili, agent qaysi serverda ishlayotganligini ko'rsatadi.

  • generic Node turi. generic PMM Agent uchun umumiy turdagi serverni bildiradi.

  • dev-postgres Bu monitoring qilinayotgan serverning nomi. PMM Server interfeysida ushbu nom bilan ko'rinadi.

3-> PMM Server dashbaordga kirib Node Names bo'limini ochganimizda bizning register qilgan serverimiz chiqishi kerak.

PostgreSQL'ga PMM client o'rnatish

Yuyorida biz PMM server va PMM client o'rnatib sozlab oldik. Bu bosqichda biz PostgreSQL'ga PMM PostgreSQL monitoring uchun kerakli tollarni o'rnatib config qilib PMM serverga ulaymiz.

Agar serveringizda PostgreSQL o'rnatilmagan bo'lsa quyidagi qo'llanma yordami PostgreSQL o'rnatib olishingiz mumkin. - Linux Serverlarga Postgresql o'rnatish (opens in a new tab).

Amaliyotda ishlatilgan PostgreSQl versiyasi 17

pmm userini sozlash

1-> PMM uchun PostgreSQL'da super user ochib parol qo'yishimiz kerak bo'ladi.

sudo -u postgres psql
CREATE USER pmm WITH SUPERUSER ENCRYPTED PASSWORD 'parolcha03jldOSL';

2-> PMM client PostgreSQL bazaga local ulanishi uchun pg_hba.conf ni quyidagicha config qilishimiz kerak.

Debian based serverlar uchun pg_hba.conf config fayli /etc/postgresql/{postgres-versiyasi}/main/pg_hba.conf da joylashgan bo'ladi

sudo nano /etc/postgresql/17/main/pg_hba.conf

RedHat based serverlar uchun pg_hba.conf config fayli /var/lib/pgsql/{postgres-versiyasi}/data/pg_hba.conf da joylashgan bo'ladi

sudo nano /var/lib/pgsql/17/data/pg_hba.conf 
local   all             pmm                                     md5
# Database administrative login by Unix domain socket
local   all             postgres                                peer
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256
host    all             all              0.0.0.0/0              md5
host    all             all              ::/0                   md5
local   all             pmm                                     md5

3-> Konfiguratsiyadan keyin konfiglarni qayta yuklash kerak bo'ladi.

su - postgres
psql -c "select pg_reload_conf()"

4-> Tekshirib ko'rishimiz mumkin, parol so'ralganda pmm userni parolini kiritamiz.

psql -h localhost -U pmm -d postgres -c "\conninfo"

percona-release o'rnatish

PostgreSQL monitoring qilish uchun postgres extensionlar o'rnatishimiz kerak bo'ladi bunda rasmiy postgresqlning pg_stat_statements extensioni va perconaning pg_stat_monitor extensioni bor bu amaliyotda biz pg_stat_monitor extensiondan foydalanamiz.

Buning uchun pg_stat_monitor extensionni o'rnatib olishimiz kerak bo'ladi, undan oldin esa percona-release o'rnatishimiz kerak bo'ladi

Debian-based serverlar uchun

1-> Kerakli tollarni isntall qilib olamiz.

sudo apt update
sudo apt install curl

2-> percona-release repositoriya paketini yuklab olamiz.

curl -O https://repo.percona.com/apt/percona-release_latest.generic_all.deb

3-> percona-releaseni install qilamiz.

sudo apt install gnupg2 lsb-release ./percona-release_latest.generic_all.deb

4-> Repolarni yangilaymiz.

sudo apt update

Redhat-based serverlar uchun

1-> percona-releaseni install qilamiz.

sudo yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm

pg_stat_monitor o'rnatish va config qilish

percona-release o'rnatilgandan keyin pg_stat_monitorniu o'rnatib sozlasak bo'ladi.

1-> Percona repositoriyani enable qilishimiz kerak postgres versiyamizga mosini, bizning holatimizda postgres versiyasi 17 shuning uchun ppg17 agar 16 bo'lsa ppg16.

sudo percona-release setup ppg17

pg_stat_monitor paketini o'rnatamiz.

Debian based serverlar uchun

sudo apt-get install percona-pg-stat-monitor17

Redhat based serverlar uchun

sudo yum install percona-pg-stat-monitor17

2-> pg_stat_monitor o'rnatganimizdan keyin postgresqlga extension qilib config qilishimiz kerak bo'ladi.

Debian based serverlar uchun postgresql.conf config fayli /etc/postgresql/{postgres-versiyasi}/main/postgresql.conf da joylashgan bo'ladi

sudo nano /etc/postgresql/17/main/postgresql.conf

RedHat based serverlar uchun postgresql.conf config fayli /var/lib/pgsql/{postgres-versiyasi}/data/postgresql.conf da joylashgan bo'ladi

sudo nano /var/lib/pgsql/17/data/postgresql.conf 
shared_preload_libraries = 'pg_stat_monitor'
pg_stat_monitor.pgsm_query_max_len = 2048
pg_stat_monitor.pgsm_normalized_query = on
pg_stat_monitor.pgsm_enable_query_plan = on

3-> Konfiguratsiyadan keyin postgresqlga reload beramiz.

# Debin-based
sudo systemctl reload postgresql
# Redhat based
sudo systemctl reload postgresql-17

4-> Posgresqlda extension yaratamiz.

sudo -u postgres psql
CREATE EXTENSION pg_stat_monitor;
\q

5-> Versiyasini tekshiramiz.

sudo -u postgres psql
SELECT pg_stat_monitor_version();
\q

6-> PMM postgres clientni endi PMM serverga ulashimiz kerak bo'ladi.

pmm-admin add postgresql \
--username=pmm \
--password=parolcha03jldOSL \
--server-url=https://admin:parolimiziLIR34123@137.184.123.133:443 \
--server-insecure-tls \
--service-name=dev-postgres

Bunda --username postgresdagi pmm user, --password esa postgres pmm userning paroli va --server-urlda PMM server crdentialslari.

7-> Postgres ulangani quyidagi buyruq orqali ko'rishingiz mumkin, servicelar statusi Running

pmm-admin list

Dashboardlar bilan ishlash

Okey biz yuqorida PMM server o'rnatib sozladik PMM client o'rnatib PMM serverga register qildik va Postgresql'ga pg_stat_monitor o'rnatib PMM serverga bo'gladik va biz eng oxirgi bosqichga Monitoring Dashboardlar bilan ishlash bosqichiga keldik.

Percona PMM Home dashboardi quyidagicha ko'rinishda bo'ladi.

Chap tomonda bo'limlarda PostgreSQL bo'limi bor uni ochib ko'rishingiz mumkin.

Bu qismda Node Name va Service Namedda biz qo'shgan server va service nomi chiqishi kerak.

Umumiy PostgreSQL dashboard quyidagicha bo'lishi kerak.

Percona PMM yana bir juda kerakli xususiyati bu Query Analytics(QAN) hisoblanadi. Keling uni sinab ko'ramiz. Har bir queryni ochib analiz qilishimiz ham mumkin.

PostgreSQL bo'limini ochsak bir nechta dashboardlar chiqadi. Dashboardlar orasida PostgreSQL Instance Compare dashboardi ham juda foydali u bilan siz bir nechta PostgreSQL bazalarini tenglashtirib monitoring qilishingiz mumkin.

Percona PMM databazalardan tashqari OS'ni ham monitoring qiladi, quyida Dashboardlar ro'yxati. Percona OS monitoringda ham Node Compare dashboardi bor u bilan serverlaringizni taqqoslab monitoring qilsangiz bo'ladi.

Qo'shimcha