PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara Memantau PostgreSQL menggunakan Nagios

Pengantar

Terlepas dari teknologi basis data, perlu adanya pengaturan pemantauan, baik untuk mendeteksi masalah dan mengambil tindakan, atau sekadar mengetahui status sistem kami saat ini.

Untuk tujuan ini ada beberapa alat, berbayar dan gratis. Di blog ini kita akan fokus pada satu secara khusus:Nagios Core.

Apa itu Nagios Core?

Nagios Core adalah sistem Open Source untuk memantau host, jaringan, dan layanan. Ini memungkinkan untuk mengonfigurasi peringatan dan memiliki status berbeda untuknya. Ini memungkinkan penerapan plugin, yang dikembangkan oleh komunitas, atau bahkan memungkinkan kita untuk mengonfigurasi skrip pemantauan kita sendiri.

Bagaimana Cara Menginstal Nagios?

Dokumentasi resmi menunjukkan kepada kita cara menginstal Nagios Core pada sistem CentOS atau Ubuntu.

Mari kita lihat contoh langkah-langkah yang diperlukan untuk instalasi di CentOS 7.

Paket diperlukan

[[email protected] ~]# yum install -y wget httpd php gcc glibc glibc-common gd gd-devel make net-snmp unzip

Unduh Nagios Core, Plugin Nagios, dan NRPE

[[email protected] ~]# wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.2.tar.gz
[[email protected] ~]# wget http://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
[[email protected] ~]# wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz

Tambahkan Pengguna dan Grup Nagios

[[email protected] ~]# useradd nagios
[[email protected] ~]# groupadd nagcmd
[[email protected] ~]# usermod -a -G nagcmd nagios
[[email protected] ~]# usermod -a -G nagios,nagcmd apache

Penginstalan Nagios

[[email protected] ~]# tar zxvf nagios-4.4.2.tar.gz
[[email protected] ~]# cd nagios-4.4.2
[[email protected] nagios-4.4.2]# ./configure --with-command-group=nagcmd
[[email protected] nagios-4.4.2]# make all
[[email protected] nagios-4.4.2]# make install
[[email protected] nagios-4.4.2]# make install-init
[[email protected] nagios-4.4.2]# make install-config
[[email protected] nagios-4.4.2]# make install-commandmode
[[email protected] nagios-4.4.2]# make install-webconf
[[email protected] nagios-4.4.2]# cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
[[email protected] nagios-4.4.2]# chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
[[email protected] nagios-4.4.2]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Penginstalan Plugin Nagios dan NRPE

[[email protected] ~]# tar zxvf nagios-plugins-2.2.1.tar.gz
[[email protected] ~]# cd nagios-plugins-2.2.1
[[email protected] nagios-plugins-2.2.1]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
[[email protected] nagios-plugins-2.2.1]# make
[[email protected] nagios-plugins-2.2.1]# make install
[[email protected] ~]# yum install epel-release
[[email protected] ~]# yum install nagios-plugins-nrpe
[[email protected] ~]# tar zxvf nrpe-3.2.1.tar.gz
[[email protected] ~]# cd nrpe-3.2.1
[[email protected] nrpe-3.2.1]# ./configure --disable-ssl --enable-command-args
[[email protected] nrpe-3.2.1]# make all
[[email protected] nrpe-3.2.1]# make install-plugin

Kami menambahkan baris berikut ke akhir file kami /usr/local/nagios/etc/objects/command.cfg untuk menggunakan NRPE saat memeriksa server kami:

define command{
    command_name           check_nrpe
    command_line           /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Nagios dimulai

[[email protected] nagios-4.4.2]# systemctl start nagios
[[email protected] nagios-4.4.2]# systemctl start httpd

Akses web

Kami membuat pengguna untuk mengakses antarmuka web dan kami dapat memasuki situs.

[[email protected] nagios-4.4.2]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

http://IP_Address/nagios/

Akses Web Nagios

Bagaimana Mengkonfigurasi Nagios?

Sekarang setelah kita menginstal Nagios, kita dapat melanjutkan dengan konfigurasi. Untuk ini kita harus pergi ke lokasi yang sesuai dengan instalasi kita, dalam contoh kita /usr/local/nagios/etc.

Ada beberapa file konfigurasi berbeda yang perlu Anda buat atau edit sebelum mulai memantau apa pun.

[[email protected] etc]# ls /usr/local/nagios/etc
cgi.cfg  htpasswd.users  nagios.cfg  objects  resource.cfg
  • cgi.cfg: File konfigurasi CGI berisi sejumlah arahan yang memengaruhi pengoperasian CGI. Ini juga berisi referensi ke file konfigurasi utama, sehingga CGI mengetahui bagaimana Anda telah mengonfigurasi Nagios dan di mana definisi objek Anda disimpan.
  • htpasswd.users: File ini berisi pengguna yang dibuat untuk mengakses antarmuka web Nagios.
  • nagios.cfg: File konfigurasi utama berisi sejumlah arahan yang memengaruhi cara daemon Nagios Core beroperasi.
  • objek: Saat Anda menginstal Nagios, beberapa contoh file konfigurasi objek ditempatkan di sini. Anda dapat menggunakan file sampel ini untuk melihat cara kerja pewarisan objek, dan mempelajari cara menentukan definisi objek Anda sendiri. Objek adalah semua elemen yang terlibat dalam logika pemantauan dan pemberitahuan.
  • resource.cfg: Ini digunakan untuk menentukan file sumber daya opsional yang dapat berisi definisi makro. Makro memungkinkan Anda untuk mereferensikan informasi host, layanan, dan sumber lain dalam perintah Anda.

Di dalam objek, kita dapat menemukan template, yang dapat digunakan saat membuat objek baru. Sebagai contoh, kita dapat melihat bahwa dalam file /usr/local/nagios/etc/objects/templates.cfg kita, terdapat sebuah template bernama linux-server, yang akan digunakan untuk menambahkan server kita.

define host {
    name                            linux-server            ; The name of this host template
    use                             generic-host            ; This template inherits other values from the generic-host template
    check_period                    24x7                    ; By default, Linux hosts are checked round the clock
    check_interval                  5                       ; Actively check the host every 5 minutes
    retry_interval                  1                       ; Schedule host check retries at 1 minute intervals
    max_check_attempts              10                      ; Check each Linux host 10 times (max)
    check_command                   check-host-alive        ; Default command to check Linux hosts
    notification_period             workhours               ; Linux admins hate to be woken up, so we only notify during the day
                                                           ; Note that the notification_period variable is being overridden from
                                                           ; the value that is inherited from the generic-host template!
    notification_interval           120                     ; Resend notifications every 2 hours
    notification_options            d,u,r                   ; Only send notifications for specific host states
    contact_groups                  admins                  ; Notifications get sent to the admins by default
    register                        0                       ; DON'T REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}

Dengan menggunakan template ini, host kita akan mewarisi konfigurasi tanpa harus menentukannya satu per satu di setiap server yang kita tambahkan.

Kami juga memiliki perintah, kontak, dan jangka waktu yang telah ditentukan sebelumnya.

Perintah akan digunakan oleh Nagios untuk pemeriksaannya, dan itulah yang kami tambahkan di dalam file konfigurasi setiap server untuk memantaunya. Misalnya, PING:

define command {
    command_name    check_ping
    command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}

Kami memiliki kemungkinan untuk membuat kontak atau grup, dan menentukan peringatan mana yang ingin saya jangkau orang atau grup mana.

define contact {
    contact_name            nagiosadmin             ; Short name of user
    use                     generic-contact         ; Inherit default values from generic-contact template (defined above)
    alias                   Nagios Admin            ; Full name of user
    email                   [email protected] ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
}

Untuk cek dan peringatan kami, kami dapat mengonfigurasi pada jam dan hari apa kami ingin menerimanya. Jika kita memiliki layanan yang tidak kritis, kita mungkin tidak ingin bangun di waktu subuh, jadi alangkah baiknya untuk waspada hanya di jam kerja untuk menghindari hal ini.

define timeperiod {
    name                    workhours
    timeperiod_name         workhours
    alias                   Normal Work Hours
    monday                  09:00-17:00
    tuesday                 09:00-17:00
    wednesday               09:00-17:00
    thursday                09:00-17:00
    friday                  09:00-17:00
}

Mari kita lihat sekarang bagaimana cara menambahkan peringatan ke Nagios kita.

Kami akan memantau server PostgreSQL kami, jadi pertama-tama kami menambahkannya sebagai host di direktori objek kami. Kami akan membuat 3 file baru:

[[email protected] ~]# cd /usr/local/nagios/etc/objects/
[[email protected] objects]# vi postgres1.cfg
define host {
    use        linux-server      ; Name of host template to use
    host_name    postgres1        ; Hostname
    alias        PostgreSQL1        ; Alias
    address    192.168.100.123    ; IP Address
}
[[email protected] objects]# vi postgres2.cfg
define host {
    use        linux-server      ; Name of host template to use
    host_name    postgres2        ; Hostname
    alias        PostgreSQL2        ; Alias
    address    192.168.100.124    ; IP Address
}
[[email protected] objects]# vi postgres3.cfg
define host {
    use        linux-server      ; Name of host template to use
    host_name    postgres3        ; Hostname
    alias        PostgreSQL3        ; Alias
    address    192.168.100.125    ; IP Address
}

Kemudian kita harus menambahkannya ke file nagios.cfg dan di sini kita memiliki 2 pilihan.

Tambahkan host kita (file cfg) satu per satu menggunakan variabel cfg_file (opsi default) atau tambahkan semua file cfg yang kita miliki di dalam direktori menggunakan variabel cfg_dir.

Kami akan menambahkan file satu per satu mengikuti strategi default.

cfg_file=/usr/local/nagios/etc/objects/postgres1.cfg
cfg_file=/usr/local/nagios/etc/objects/postgres2.cfg
cfg_file=/usr/local/nagios/etc/objects/postgres3.cfg

Dengan ini kami memiliki host kami dipantau. Sekarang kita tinggal menambahkan layanan apa yang ingin kita pantau. Untuk ini kami akan menggunakan beberapa pemeriksaan yang sudah ditentukan (check_ssh dan check_ping), dan kami akan menambahkan beberapa pemeriksaan dasar sistem operasi seperti beban dan ruang disk, antara lain, menggunakan NRPE.

Unduh Whitepaper Hari Ini Pengelolaan &Otomatisasi PostgreSQL dengan ClusterControlPelajari tentang apa yang perlu Anda ketahui untuk menerapkan, memantau, mengelola, dan menskalakan PostgreSQLUnduh Whitepaper

Apa itu NRPE?

Pelaksana Plugin Jarak Jauh Nagios. Alat ini memungkinkan kita untuk menjalankan plugin Nagios pada host jarak jauh dengan cara yang setransparan mungkin.

Untuk menggunakannya, kita harus menginstal server di setiap node yang ingin kita pantau, dan Nagios kita akan terhubung sebagai klien ke masing-masing node, menjalankan plugin yang sesuai.

Bagaimana cara menginstal NRPE?

[[email protected] ~]# wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz
[[email protected] ~]# wget http://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
[[email protected] ~]# tar zxvf nagios-plugins-2.2.1.tar.gz
[[email protected] ~]# tar zxvf nrpe-3.2.1.tar.gz
[[email protected] ~]# cd nrpe-3.2.1
[[email protected] nrpe-3.2.1]# ./configure --disable-ssl --enable-command-args
[[email protected] nrpe-3.2.1]# make all
[[email protected] nrpe-3.2.1]# make install-groups-users
[[email protected] nrpe-3.2.1]# make install
[[email protected] nrpe-3.2.1]# make install-config
[[email protected] nrpe-3.2.1]# make install-init
[[email protected] ~]# cd nagios-plugins-2.2.1
[[email protected] nagios-plugins-2.2.1]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
[[email protected] nagios-plugins-2.2.1]# make
[[email protected] nagios-plugins-2.2.1]# make install
[[email protected] nagios-plugins-2.2.1]# systemctl enable nrpe

Kemudian kita edit file konfigurasi /usr/local/nagios/etc/nrpe.cfg

server_address=<Local IP Address>
allowed_hosts=127.0.0.1,<Nagios Server IP Address>

Dan kami memulai kembali layanan NRPE:

[[email protected] ~]# systemctl restart nrpe

Kami dapat menguji koneksi dengan menjalankan yang berikut dari server Nagios kami:

[[email protected] ~]# /usr/local/nagios/libexec/check_nrpe -H <Node IP Address>
NRPE v3.2.1

Bagaimana cara memantau PostgreSQL?

Saat memantau PostgreSQL, ada dua area utama yang harus diperhatikan:sistem operasi dan database.

Untuk sistem operasi, NRPE memiliki beberapa pemeriksaan dasar yang dikonfigurasi seperti ruang disk dan beban, antara lain. Pemeriksaan ini dapat diaktifkan dengan sangat mudah dengan cara berikut.

Di node kami, kami mengedit file /usr/local/nagios/etc/nrpe.cfg dan pergi ke tempat baris berikut:

command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -r -w 15,10,05 -c 30,25,20
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200

Nama dalam tanda kurung siku adalah nama yang akan kita gunakan di server Nagios untuk mengaktifkan pemeriksaan ini.

Di Nagios kami, kami mengedit file dari 3 node:

/usr/local/nagios/etc/objects/postgres1.cfg
/usr/local/nagios/etc/objects/postgres2.cfg
/usr/local/nagios/etc/objects/postgres3.cfg

Kami menambahkan cek ini yang kami lihat sebelumnya, meninggalkan file kami sebagai berikut:

define host {
    use                     linux-server
    host_name               postgres1
    alias                   PostgreSQL1
    address                 192.168.100.123
}
define service {
    use                     generic-service
    host_name               postgres1
    service_description     PING
    check_command           check_ping!100.0,20%!500.0,60%
}
define service {
    use                     generic-service
    host_name               postgres1
    service_description     SSH
    check_command           check_ssh
}
define service {
    use                     generic-service
    host_name               postgres1
    service_description     Root Partition
    check_command        check_nrpe!check_disk
}
define service {
    use                     generic-service
    host_name               postgres1
    service_description     Total Processes zombie
    check_command           check_nrpe!check_zombie_procs
}
define service {
    use                     generic-service
    host_name               postgres1
    service_description     Total Processes
    check_command           check_nrpe!check_total_procs
}
define service {
    use                     generic-service
    host_name               postgres1
    service_description     Current Load
    check_command           check_nrpe!check_load
}
define service {
    use                     generic-service
    host_name               postgres1
    service_description     Current Users
    check_command           check_nrpe!check_users
}

Dan kami memulai kembali layanan nagios:

[[email protected] ~]# systemctl start nagios

Pada titik ini, jika kita pergi ke bagian layanan di antarmuka web Nagios kita, kita akan memiliki sesuatu seperti berikut:

Peringatan Host Nagios

Dengan cara ini kami akan membahas pemeriksaan dasar server kami di tingkat sistem operasi.

Kami memiliki lebih banyak cek yang dapat kami tambahkan dan kami bahkan dapat membuat cek kami sendiri (kita akan melihat contohnya nanti).

Sekarang mari kita lihat bagaimana memonitor mesin database PostgreSQL kita menggunakan dua plugin utama yang dirancang untuk tugas ini.

Check_postgres

Salah satu plugin paling populer untuk memeriksa PostgreSQL adalah check_postgres dari Bucardo.

Mari kita lihat cara menginstalnya dan cara menggunakannya dengan database PostgreSQL kami.

Paket diperlukan

[[email protected] ~]# yum install perl-devel

Pemasangan

[[email protected] ~]#  wget http://bucardo.org/downloads/check_postgres.tar.gz
[[email protected] ~]#  tar zxvf check_postgres.tar.gz
[[email protected] ~]#  cp check_postgres-2.23.0/check_postgres.pl /usr/local/nagios/libexec/
[[email protected] ~]# chown nagios.nagios /usr/local/nagios/libexec/check_postgres.pl
[[email protected] ~]# cd /usr/local/nagios/libexec/
[[email protected] libexec]# perl /usr/local/nagios/libexec/check_postgres.pl  --symlinks

Perintah terakhir ini membuat tautan untuk menggunakan semua fungsi pemeriksaan ini, seperti check_postgres_connection, check_postgres_last_vacuum, atau check_postgres_replication_slots.

[[email protected] libexec]# ls |grep postgres
check_postgres.pl
check_postgres_archive_ready
check_postgres_autovac_freeze
check_postgres_backends
check_postgres_bloat
check_postgres_checkpoint
check_postgres_cluster_id
check_postgres_commitratio
check_postgres_connection
check_postgres_custom_query
check_postgres_database_size
check_postgres_dbstats
check_postgres_disabled_triggers
check_postgres_disk_space
…

Kami menambahkan file konfigurasi NRPE kami (/usr/local/nagios/etc/nrpe.cfg) baris untuk menjalankan pemeriksaan yang ingin kami gunakan:

command[check_postgres_locks]=/usr/local/nagios/libexec/check_postgres_locks -w 2 -c 3
command[check_postgres_bloat]=/usr/local/nagios/libexec/check_postgres_bloat -w='100 M' -c='200 M'
command[check_postgres_connection]=/usr/local/nagios/libexec/check_postgres_connection --db=postgres
command[check_postgres_backends]=/usr/local/nagios/libexec/check_postgres_backends -w=70 -c=100

Dalam contoh kami, kami menambahkan 4 pemeriksaan dasar untuk PostgreSQL. Kami akan memantau Locks, Bloat, Connection dan Backends.

Dalam file yang sesuai dengan database kami di server Nagios (/usr/local/nagios/etc/objects/postgres1.cfg), kami menambahkan entri berikut:

define service {
      use                    generic-service
      host_name              postgres1
      service_description    PostgreSQL locks
      check_command          check_nrpe!check_postgres_locks
}
define service {
      use                    generic-service
      host_name              postgres1
      service_description    PostgreSQL Bloat
      check_command          check_nrpe!check_postgres_bloat
}
define service {
      use                    generic-service
      host_name              postgres1
      service_description    PostgreSQL Connection
      check_command          check_nrpe!check_postgres_connection
}
define service {
      use                    generic-service
      host_name              postgres1
      service_description    PostgreSQL Backends
      check_command          check_nrpe!check_postgres_backends
}

Dan setelah memulai ulang kedua layanan (NRPE dan Nagios) di kedua server, kami dapat melihat peringatan kami dikonfigurasi.

Nagios check_postgres Alerts

Dalam dokumentasi resmi plugin check_postgres, Anda dapat menemukan informasi tentang apa lagi yang harus dipantau dan bagaimana melakukannya.

Periksa_pgaktivitas

Sekarang giliran check_pgactivity, yang juga populer untuk memantau database PostgreSQL kami.

Pemasangan

[[email protected] ~]# wget https://github.com/OPMDG/check_pgactivity/releases/download/REL2_3/check_pgactivity-2.3.tgz
[[email protected] ~]# tar zxvf check_pgactivity-2.3.tgz
[[email protected] ~]# cp check_pgactivity-2.3check_pgactivity /usr/local/nagios/libexec/check_pgactivity
[[email protected] ~]# chown nagios.nagios /usr/local/nagios/libexec/check_pgactivity

Kami menambahkan file konfigurasi NRPE kami (/usr/local/nagios/etc/nrpe.cfg) baris untuk menjalankan pemeriksaan yang ingin kami gunakan:

command[check_pgactivity_backends]=/usr/local/nagios/libexec/check_pgactivity -h localhost -s backends -w 70 -c 100
command[check_pgactivity_connection]=/usr/local/nagios/libexec/check_pgactivity -h localhost -s connection
command[check_pgactivity_indexes]=/usr/local/nagios/libexec/check_pgactivity -h localhost -s invalid_indexes
command[check_pgactivity_locks]=/usr/local/nagios/libexec/check_pgactivity -h localhost -s locks -w 5 -c 10

Dalam contoh kita, kita akan menambahkan 4 pemeriksaan dasar untuk PostgreSQL. Kami akan memantau Backend, Koneksi, Indeks Tidak Valid, dan kunci.

Dalam file yang sesuai dengan database kami di server Nagios (/usr/local/nagios/etc/objects/postgres2.cfg), kami menambahkan entri berikut:

define service {
    use                     generic-service           ; Name of service template to use
    host_name               postgres2
    service_description     PGActivity Backends
    check_command           check_nrpe!check_pgactivity_backends
}
define service {
    use                     generic-service           ; Name of service template to use
    host_name               postgres2
    service_description     PGActivity Connection
    check_command           check_nrpe!check_pgactivity_connection
}
define service {
    use                     generic-service           ; Name of service template to use
    host_name               postgres2
    service_description     PGActivity Indexes
    check_command           check_nrpe!check_pgactivity_indexes
}
define service {
    use                     generic-service           ; Name of service template to use
    host_name               postgres2
    service_description     PGActivity Locks
    check_command           check_nrpe!check_pgactivity_locks
}

Dan setelah memulai ulang kedua layanan (NRPE dan Nagios) di kedua server, kami dapat melihat peringatan kami dikonfigurasi.

Nagios check_pgactivity Alerts

Periksa Log Kesalahan

Salah satu pemeriksaan yang paling penting, atau yang paling penting, adalah memeriksa log kesalahan kami.

Di sini kita dapat menemukan berbagai jenis kesalahan seperti FATAL atau kebuntuan, dan ini adalah titik awal yang baik untuk menganalisis masalah apa pun yang kita miliki di database kita.

Untuk memeriksa log kesalahan kami, kami akan membuat skrip pemantauan kami sendiri dan mengintegrasikannya ke dalam nagios kami (ini hanya sebuah contoh, skrip ini akan menjadi dasar dan memiliki banyak ruang untuk perbaikan).

Skrip

Kami akan membuat file /usr/local/nagios/libexec/check_postgres_log.sh di server PostgreSQL3 kami.

[[email protected] ~]# vi /usr/local/nagios/libexec/check_postgres_log.sh
#!/bin/bash
#Variables
LOG="/var/log/postgresql-$(date +%a).log"
CURRENT_DATE=$(date +'%Y-%m-%d %H')
ERROR=$(grep "$CURRENT_DATE" $LOG | grep "FATAL" | wc -l)
#States
STATE_CRITICAL=2
STATE_OK=0
#Check
if [ $ERROR -ne 0 ]; then
       echo "CRITICAL - Check PostgreSQL Log File - $ERROR Error Found"
       exit $STATE_CRITICAL
else
       echo "OK - PostgreSQL without errors"
       exit $STATE_OK
fi

Yang penting dari skrip adalah membuat output yang sesuai dengan setiap status dengan benar. Output ini dibaca oleh Nagios dan setiap nomor sesuai dengan status:

0=OK
1=WARNING
2=CRITICAL
3=UNKNOWN

Dalam contoh kami, kami hanya akan menggunakan 2 status, OK dan CRITICAL, karena kami hanya tertarik untuk mengetahui apakah ada kesalahan tipe FATAL di log kesalahan kami pada jam saat ini.

Teks yang kami gunakan sebelum keluar akan ditampilkan oleh antarmuka web nagios kami, jadi harus sejelas mungkin untuk menggunakan ini sebagai panduan untuk masalah tersebut.

Setelah kami menyelesaikan skrip pemantauan kami, kami akan melanjutkan untuk memberikan izin eksekusi, menetapkannya ke nagios pengguna dan menambahkannya ke server database kami NRPE serta ke Nagios kami:

[[email protected] ~]# chmod +x /usr/local/nagios/libexec/check_postgres_log.sh
[[email protected] ~]# chown nagios.nagios /usr/local/nagios/libexec/check_postgres_log.sh

[[email protected] ~]# vi /usr/local/nagios/etc/nrpe.cfg
command[check_postgres_log]=/usr/local/nagios/libexec/check_postgres_log.sh

[[email protected] ~]# vi /usr/local/nagios/etc/objects/postgres3.cfg
define service {
    use                     generic-service           ; Name of service template to use
    host_name               postgres3
    service_description     PostgreSQL LOG
    check_command           check_nrpe!check_postgres_log
}

Mulai ulang NRPE dan Nagios. Kemudian kita bisa melihat cek kita di antarmuka Nagios:

Peringatan Skrip Nagios

Seperti yang kita lihat dalam keadaan KRITIS, jadi jika kita masuk ke log, kita bisa melihat yang berikut:

2018-08-30 02:29:49.531 UTC [22162] FATAL:  Peer authentication failed for user "postgres"
2018-08-30 02:29:49.531 UTC [22162] DETAIL:  Connection matched pg_hba.conf line 83: "local   all             all                                     peer"

Untuk informasi lebih lanjut tentang apa yang dapat kami pantau di database PostgreSQL kami, saya sarankan Anda memeriksa blog kinerja dan pemantauan kami atau webinar Kinerja Postgres ini.

Keamanan dan Performa

Saat mengonfigurasi pemantauan apa pun, baik menggunakan plugin atau skrip kita sendiri, kita harus sangat berhati-hati dengan 2 hal yang sangat penting - keamanan dan kinerja.

Saat kami menetapkan izin yang diperlukan untuk pemantauan, kami harus seketat mungkin, membatasi akses hanya secara lokal atau dari server pemantauan kami, menggunakan kunci aman, mengenkripsi lalu lintas, memungkinkan koneksi seminimal mungkin agar pemantauan berfungsi.

Sehubungan dengan kinerja, pemantauan diperlukan, tetapi juga diperlukan untuk menggunakannya dengan aman untuk sistem kami.

Kita harus berhati-hati untuk tidak menghasilkan akses disk yang terlalu tinggi, atau menjalankan kueri yang berdampak negatif pada kinerja database kita.

Jika kami memiliki banyak transaksi per detik yang menghasilkan gigabyte log, dan kami terus mencari kesalahan terus-menerus, itu mungkin bukan yang terbaik untuk database kami. Jadi kita harus menjaga keseimbangan antara apa yang kita pantau, seberapa sering, dan dampaknya terhadap kinerja.

Kesimpulan

Ada beberapa cara untuk menerapkan pemantauan, atau untuk mengonfigurasinya. Kita bisa melakukannya sekompleks atau sesederhana yang kita inginkan. Tujuan blog ini adalah untuk memperkenalkan Anda dalam pemantauan PostgreSQL menggunakan salah satu alat open source yang paling banyak digunakan. Kami juga telah melihat bahwa konfigurasinya sangat fleksibel dan dapat disesuaikan dengan kebutuhan yang berbeda.

Dan jangan lupa bahwa kita selalu dapat mengandalkan komunitas, jadi saya meninggalkan beberapa tautan yang dapat sangat membantu.

Forum dukungan:https://support.nagios.com/forum/

Masalah umum:https://github.com/NagiosEnterprises/nagioscore/issues

Plugin Nagios:https://exchange.nagios.org/directory/Plugins

Plugin Nagios untuk ClusterControl:https://severalnines.com/blog/nagios-plugin-clustercontrol


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. KESALAHAN:tidak ada batasan unik yang cocok dengan kunci yang diberikan untuk bilah tabel yang direferensikan

  2. Pengindeksan dan:Indeks GIN

  3. Hitung persentase dari SUM() dalam kueri sql SELECT yang sama

  4. Apa yang harus dilakukan dengan nilai nol saat pemodelan dan normalisasi?

  5. Bagaimana Cotd() Bekerja di PostgreSQL