【check_postgres脚本集检查数据库健康情况】

check_postgres.pl是一个 Perl 脚本,它针对一个或多个PG数据库运行许多不同的测试检查。使用 psql 程序收集信息。
check_postgres涉及方面比较广泛,不仅有常规方面检查,同时也涉及一些主流工具的检查,如:pgbouncer、pgAgent、slony、bucardo等。
可以去如下网站下载脚本
Check postgres

[postgres@t1ysl ~]$ ll
total 208
-rw-r--r-- 1 postgres dba 209715 Aug 10  2021 check_postgres.tar.gz
[postgres@t1ysl ~]$ tar -xf check_postgres.tar.gz
[postgres@t1ysl ~]$ ll
total 208
drwxr-xr-x 3 postgres dba    289 Feb  4  2020 check_postgres-2.25.0
-rw-r--r-- 1 postgres dba 209715 Aug 10  2021 check_postgres.tar.gz

Image.png

安装所需环境

[root@t1ysl ~]# yum install perl-DBI perl-DBD-Pg perl-DBD-Pg-tests perl-Time-HiRes -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn

安装

[root@t1ysl check_postgres-2.25.0]# perl Makefile.PL
Configuring check_postgres 2.25.0
Checking if your kit is complete...
Warning: the following files are missing in your kit:
    MYMETA.json
    MYMETA.yml
Please inform the author.
Writing Makefile for check_postgres
[root@t1ysl check_postgres-2.25.0]# make
cp check_postgres.pl blib/script/check_postgres.pl
/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/check_postgres.pl
Manifying blib/man1/check_postgres.1p
[root@t1ysl check_postgres-2.25.0]# make install
Appending installation info to /usr/lib64/perl5/perllocal.pod


[root@t1ysl check_postgres-2.25.0]# mkdir -p /opt/check_postgres/bin
[root@t1ysl check_postgres-2.25.0]# chown postgres:postgres /opt/check_postgres/ -R
[root@t1ysl check_postgres-2.25.0]# su - postgres
Last login: Mon Jul 26 06:16:02 CST 2021 on pts/1
[postgres@t1ysl ~]$ cd /opt/check_postgres/bin/

[postgres@t1ysl bin]$ check_postgres.pl --symlinks
Created "check_postgres_archive_ready"
Created "check_postgres_autovac_freeze"
Created "check_postgres_backends"
Created "check_postgres_bloat"
Created "check_postgres_checkpoint"
Created "check_postgres_cluster_id"
Created "check_postgres_commitratio"
Created "check_postgres_connection"
Created "check_postgres_custom_query"
Created "check_postgres_database_size"


[postgres@t1ysl bin]$ ll
total 0
lrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_archive_ready -> /usr/local/bin/check_postgres.pl
lrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_autovac_freeze -> /usr/local/bin/check_postgres.pl
lrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_backends -> /usr/local/bin/check_postgres.pl
lrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_bloat -> /usr/local/bin/check_postgres.pl
lrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_checkpoint -> /usr/local/bin/check_postgres.pl
lrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_cluster_id -> /usr/local/bin/check_postgres.pl
lrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_commitratio -> /usr/local/bin/check_postgres.pl
lrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_connection -> /usr/local/bin/check_postgres.pl
lrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_custom_query -> /usr/local/bin/check_postgres.pl
lrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_database_size -> /usr/local/bin/check_postgres.pl
lrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_dbstats -> /usr/local/bin/check_postgres.pl
lrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_disabled_triggers -> /usr/local/bin/check_postgres.pl
lrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_disk_space -> /usr/local/bin/check_postgres.p

使用

[postgres@t1ysl bin]$ ./check_postgres_txn_idle --port=6000 --warning='+50' --critical='5 for 10 seconds'
POSTGRES_TXN_IDLE OK: DB "postgres" (host:/opt/data6000) (port=6000) no idle in transaction | time=0.01s transaction_time=0;;10

[postgres@t1ysl bin]$ ./check_postgres_locks --warning=100 --critical="total=200:exclusive=20"
POSTGRES_LOCKS OK: DB "postgres" (host:/opt/data6000) (port=6000) total=1  | time=0.00s postgres.exclusive=0;;20 postgres.total=1;100;200 template1.exclusive=0;;20 template1.total=0;100;200

[postgres@t1ysl bin]$ check_postgres.pl --action=connection --db=postgres
POSTGRES_CONNECTION OK: DB "postgres" (host:/opt/data6000) (port=6000) version 12.1 | time=0.00s


[postgres@t1ysl bin]$ ./check_postgres_query_time --port=6000 --warning='3 minutes' --critical='5 minutes'
POSTGRES_QUERY_TIME OK: DB "postgres" (host:/opt/data6000) (port=6000) longest query: 0s  | time=0.01s query_time=0s;180;300

支持的检查如下

 archive_ready         - Check the number of WAL files ready in the pg_xlog/archive_status
 autovac_freeze        - Checks how close databases are to autovacuum_freeze_max_age.
 backends              - Number of connections, compared to max_connections.
 bloat                 - Check for table and index bloat.
 checkpoint            - Checks how long since the last checkpoint
 cluster_id            - Checks the Database System Identifier
 commitratio           - Report if the commit ratio of a database is too low.
 connection            - Simple connection check.
 custom_query          - Run a custom query.
 database_size         - Report if a database is too big.
 dbstats               - Returns stats from pg_stat_database: Cacti output only
 disabled_triggers     - Check if any triggers are disabled
 disk_space            - Checks space of local disks Postgres is using.
 fsm_pages             - Checks percentage of pages used in free space map.
 fsm_relations         - Checks percentage of relations used in free space map.
 hitratio              - Report if the hit ratio of a database is too low.
 hot_standby_delay     - Check the replication delay in hot standby setup
 index_size            - Checks the size of indexes only.
 last_analyze          - Check the maximum time in seconds since any one table has been analyzed.
 last_autoanalyze      - Check the maximum time in seconds since any one table has been autoanalyzed.
 last_autovacuum       - Check the maximum time in seconds since any one table has been autovacuumed.
 last_vacuum           - Check the maximum time in seconds since any one table has been vacuumed.
 listener              - Checks for specific listeners.
 locks                 - Checks the number of locks.
 logfile               - Checks that the logfile is being written to correctly.
 new_version_bc        - Checks if a newer version of Bucardo is available.
 new_version_box       - Checks if a newer version of boxinfo is available.
 new_version_cp        - Checks if a newer version of check_postgres.pl is available.
 new_version_pg        - Checks if a newer version of Postgres is available.
 new_version_tnm       - Checks if a newer version of tail_n_mail is available.
 pgagent_jobs          - Check for no failed pgAgent jobs within a specified period of time.
 pgb_pool_cl_active    - Check the number of active clients in each pgbouncer pool.
 pgb_pool_cl_waiting   - Check the number of waiting clients in each pgbouncer pool.
 pgb_pool_maxwait      - Check the current maximum wait time for client connections in pgbouncer pools.
 pgb_pool_sv_active    - Check the number of active server connections in each pgbouncer pool.
 pgb_pool_sv_idle      - Check the number of idle server connections in each pgbouncer pool.
 pgb_pool_sv_login     - Check the number of login server connections in each pgbouncer pool.
 pgb_pool_sv_tested    - Check the number of tested server connections in each pgbouncer pool.
 pgb_pool_sv_used      - Check the number of used server connections in each pgbouncer pool.
 pgbouncer_backends    - Check how many clients are connected to pgbouncer compared to max_client_conn.
 pgbouncer_checksum    - Check that no pgbouncer settings have changed since the last check.
 prepared_txns         - Checks number and age of prepared transactions.
 query_runtime         - Check how long a specific query takes to run.
 query_time            - Checks the maximum running time of current queries.
 relation_size         - Checks the size of tables and indexes.
 replicate_row         - Verify a simple update gets replicated to another server.
 same_schema           - Verify that two databases have the exact same tables, columns, etc.
 sequence              - Checks remaining calls left in sequences.
 settings_checksum     - Check that no settings have changed since the last check.
 slony_status          - Ensure Slony is up to date via sl_status.
 table_size            - Checks the size of tables only.
 timesync              - Compare database time to local system time.
 txn_idle              - Checks the maximum "idle in transaction" time.
 txn_time              - Checks the maximum open transaction time.
 txn_wraparound        - See how close databases are getting to transaction ID wraparound.
 version               - Check for proper Postgres version.
 wal_files             - Check the number of WAL files in the pg_xlog directory

其余使用方法可以参考
check_postgres.pl

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小怪兽ysl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值