温馨提示×

怎么监控CentOS的PostgreSQL

小樊
34
2026-08-20 04:00:32
栏目: 云计算

CentOS 上监控 PostgreSQL,可以从 系统级、数据库级、日志、第三方工具 四个层面来做。下面给你一套从“基础 → 进阶 → 企业级”的完整方案。


一、系统级监控(基础必做)

1️⃣ 查看 PostgreSQL 进程

ps -ef | grep postgres

2️⃣ 查看端口监听

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

3️⃣ 查看资源占用

top -u postgres
htop

4️⃣ 查看磁盘使用

df -h
du -sh /var/lib/pgsql/*

二、PostgreSQL 自带监控方式(核心)

✅ 1️⃣ 使用 pg_stat_* 视图(最重要)

进入数据库:

sudo -u postgres psql

查看连接数

SELECT count(*) FROM pg_stat_activity;

查看当前活跃 SQL

SELECT pid, usename, application_name, state, query
FROM pg_stat_activity
WHERE state = 'active';

查看慢查询

SELECT pid, now() - query_start AS duration, query
FROM pg_stat_activity
WHERE state = 'active'
ORDER BY duration DESC;

✅ 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 relname, idx_scan, seq_scan
FROM pg_stat_user_tables;

✅ 3️⃣ 数据库整体状态

SELECT datname, numbackends, xact_commit, xact_rollback
FROM pg_stat_database;

三、日志监控(非常关键)

1️⃣ 开启 PostgreSQL 日志

编辑配置文件:

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

推荐配置:

logging_collector = on
log_directory = '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/log/postgresql-*.log

四、使用 pgBadger(日志分析神器)

安装

yum install -y epel-release
yum install -y pgbadger

分析日志

pgbadger /var/lib/pgsql/data/log/postgresql.log -o /var/www/html/pgbadger.html

浏览器打开即可看到:

  • 慢查询
  • 错误
  • 连接数
  • TOP SQL

五、企业级监控方案(强烈推荐)

✅ 1️⃣ Prometheus + Grafana(最主流)

架构

PostgreSQL → postgres_exporter → Prometheus → Grafana

安装 postgres_exporter

yum install -y golang
wget https://github.com/prometheus-community/postgres_exporter/releases/download/v0.15.0/postgres_exporter-0.15.0.linux-amd64.tar.gz

配置

export DATA_SOURCE_NAME="postgresql://postgres:password@localhost:5432/postgres?sslmode=disable"
./postgres_exporter

Grafana 仪表盘

  • 官方 ID:9628
  • 包含:
    • QPS
    • TPS
    • 连接数
    • 磁盘 IO

✅ 2️⃣ Zabbix 监控 PostgreSQL

Zabbix 自带 PostgreSQL 模板:

  • 连接数
  • 缓存命中率
  • 事务提交/回滚
  • 数据库大小

六、常见监控指标清单(重点)

分类 指标
连接 当前连接数
性能 QPS / TPS
查询 慢查询
等待锁
缓存 缓存命中率
磁盘 数据目录大小
错误 日志异常

七、快速排错命令

-- 查看锁
SELECT * FROM pg_locks;

-- 查看阻塞
SELECT pid, usename, query, wait_event_type
FROM pg_stat_activity
WHERE wait_event_type IS NOT NULL;

八、推荐方案总结

小环境

  • pg_stat_activity + 日志

生产环境

  • Prometheus + Grafana + postgres_exporter

日志分析

  • pgBadger

如果你愿意,我可以:

  • ✅ 给你 CentOS 7 / 8 具体安装命令
  • ✅ 帮你 写 Prometheus + Grafana 完整部署教程
  • ✅ 根据你 数据库规模推荐监控方案

你现在用的是 单机还是主从?PostgreSQL 几版本?

0