check_postgres 检测数据库的健康并报告异常情况
os: centos 7.4 
postgresql: 10.4 
check_postgres: 2.24.0
check_postgres is a script for monitoring various attributes of your database. It is designed to work with Nagios, MRTG, or in standalone scripts
安装
# yum install perl-DBI perl-DBD-Pg
# su - postgres
$ cd /tmp
$ git clone https://github.com/bucardo/check_postgres.git
$ cd check_postgres/
$ perl Makefile.PL
$ make
$ LC_ALL=C make test PGBINDIR=/usr/pgsql-10/bin
# make install
Manifying blib/man1/check_postgres.1p
Installing /usr/local/share/man/man1/check_postgres.1p
Installing /usr/local/bin/check_postgres.pl
Appending installation info to /usr/lib64/perl5/perllocal.pod
$ which check_postgres.pl
/usr/local/bin/check_postgres.pl
$ man check_postgres
# cd /usr/local/bin/
# check_postgres.pl --symlinks使用
$ check_postgres.pl --action=connection --db=peiybdb
POSTGRES_CONNECTION OK: DB "peiybdb" version 10.4 | time=0.14s 
$ check_postgres_locks --warning=100 --critical="total=200:exclusive=20"
POSTGRES_LOCKS OK: DB "postgres" total=1  | time=0.00s peiybdb.total=0;100;200 postgres.total=1;100;200 template1.total=0;100;200 trade.total=0;100;200 
$ check_postgres_txn_idle --port=5432 --warning='+50' --critical='5 for 10 seconds'
POSTGRES_TXN_IDLE OK: DB "postgres" no idle in transaction | time=0.54s transaction_time=0;;10 
分析下 check_postgres_locks 具体查询细节
$ vi /usr/local/bin/check_postgres.pl
sub check_locks {
    ## Check the number of locks
    ## Supports: Nagios, MRTG
    ## By default, checks all databases
    ## Can check specific databases with include
    ## Can ignore databases with exclude
    ## Warning and critical are either simple numbers, or more complex:
    ## Use locktype=number:locktype2=number
    ## The locktype can be "total", "waiting", or the name of a lock
    ## Lock names are case-insensitive, and do not need the "lock" at the end.
    ## Example: --warning=100 --critical="total=200;exclusive=20;waiting=5"
$SQL = q{SELECT granted, mode, datname FROM pg_locks l RIGHT JOIN pg_database d ON (d.oid=l.database) WHERE d.datallowconn};
 define command {
     command_name    check_postgres_locks
     command_line    $USER2$/check_postgres.pl -H $HOSTADDRESS$ -u pgsql -db postgres --action locks -w $ARG1$ -c $ARG2$
 }集成化脚本。
参考: 
http://postgres.cn/docs/10/maintenance.html
https://bucardo.org/check_postgres/ 
https://bucardo.org/check_postgres/check_postgres.pl.html
http://bucardo.org/wiki/Check_postgres
https://github.com/bucardo/check_postgres/
https://github.com/bucardo/check_postgres/blob/master/README.dev
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号