暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

作者:阎书利
check_postgres.pl是一个 Perl 脚本,它针对一个或多个 Postgres 数据库运行许多不同的测试检查。使用 psql 程序收集信息。
check_postgres涉及方面比较广泛,不仅有常规方面检查,同时也涉及一些主流工具的检查,如:pgbouncer、pgAgent、slony、bucardo等。
可以去如下网站下载脚本
https://bucardo.org/check_postgres/
[postgres@t1ysl ~]$ lltotal 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 ~]$ lltotal 208drwxr-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

安装所需环境
[root@t1ysl ~]# yum install perl-DBI perl-DBD-Pg perl-DBD-Pg-tests perl-Time-HiRes -yLoaded plugins: fastestmirrorLoading 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.PLConfiguring check_postgres 2.25.0Checking if your kit is complete...Warning: the following files are missing in your kit:    MYMETA.json    MYMETA.ymlPlease inform the author.Writing Makefile for check_postgres[root@t1ysl check_postgres-2.25.0]# makecp check_postgres.pl blib/script/check_postgres.pl/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/check_postgres.plManifying blib/man1/check_postgres.1p[root@t1ysl check_postgres-2.25.0]# make installAppending 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 - postgresLast 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 --symlinksCreated '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]$ lltotal 0lrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_archive_ready -> /usr/local/bin/check_postgres.pllrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_autovac_freeze -> /usr/local/bin/check_postgres.pllrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_backends -> /usr/local/bin/check_postgres.pllrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_bloat -> /usr/local/bin/check_postgres.pllrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_checkpoint -> /usr/local/bin/check_postgres.pllrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_cluster_id -> /usr/local/bin/check_postgres.pllrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_commitratio -> /usr/local/bin/check_postgres.pllrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_connection -> /usr/local/bin/check_postgres.pllrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_custom_query -> /usr/local/bin/check_postgres.pllrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_database_size -> /usr/local/bin/check_postgres.pllrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_dbstats -> /usr/local/bin/check_postgres.pllrwxrwxrwx 1 postgres dba 32 Jul 26 07:21 check_postgres_disabled_triggers -> /usr/local/bin/check_postgres.pllrwxrwxrwx 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=postgresPOSTGRES_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
其余使用方法可以参考
https://bucardo.org/check_postgres/check_postgres.pl.html



规模空前,再创历史 | 2020 PG亚洲大会圆满结束
PG ACE计划的正式发布
三期PostgreSQL国际线上沙龙活动的举办
六期PostgreSQL国内线上沙龙活动的举办

中国PostgreSQL分会与腾讯云战略合作协议签订


PostgreSQL 13.0 正式版发布通告

深度报告:开源协议那些事儿

从“非主流”到“潮流”,开源早已值得拥有

Oracle中国正在进行新一轮裁员,传 N+6 补偿

PostgreSQL与MySQL版权比较

新闻|Babelfish使PostgreSQL直接兼容SQL Server应用程序

四年三冠,PostgreSQL再度荣获“年度数据库”


更多新闻资讯行业动态技术热点,请关注中国PostgreSQL分会官方网站

https://www.postgresqlchina.com

中国PostgreSQL分会生态产品

https://www.pgfans.cn

中国PostgreSQL分会资源下载站

https://www.postgreshub.cn


点赞在看分享收藏
文章转载自开源软件联盟PostgreSQL分会,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论