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
Host | OS | RAM | CPU | Xotira |
---|---|---|---|---|
pmm-server | Ubuntu 20.04 yoki Rocky Linux 8 | 4GB | 2vCPU,1 core | 50GB |
postgres-server | Ubuntu 20.04 yoki Rocky Linux 8 | 4GB | 4vCPU,2 core | 50GB |
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-release
ni 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-release
ni 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_monitor
niu 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-url
da 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
- PostgreSQLga kirish (opens in a new tab)
- PostgreSQL Monitoring (opens in a new tab)
- PostgreSQL High-Availability Cluster (opens in a new tab)
Sana: 2024.12.07(2024-yil 7-dekabr)
Oxirgi yangilanish: 2024.12.07(2024-yil 7-dekabr)
Muallif: Otabek Ismoilov
Telegram (opens in a new tab) | Github (opens in a new tab) | LinkedIn (opens in a new tab) |
---|