温馨提示×

centos怎样监控postgresql状态

小樊
37
2026-09-09 10:26:51
栏目: 云计算

在 CentOS 上监控 PostgreSQL 的状态,常见方式可以分为 系统级监控、数据库内置监控、日志监控、以及第三方工具。下面按实用程度给你梳理一套方案。


一、系统级状态查看(最基础)

1. 查看 PostgreSQL 服务状态

systemctl status postgresql
# 或指定版本
systemctl status postgresql-15

启动 / 停止 / 重启:

systemctl start postgresql
systemctl stop postgresql
systemctl restart postgresql

2. 查看监听端口

ss -lntp | grep postgres
# 或
netstat -lntp | grep 5432

3. 查看进程

ps -ef | grep postgres

二、使用 psql 查看数据库状态(推荐)

1. 连接数据库

su - postgres
psql

2. 查看连接数

SELECT count(*) FROM pg_stat_activity;

3. 查看当前活动连接

SELECT pid, usename, application_name, client_addr, state, query
FROM pg_stat_activity;

4. 查看数据库大小

\l+ 
-- 或
SELECT datname, pg_size_pretty(pg_database_size(datname))
FROM pg_database;

5. 查看表状态

SELECT * FROM pg_stat_user_tables;

三、日志监控(非常重要)

PostgreSQL 日志位置(CentOS 常见)

/var/lib/pgsql/15/data/log/
# 或
/var/log/postgresql/

实时查看:

tail -f /var/lib/pgsql/15/data/log/postgresql-*.log

建议开启:

  • log_connections = on
  • log_disconnections = on
  • log_min_duration_statement = 1000(慢查询)

四、使用 pg_stat 系列视图(专业监控)

-- 等待事件
SELECT * FROM pg_stat_activity WHERE wait_event IS NOT NULL;

-- 锁等待
SELECT * FROM pg_locks WHERE NOT granted;

-- 数据库整体统计
SELECT * FROM pg_stat_database;

五、命令行工具(轻量)

pg_isready(检查是否可用)

pg_isready -h 127.0.0.1 -p 5432

pg_top(类似 top)

yum install pg_top
pg_top

六、第三方监控方案(生产推荐)

1. Prometheus + node_exporter + postgres_exporter

  • 监控 CPU / 内存 / 磁盘
  • 监控连接数、QPS、慢查询

2. Grafana

  • 配合 Prometheus 做可视化面板

3. Zabbix

  • 自带 PostgreSQL 模板

七、简单定时监控脚本示例

#!/bin/bash
COUNT=$(psql -t -c "SELECT count(*) FROM pg_stat_activity;" | xargs)
echo "$(date) connections: $COUNT" >> /var/log/pg_monitor.log

加入 crontab:

* * * * * /root/pg_monitor.sh

如果你能告诉我:

  • PostgreSQL 版本
  • 是单机还是主从
  • 想要“实时告警”还是“日常观察”

我可以给你一套 更精确的监控方案或配置文件示例

0