温馨提示×

CentOS怎样监控PostgreSQL

小樊
46
2026-08-05 00:11:43
栏目: 云计算

CentOS 上监控 PostgreSQL,可以从 系统资源、数据库内存/连接、SQL 性能、慢查询、日志 多个层面来做。下面给你一个从基础到进阶的完整方案


一、基础监控(最常用)

1. 查看 PostgreSQL 进程

ps -ef | grep postgres

2. 查看端口与连接数

netstat -an | grep 5432

ss -lntp | grep postgres

二、使用 PostgreSQL 自带工具

1. 使用 psql 查看状态

su - postgres
psql

常用 SQL:

-- 当前连接数
SELECT count(*) FROM pg_stat_activity;

-- 当前活跃连接
SELECT pid, usename, datname, state, query
FROM pg_stat_activity
WHERE state = 'active';

-- 查看慢查询
SELECT pid, now() - query_start AS duration, query
FROM pg_stat_activity
WHERE (now() - query_start) > interval '5 seconds';

2. 查看表与索引统计

-- 表大小
SELECT relname, pg_size_pretty(pg_total_relation_size(relid))
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC;

-- 索引使用率
SELECT * FROM pg_stat_user_indexes;

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

1. 开启 PostgreSQL 日志

编辑配置文件:

vim /var/lib/pgsql/data/postgresql.conf

推荐配置:

logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d.log'
log_min_duration_statement = 500   # 记录超过 500ms 的 SQL
log_connections = on
log_disconnections = on

重启 PostgreSQL:

systemctl restart postgresql

2. 查看日志

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

四、系统级监控(CentOS)

1. CPU / 内存 / IO

top
htop
iostat -x 1

2. 磁盘空间

df -h

PostgreSQL 数据目录默认:

/var/lib/pgsql/data

五、使用 pg_stat_statements(强烈推荐)

1. 启用扩展

CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

配置 postgresql.conf

shared_preload_libraries = 'pg_stat_statements'

重启数据库。

2. 查询慢 SQL 排行

SELECT query, calls, total_time, mean_time
FROM pg_stat_statements
ORDER BY total_time DESC
LIMIT 10;

六、可视化监控方案(生产环境)

方案 1:pgAdmin(简单)

  • Web 界面
  • 查看状态、慢查询、锁

方案 2:Prometheus + Grafana(专业 ✅)

架构

PostgreSQL
  ↓
postgres_exporter
  ↓
Prometheus
  ↓
Grafana

优点

  • 实时监控
  • 告警
  • 图表丰富

方案 3:Zabbix 监控 PostgreSQL

  • 支持模板
  • 自动告警
  • 企业常用

七、监控指标清单(重点)

分类 指标
连接 当前连接数、最大连接数
性能 QPS、TPS、慢查询
资源 CPU、内存、磁盘 IO
死锁、等待事件
膨胀、缺失索引

八、推荐组合(实战)

中小系统

psql + pg_stat_activity + 日志

生产环境

pg_stat_statements + Prometheus + Grafana

如果你愿意,我可以:

  • ✅ 给你一份 Prometheus + Grafana 一键配置
  • ✅ 帮你 写 PostgreSQL 健康巡检脚本
  • ✅ 针对 **某版本(如 PG12/13/14)**优化监控方案

你现在用的是 CentOS 几 + PostgreSQL 几

0