最近做了关于postgresql数据库的简单监控,脚本如下:
import psycopg2
import sys
sqlItem = {
'alive': "select 1;", # 监控存活
'active_connections': "select count(*) from pg_stat_activity where state = 'active';", # 当前会话数
'server_connections': "select count(*) from pg_stat_activity where backend_type = 'client backend'", # 服务端进程数
'idle_connections': "select count(*) from pg_stat_activity where state = 'idle'", # 空闲连接
'idle_tx_connections': "select count(*) from pg_stat_activity where state = 'idle in transaction'", # 空闲连接事务
'locks_waiting': "select count(*) from pg_stat_activity where backend_type = 'client backend' and wait_event_type like '%Lock%'", # 锁等待
'server_maxcon': "select setting::int from pg_settings where name = 'max_connections'", # 服务端最大连接数
'tx_commited': "select sum(xact_commit) from pg_stat_database", # 事务提交
'tx_rollbacked': "select sum(xact_rollback) from pg_stat_database