Giới thiệu
Bất kể công nghệ cơ sở dữ liệu nào, cần phải có thiết lập giám sát, để phát hiện sự cố và thực hiện hành động, hoặc đơn giản là để biết trạng thái hiện tại của hệ thống của chúng tôi.
Vì mục đích này, có một số công cụ, trả phí và miễn phí. Trong blog này, chúng tôi sẽ tập trung vào một đặc biệt:Nagios Core.
Nagios Core là gì?
Nagios Core là một hệ thống Mã nguồn mở để giám sát máy chủ, mạng và dịch vụ. Nó cho phép cấu hình các cảnh báo và có các trạng thái khác nhau cho chúng. Nó cho phép triển khai các plugin do cộng đồng phát triển hoặc thậm chí cho phép chúng tôi định cấu hình các tập lệnh giám sát của riêng mình.
Cách cài đặt Nagios?
Tài liệu chính thức hướng dẫn chúng ta cách cài đặt Nagios Core trên hệ thống CentOS hoặc Ubuntu.
Hãy xem ví dụ về các bước cần thiết để cài đặt trên CentOS 7.
Gói bắt buộc
[[email protected] ~]# yum install -y wget httpd php gcc glibc glibc-common gd gd-devel make net-snmp unzip
Tải xuống Nagios Core, Nagios Plugins và 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
Thêm người dùng và nhóm Nagios
[[email protected] ~]# useradd nagios
[[email protected] ~]# groupadd nagcmd
[[email protected] ~]# usermod -a -G nagcmd nagios
[[email protected] ~]# usermod -a -G nagios,nagcmd apache
Cài đặt 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
Cài đặt trình cắm Nagios và 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
Chúng tôi thêm dòng sau vào cuối tệp /usr/local/nagios/etc/objects/command.cfg để sử dụng NRPE khi kiểm tra máy chủ của chúng tôi:
define command{
command_name check_nrpe
command_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
Nagios bắt đầu
[[email protected] nagios-4.4.2]# systemctl start nagios
[[email protected] nagios-4.4.2]# systemctl start httpd
Truy cập web
Chúng tôi tạo ra người dùng để truy cập giao diện web và chúng tôi có thể vào trang web.
[[email protected] nagios-4.4.2]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
http:// IP_Address / nagios /
Truy cập web NagiosLàm thế nào để định cấu hình Nagios?
Bây giờ chúng ta đã cài đặt xong Nagios, chúng ta có thể tiếp tục với cấu hình. Đối với điều này, chúng tôi phải đi đến vị trí tương ứng với cài đặt của chúng tôi, trong ví dụ / usr / local / nagios / etc của chúng tôi.
Có một số tệp cấu hình khác nhau mà bạn sẽ cần tạo hoặc chỉnh sửa trước khi bắt đầu theo dõi bất kỳ thứ gì.
[[email protected] etc]# ls /usr/local/nagios/etc
cgi.cfg htpasswd.users nagios.cfg objects resource.cfg
- cgi.cfg: Tệp cấu hình CGI chứa một số chỉ thị ảnh hưởng đến hoạt động của CGI. Nó cũng chứa tham chiếu đến tệp cấu hình chính, vì vậy CGI biết cách bạn đã định cấu hình Nagios và nơi lưu trữ các định nghĩa đối tượng của bạn.
- htpasswd.users: Tệp này chứa những người dùng được tạo để truy cập giao diện web Nagios.
- nagios.cfg: Tệp cấu hình chính chứa một số lệnh ảnh hưởng đến cách hoạt động của trình nền Nagios Core.
- đối tượng: Khi bạn cài đặt Nagios, một số tệp cấu hình đối tượng mẫu được đặt ở đây. Bạn có thể sử dụng các tệp mẫu này để xem cách kế thừa đối tượng hoạt động và tìm hiểu cách xác định các định nghĩa đối tượng của riêng bạn. Đối tượng là tất cả các yếu tố liên quan đến logic thông báo và giám sát.
- resource.cfg: Điều này được sử dụng để chỉ định một tệp tài nguyên tùy chọn có thể chứa các định nghĩa macro. Macro cho phép bạn tham chiếu thông tin của máy chủ, dịch vụ và các nguồn khác trong lệnh của bạn.
Trong các đối tượng, chúng ta có thể tìm thấy các mẫu, có thể được sử dụng khi tạo các đối tượng mới. Ví dụ:chúng tôi có thể thấy rằng trong tệp /usr/local/nagios/etc/objects/templates.cfg của chúng tôi, có một mẫu tên là linux-server, sẽ được sử dụng để thêm các máy chủ của chúng tôi.
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!
}
Sử dụng mẫu này, các máy chủ của chúng tôi sẽ kế thừa cấu hình mà không cần phải chỉ định từng cấu hình một trên mỗi máy chủ mà chúng tôi thêm vào.
Chúng tôi cũng có các lệnh, danh bạ và khoảng thời gian xác định trước.
Các lệnh sẽ được Nagios sử dụng để kiểm tra và đó là những gì chúng tôi thêm vào trong tệp cấu hình của mỗi máy chủ để giám sát nó. Ví dụ:PING:
define command {
command_name check_ping
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}
Chúng tôi có khả năng tạo liên hệ hoặc nhóm và chỉ định thông báo nào tôi muốn liên hệ với người hoặc nhóm nào.
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 ******
}
Đối với séc và cảnh báo của chúng tôi, chúng tôi có thể định cấu hình những giờ và ngày chúng tôi muốn nhận chúng. Nếu chúng tôi có một dịch vụ không quan trọng, chúng tôi có thể không muốn thức dậy vào lúc bình minh, vì vậy tốt hơn là chỉ nên thông báo trong giờ làm việc để tránh điều này.
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
}
Bây giờ hãy xem cách thêm cảnh báo vào Nagios của chúng tôi.
Chúng tôi sẽ giám sát các máy chủ PostgreSQL của mình, vì vậy trước tiên chúng tôi thêm chúng làm máy chủ trong thư mục đối tượng của chúng tôi. Chúng tôi sẽ tạo 3 tệp mới:
[[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
}
Sau đó, chúng tôi phải thêm chúng vào tệp nagios.cfg và ở đây chúng tôi có 2 tùy chọn.
Thêm lần lượt các máy chủ của chúng tôi (tệp cfg) bằng cách sử dụng biến cfg_file (tùy chọn mặc định) hoặc thêm tất cả các tệp cfg mà chúng tôi có bên trong thư mục bằng cách sử dụng biến cfg_dir.
Chúng tôi sẽ thêm từng tệp một theo chiến lược mặc định.
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
Với điều này, chúng tôi đã giám sát các máy chủ của chúng tôi. Bây giờ chúng ta chỉ cần thêm những dịch vụ mà chúng ta muốn giám sát. Đối với điều này, chúng tôi sẽ sử dụng một số kiểm tra đã được xác định (check_ssh và check_ping) và chúng tôi sẽ thêm một số kiểm tra cơ bản của hệ điều hành như tải và dung lượng đĩa, trong số những kiểm tra khác, sử dụng NRPE.
Tải xuống Báo cáo chính thức hôm nay Quản lý &Tự động hóa PostgreSQL với ClusterControlTìm hiểu về những điều bạn cần biết để triển khai, giám sát, quản lý và mở rộng PostgreSQLTải xuống Báo cáo chính thứcNRPE là gì?
Trình thực thi plugin từ xa của Nagios. Công cụ này cho phép chúng tôi thực thi các plugin Nagios trên máy chủ từ xa một cách minh bạch nhất có thể.
Để sử dụng nó, chúng tôi phải cài đặt máy chủ trong mỗi nút mà chúng tôi muốn giám sát và Nagios của chúng tôi sẽ kết nối như một máy khách với mỗi nút, thực thi (các) plugin tương ứng.
Làm cách nào để cài đặt 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
Sau đó, chúng tôi chỉnh sửa tệp cấu hình /usr/local/nagios/etc/nrpe.cfg
server_address=<Local IP Address>
allowed_hosts=127.0.0.1,<Nagios Server IP Address>
Và chúng tôi khởi động lại dịch vụ NRPE:
[[email protected] ~]# systemctl restart nrpe
Chúng tôi có thể kiểm tra kết nối bằng cách chạy phần sau từ máy chủ Nagios của chúng tôi:
[[email protected] ~]# /usr/local/nagios/libexec/check_nrpe -H <Node IP Address>
NRPE v3.2.1
Làm cách nào để giám sát PostgreSQL?
Khi theo dõi PostgreSQL, có hai lĩnh vực chính cần lưu ý:hệ điều hành và cơ sở dữ liệu.
Đối với hệ điều hành, NRPE có một số kiểm tra cơ bản được cấu hình như dung lượng ổ đĩa và tải, trong số những thứ khác. Các kiểm tra này có thể được kích hoạt rất dễ dàng theo cách sau.
Trong các nút của chúng tôi, chúng tôi chỉnh sửa tệp /usr/local/nagios/etc/nrpe.cfg và chuyển đến vị trí của các dòng sau:
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
Tên trong dấu ngoặc vuông là những tên mà chúng tôi sẽ sử dụng trong máy chủ Nagios của mình để kích hoạt các kiểm tra này.
Trong Nagios của chúng tôi, chúng tôi chỉnh sửa các tệp của 3 nút:
/usr/local/nagios/etc/objects/postgres1.cfg
/usr/local/nagios/etc/objects/postgres2.cfg
/usr/local/nagios/etc/objects/postgres3.cfg
Chúng tôi thêm các kiểm tra này mà chúng tôi đã thấy trước đây, để lại các tệp của chúng tôi như sau:
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
}
Và chúng tôi khởi động lại dịch vụ nagios:
[[email protected] ~]# systemctl start nagios
Tại thời điểm này, nếu chúng ta đi đến phần dịch vụ trong giao diện web của Nagios, chúng ta sẽ có một cái gì đó như sau:
Cảnh báo máy chủ NagiosTheo cách này, chúng tôi sẽ bao gồm các bước kiểm tra cơ bản của máy chủ của chúng tôi ở cấp hệ điều hành.
Chúng tôi có nhiều séc khác mà chúng tôi có thể thêm vào và chúng tôi thậm chí có thể tạo séc của riêng mình (chúng ta sẽ xem ví dụ sau).
Bây giờ, hãy xem cách theo dõi công cụ cơ sở dữ liệu PostgreSQL của chúng tôi bằng cách sử dụng hai trong số các plugin chính được thiết kế cho tác vụ này.
Check_postgres
Một trong những plugin phổ biến nhất để kiểm tra PostgreSQL là check_postgres từ Bucardo.
Hãy xem cách cài đặt nó và cách sử dụng nó với cơ sở dữ liệu PostgreSQL của chúng tôi.
Gói bắt buộc
[[email protected] ~]# yum install perl-devel
Cài đặt
[[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
Lệnh cuối cùng này tạo các liên kết để sử dụng tất cả các chức năng của kiểm tra này, chẳng hạn như check_postgres_connection, check_postgres_last_vacuum hoặc check_postgres_replication_slots trong số các chức năng khác.
[[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
…
Chúng tôi thêm vào tệp cấu hình NRPE của mình (/usr/local/nagios/etc/nrpe.cfg) dòng để thực hiện kiểm tra mà chúng tôi muốn sử dụng:
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
Trong ví dụ của chúng tôi, chúng tôi đã thêm 4 kiểm tra cơ bản cho PostgreSQL. Chúng tôi sẽ giám sát các Khóa, Bloat, Kết nối và Phần bổ trợ.
Trong tệp tương ứng với cơ sở dữ liệu của chúng tôi trong máy chủ Nagios (/usr/local/nagios/etc/objects/postgres1.cfg), chúng tôi thêm các mục sau:
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
}
Và sau khi khởi động lại cả hai dịch vụ (NRPE và Nagios) trên cả hai máy chủ, chúng tôi có thể thấy các cảnh báo của mình đã được định cấu hình.
Nagios check_postgres AlertsTrong tài liệu chính thức của plugin check_postgres, bạn có thể tìm thấy thông tin về những thứ khác cần theo dõi và cách thực hiện.
Check_pgactivity
Bây giờ đến lượt check_pgactivity, cũng phổ biến để theo dõi cơ sở dữ liệu PostgreSQL của chúng tôi.
Cài đặt
[[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
Chúng tôi thêm vào tệp cấu hình NRPE của mình (/usr/local/nagios/etc/nrpe.cfg) dòng để thực hiện kiểm tra mà chúng tôi muốn sử dụng:
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
Trong ví dụ của chúng tôi, chúng tôi sẽ thêm 4 kiểm tra cơ bản cho PostgreSQL. Chúng tôi sẽ theo dõi Phần phụ trợ, Kết nối, Chỉ mục Không hợp lệ và các khóa.
Trong tệp tương ứng với cơ sở dữ liệu của chúng tôi trong máy chủ Nagios (/usr/local/nagios/etc/objects/postgres2.cfg), chúng tôi thêm các mục sau:
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
}
Và sau khi khởi động lại cả hai dịch vụ (NRPE và Nagios) trên cả hai máy chủ, chúng tôi có thể thấy các cảnh báo của mình đã được định cấu hình.
Nagios check_pgactivity AlertsKiểm tra nhật ký lỗi
Một trong những kiểm tra quan trọng nhất, hoặc kiểm tra quan trọng nhất, là kiểm tra nhật ký lỗi của chúng tôi.
Tại đây, chúng tôi có thể tìm thấy các loại lỗi khác nhau như FATAL hoặc deadlock và đó là điểm khởi đầu tốt để phân tích bất kỳ vấn đề nào chúng tôi gặp phải trong cơ sở dữ liệu của mình.
Để kiểm tra nhật ký lỗi của chúng tôi, chúng tôi sẽ tạo tập lệnh giám sát của riêng mình và tích hợp nó vào Nagios của chúng tôi (đây chỉ là một ví dụ, tập lệnh này sẽ là cơ bản và còn nhiều chỗ để cải thiện).
Tập lệnh
Chúng tôi sẽ tạo tệp /usr/local/nagios/libexec/check_postgres_log.sh trên máy chủ PostgreSQL3 của chúng tôi.
[[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
Điều quan trọng của script là tạo chính xác các đầu ra tương ứng với từng trạng thái. Các kết quả đầu ra này được đọc bởi Nagios và mỗi số tương ứng với một trạng thái:
0=OK
1=WARNING
2=CRITICAL
3=UNKNOWN
Trong ví dụ của chúng tôi, chúng tôi sẽ chỉ sử dụng 2 trạng thái, OK và CRITICAL, vì chúng tôi chỉ quan tâm đến việc biết liệu có lỗi thuộc loại FATAL trong nhật ký lỗi của chúng tôi trong giờ hiện tại hay không.
Văn bản mà chúng tôi sử dụng trước khi thoát sẽ được hiển thị trên giao diện web của Nagios, vì vậy càng phải rõ ràng càng tốt khi sử dụng văn bản này làm hướng dẫn cho vấn đề.
Khi chúng tôi đã hoàn thành tập lệnh giám sát của mình, chúng tôi sẽ tiến hành cấp cho nó quyền thực thi, gán nó cho nagios người dùng và thêm nó vào máy chủ cơ sở dữ liệu NRPE cũng như Nagios của chúng tôi:
[[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
}
Khởi động lại NRPE và Nagios. Sau đó, chúng tôi có thể thấy kiểm tra của chúng tôi trong giao diện Nagios:
Cảnh báo tập lệnh NagiosNhư chúng ta có thể thấy, nó đang ở trạng thái CRITICAL, vì vậy nếu chúng ta truy cập nhật ký, chúng ta có thể thấy như sau:
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"
Để biết thêm thông tin về những gì chúng tôi có thể giám sát trong cơ sở dữ liệu PostgreSQL của mình, tôi khuyên bạn nên kiểm tra hiệu suất và các blog giám sát của chúng tôi hoặc hội thảo trên web về Hiệu suất Postgres này.
An toàn và Hiệu suất
Khi định cấu hình bất kỳ giám sát nào, bằng cách sử dụng plugin hoặc tập lệnh của riêng chúng tôi, chúng tôi phải rất cẩn thận với 2 điều rất quan trọng - an toàn và hiệu suất.
Khi chúng tôi chỉ định các quyền cần thiết để giám sát, chúng tôi phải hạn chế hết mức có thể, chỉ giới hạn truy cập cục bộ hoặc từ máy chủ giám sát của chúng tôi, sử dụng khóa an toàn, mã hóa lưu lượng, cho phép kết nối ở mức tối thiểu cần thiết để giám sát hoạt động.
Đối với hiệu suất, việc giám sát là cần thiết, nhưng cũng cần phải sử dụng nó một cách an toàn cho hệ thống của chúng tôi.
Chúng tôi phải cẩn thận để không tạo ra quyền truy cập đĩa cao bất hợp lý hoặc chạy các truy vấn ảnh hưởng tiêu cực đến hiệu suất của cơ sở dữ liệu của chúng tôi.
Nếu chúng ta có nhiều giao dịch mỗi giây tạo ra hàng gigabyte nhật ký và chúng ta liên tục tìm kiếm lỗi, thì đó có lẽ không phải là cách tốt nhất cho cơ sở dữ liệu của chúng ta. Vì vậy, chúng tôi phải giữ cân bằng giữa những gì chúng tôi theo dõi, tần suất và tác động đến hiệu suất.
Kết luận
Có nhiều cách để triển khai giám sát hoặc cấu hình nó. Chúng tôi có thể làm điều đó phức tạp hoặc đơn giản tùy ý. Mục tiêu của blog này là giới thiệu cho bạn cách giám sát PostgreSQL bằng cách sử dụng một trong những công cụ mã nguồn mở được sử dụng nhiều nhất. Chúng tôi cũng nhận thấy rằng cấu hình này rất linh hoạt và có thể được điều chỉnh theo các nhu cầu khác nhau.
Và đừng quên rằng chúng ta luôn có thể dựa vào cộng đồng, vì vậy tôi để lại một số liên kết có thể giúp ích rất nhiều.
Diễn đàn hỗ trợ:https://support.nagios.com/forum/
Các vấn đề đã biết:https://github.com/NagiosEnterranty/nagioscore/issues
Nagios Plugins:https://exchange.nagios.org/directory/Plugins
Plugin Nagios cho ClusterControl:https://severalnines.com/blog/nagios-plugin-clustercontrol