Menggunakan Percona untuk Memantau dan Mengelola PgBouncer dan HAProxy PostgreSQL Anda
Pada artikel ini, kami akan memperkenalkan alat bernama " Percona Monitoring and Management " yang merupakan solusi pemantauan, pengelolaan, dan observasi database sumber terbuka untuk database populer yang tersedia di pasar seperti MySQL, PostgreSQL, dan MongoDB. Situs web resmi di bawah ini menunjukkan fungsi penting PMM (Percona Monitoring and Management).
- Memungkinkan pengguna untuk mengamati kesehatan sistem database mereka
- Jelajahi pola perilakunya, pecahkan masalah, dan lakukan tugas manajemen database kapan saja.
- PMM mengumpulkan metrik kinerja dari database dan layanan pendukung lainnya, lalu menampilkan data yang divisualisasikan di dasbor UI web
Kita harus melakukan pemantauan basis data untuk mengetahui masalah basis data pada waktunya, yang dapat membantu aplikasi/sistem tetap sehat dan dapat diakses. Administrator basis data dapat memilih untuk memantau basis data secara manual, namun pilihan ini memakan waktu dan pendekatan yang tidak efisien. Dengan memilih alat seperti Percona, kami yakin alat ini akan membantu produktivitas dan efisiensi tugas pemantauan Anda.
Dalam percobaan kami, kami telah menyiapkan Server Pemantauan dan Manajemen Percona menggunakan buruh pelabuhan dan memantau 3 layanan PostgreSQL, PgBouncer, dan HAProxy seperti yang ditunjukkan pada contoh arsitektur lingkungan database di bawah ini.
Prasyarat
- Docker diinstal pada cluster database (Master, dan 2 Standby) yang digunakan untuk mengekspos statistik atau matriks Pgbouncer, pengumpulan setiap cluster database.
- Docker yang diinstal pada host pemantauan bertindak sebagai server PMM.
1. PASANG SERVER PEMANTAUAN DAN MANAJEMEN PERCONA (SERVER PMM)
Gunakan tautan ini untuk metode skrip pemasangan mudah yang disediakan oleh tim Percona atau Anda dapat mencoba metode pengaturan lain berdasarkan lingkungan Anda. Bagi kami, kami menggunakan perintah berikut untuk menyelesaikannya.
#get percona images from docker hub
docker pull registry.hub.docker.com/percona/pmm-server:2
wget https://www.percona.com/get/pmm
. pmm -r registry.hub.docker.com/percona/pmm-server -p 8443
Gathering/downloading required components, this may take a moment
Checking docker installation - installed.
Starting PMM server...
Created PMM Data Volume: pmm-data
Created PMM Server: pmm-server
Use the following command if you ever need to update your container by hand:
docker run -d -p 8443:443 --volumes-from pmm-data --name pmm-server --restart always registry.hub.docker.com/percona/pmm-server:2
PMM Server has been successfully setup on this system!
You can access your new server using one of the following web addresses:
https://172.17.0.1:8443/
https://server_ip_address:8443/
https://127.0.0.1:8443/
The default username is 'admin' and the password is 'admin' :)
Note: Some browsers may not trust the default SSL certificate when you first open one of the urls above.
If this is the case, Chrome users may want to type 'thisisunsafe' to bypass the warning.
Enjoy Percona Monitoring and Management!
Setelah selesai, Anda dapat menggunakan tautan yang disediakan dan port khusus untuk masuk dan mengubah kata sandi default. MENIKMATI!
2. TAMBAHKAN LAYANAN POSTGRESQL UNTUK PEMANTAUAN
Seperti yang ditunjukkan dalam contoh lingkungan database, kami memiliki 3 server database yang berjalan sebagai sebuah cluster. Mari kita mulai mendaftarkan semua 3 server PostgreSQL ke Server PMM untuk memantaunya.
GURU DB
#Adding percona repolist into host running master postgresql server
sudo yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
#Installing pmm client running as agent
sudo yum install pmm2-client
#Configuring pmm client running as agent with the pmm server
sudo pmm-admin config --server-insecure-tls --server-url=https://username:password@server_ip_address:8443
#Create user monitoring on master db
CREATE USER pmm WITH SUPERUSER ENCRYPTED PASSWORD 'monitoring_usr_pass'; --(create on master)
#Modify pg_hba.conf for monitoring user
host all pmm server_ip_address/32 md5
# TYPE DATABASE USER ADDRESS METHOD
#Modify postgresql.conf for extension pg_stat_statements
shared_preload_libraries = 'pg_stat_statements'
track_activity_query_size = 3072 # Increase tracked query string size
pg_stat_statements.track = all # Track all statements including nested
track_io_timing = on # Capture read/write stats
#Next, you must restart PostgreSQL
#Now let's install pg_stat_statements extension
psql postgres postgres -c "CREATE EXTENSION pg_stat_statements SCHEMA public" --(create on master)
#Registering PostgreSQL service for pmm server to monitor
pmm-admin add postgresql --host=server_ip_address --port=db_port --username='pmm' --password='monitoring_usr_pass' --service-name=service_name_in_pmm --server-insecure-tls --server-url=https://username:password@server_ip_address:8443
PostgreSQL Service added.
Service ID : /service_id/eb52642c-323f-454d-a0f0-5c343f51e56b
Service name: service_name_in_pmm
DB SIAGA
#Installing pmm client manually by download rpm file
rpm -ivh pmm2-client-2.28.0-6.el7.x86_64.rpm
#Configuring pmm client running as agent with the pmm server
sudo pmm-admin config --server-insecure-tls --server-url=https://username:password@server_ip_address:8443
#Modify pg_hba.conf for monitoring user
host all pmm server_ip_address/32 md5
# TYPE DATABASE USER ADDRESS METHOD
#Modify postgresql.conf for extension pg_stat_statements
shared_preload_libraries = 'pg_stat_statements'
track_activity_query_size = 3072 # Increase tracked query string size
pg_stat_statements.track = all # Track all statements including nested
track_io_timing = on # Capture read/write stats
#Next, you must restart PostgreSQL
#Registering PostgreSQL service for pmm server to monitor
pmm-admin add postgresql --host=server_ip_address --port=db_port --username='pmm' --password='monitoring_usr_pass' --service-name=service_name_in_pmm --server-insecure-tls --server-url=https://username:password@server_ip_address:8443
PostgreSQL Service added.
Service ID : /service_id/4f1946b1-88af-4760-8530-5b189df2e349
Service name: service_name_in_pmm
3. TAMBAHKAN LAYANAN HAPROXY UNTUK PEMANTAUAN
Dalam contoh lingkungan database kami, kami menggunakan tautan artikel ini untuk menginstal HAProxy 2.5.5 dari kode sumber. Gunakan perintah berikut untuk memeriksa apakah HAProxy diinstal dengan eksportir Prometheus diaktifkan.
haproxy -vv
#Check to see this line of statement do exists
Built with the Prometheus exporter as a service
Jika Anda tidak dapat melihat baris pernyataan ini, mari mulai pengaturan ini untuk mengaktifkannya
#Stop haproxy service which is currently running
sudo systemctl stop haproxy
#Build haproxy
make -j $(nproc) TARGET=linux-glibc USE_ZLIB=1 USE_PCRE=1 USE_SYSTEMD=1 USE_PROMEX=1
#Install haproxy
make install
#Copy/Replace haproxy command
cp /usr/local/sbin/haproxy /usr/sbin/haproxy
#Change haproxy config file under section listen stats
listen stats
http-request use-service prometheus-exporter if { path /metrics }
#Start haproxy service
sudo systemctl start haproxy
#Using below command to check again
haproxy -vv
Built with the Prometheus exporter as a service
#Next check the exposed haproxy statistic using web browser
HTTP://haproxy_ip_address:haproxy_stat_port/metrics (--To check the statistic of haproxy)
Selanjutnya kita dapat menginstal agen klien PMM dan kemudian menambahkan layanan HAProxy untuk dipantau
#Installing pmm client manually by download rpm file
rpm -ivh pmm2-client-2.28.0-6.el7.x86_64.rpm
#Configuring pmm client running as agent with the pmm server
sudo pmm-admin config --server-insecure-tls --server-url=https://username:password@server_ip_address:8443
#Registering HAProxy service for pmm server to monitor
pmm-admin add haproxy --listen-port=haproxy_state_port
HAProxy Service added.
Service ID : /service_id/e663c922-54f5-4521-a19c-2f16cc38b8cf
Service name: haproxy-service-name
4. TAMBAHKAN LAYANAN PGBOUNCER UNTUK PEMANTAUAN
Karena Percona tidak mendukung PgBouncer sebagai layanan yang telah ditentukan sebelumnya, kami akan mendaftarkan PgBouncer sebagai layanan eksternal ke server PMM untuk pemantauan dengan menggunakan buruh pelabuhan "prometheus-pgbouncer-exporter"
yang berjalan sebagai layanan untuk mengekspos statistik PgBouncer. Ikuti langkah-langkah di bawah ini untuk menyelesaikannya.
#Get image of prometheus-pgbouncer-exporter
docker pull spreaker/prometheus-pgbouncer-exporter
#Need to allow hba_bouncer.conf for ip address generated by docker (Ex. 172.17.0.2) if you use pgbouncer with tightening security
#Mapping port 9100 with port 9127 in docker
docker run -p 127.0.0.1:9100:9127/tcp --name prometheus-pgbouncer-exporter --restart always \
--env PGBOUNCER_HOST=server_ip_address \
--env PGBOUNCER_PORT=bouncer_port \
--env PGBOUNCER_USER=bouncer_user \
--env PGBOUNCER_PASS=bouncer_pass \
--env PGBOUNCER_EXPORTER_HOST=172.17.0.2 \
--env PGBOUNCER_EXPORTER_PORT=9127 \
docker.io/spreaker/prometheus-pgbouncer-exporter:latest
#Additional configuration for container: prometheus-pgbouncer-exporter
docker exec -it prometheus-pgbouncer-exporter vi /etc/pgbouncer-exporter/config.yml
#Edit following below format for file /etc/pgbouncer-exporter/config.yml
# The host on which the exporter should listen to (defaults to 127.0.0.1)
exporter_host: $(PGBOUNCER_EXPORTER_HOST)
# The port on which the exporter should listen to (defaults to 9127)
exporter_port: $(PGBOUNCER_EXPORTER_PORT)
# The list of pgbouncer instances to monitor
pgbouncers:
-
# The pgbouncer connection string. Supports environment variables replacement
# Ie. $(PGBOUNCER_PASS) is replaced with the content of "PGBOUNCER_PASS" environment
# variable if exist, or left untouched if doesn''t exist
dsn: postgresql://$(PGBOUNCER_USER):$(PGBOUNCER_PASS)@$(PGBOUNCER_HOST):$(PGBOUNCER_PORT)/pgbouncer
# The pgbouncer connection timeout in seconds (defaults to 5 seconds)
connect_timeout: 5
include_databases:
exclude_databases:
- pgbouncer
extra_labels:
node_ip: server_ip_address
Selanjutnya setelah memodifikasi file config /etc/pgbouncer-exporter/config.yml
untuk pengaturan parameter tambahan, mari lanjutkan langkah di bawah ini
#Restart the docker after modifying the config
docker stop prometheus-pgbouncer-exporter
docker start prometheus-pgbouncer-exporter
#Testing the pgbouncer service is it up properly (It will show as below if it is properly config)
curl 172.17.0.2:9127/metrics | grep pgbouncer_up
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 97435 100 97435 0 0 3154k 0 --:--:-- --:--:-- --:--:-- 3281k
# HELP pgbouncer_up PgBouncer is UP and the scraping of all metrics succeeded
# TYPE pgbouncer_up gauge
pgbouncer_up{node_ip="server_ip_address"} 1.0
Terakhir, sekarang kita dapat mendaftarkan PgBouncer sebagai layanan eksternal ke server PMM. Dalam percobaan kami, kami menggunakan PgBouncer yang berjalan di server yang sama dengan PostgreSQL, oleh karena itu, kami tidak perlu menginstal agen klien PMM lagi. Namun, jika Anda menginstal PgBouncer di server terpisah dari PostgreSQL, Anda harus menginstal agen klien PMM.
pmm-admin add external --service-name=pgbouncer_service_name --listen-port=9100 --metrics-path=/metrics --scheme=http --server-insecure-tls --server-url=https://username:password@pmm-server-ip-address:8443
External Service added.
Service ID : /service_id/1be419ac-ded1-4304-9cfb-e07995bb700c
Service name: pgbouncer_service_name
Group : external
Setelah Anda melakukan ini, sekarang Anda memiliki 3 layanan pemantauan PostgreSQL, PgBouncer, dan HAProxy oleh Percona Monitoring Management Tool. NIKMATI WAKTUMU.
Tidak ada komentar:
Posting Komentar