温馨提示×

centos如何监控postgresql

小樊
36
2026-09-06 12:24:51
栏目: 云计算

在 CentOS 上监控 PostgreSQL,可以从系统层、数据库层、日志、以及第三方工具几个维度来做。下面按“由浅入深”的方式说明。


一、系统级监控(CentOS 层面)

1. 查看 PostgreSQL 进程

ps -ef | grep postgres

systemctl status postgresql

2. 查看端口与连接

ss -lntp | grep 5432

netstat -an | grep 5432

3. 系统资源监控

top
htop
iostat -x 1
free -h

关注:

  • CPU 使用率
  • 内存使用
  • 磁盘 I/O(PostgreSQL 对磁盘很敏感)

二、PostgreSQL 自带监控方式

1. 使用 psql 查看状态

su - postgres
psql

常用 SQL:

-- 当前连接
SELECT * FROM pg_stat_activity;

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

-- 表级统计
SELECT * FROM pg_stat_user_tables;

-- 慢查询
SELECT * FROM pg_stat_activity
WHERE state <> 'idle'
ORDER BY query_start;

2. 启用慢查询日志

编辑 postgresql.conf(通常在 /var/lib/pgsql/data//etc/postgresql/):

log_min_duration_statement = 1000  # 记录超过 1 秒的 SQL
logging_collector = on
log_directory = 'log'

重启:

systemctl restart postgresql

三、使用 PostgreSQL 内置命令工具

1. pg_stat_statements(推荐)

CREATE EXTENSION pg_stat_statements;

配置:

shared_preload_libraries = 'pg_stat_statements'

查看最耗资源的 SQL:

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

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

1. pgAdmin(图形化)

  • 适合单机或开发环境
  • 可查看:
    • 连接
    • 慢查询

2. Prometheus + Grafana(生产级)

组件:

  • postgres_exporter
  • Prometheus
  • Grafana

流程:

PostgreSQL → postgres_exporter → Prometheus → Grafana

监控指标示例:

  • QPS
  • 连接数
  • 锁等待
  • 缓存命中率
  • 复制延迟

3. Zabbix 监控 PostgreSQL

  • 使用 Zabbix agent + PostgreSQL 模板
  • 适合已有 Zabbix 环境

五、常用关键监控指标(重点)

指标 说明
连接数 是否接近 max_connections
慢查询 是否存在长时间 SQL
锁等待 是否有死锁或长事务
缓存命中率 低于 95% 可能有问题
WAL 生成量 写压力
复制延迟 主从是否同步

六、简单示例:查看连接数是否过多

SELECT count(*) FROM pg_stat_activity;
SHOW max_connections;

如果你愿意,我可以:

  • 给你一套 CentOS + Prometheus + Grafana 的完整配置
  • 或针对 单机 / 主从 / 高并发场景 给监控建议

0