温馨提示×

如何监控debian postgresql

小樊
36
2026-10-08 08:34:35
栏目: 云计算

在 Debian 上监控 PostgreSQL,可以从系统层、数据库层、日志、第三方工具几个维度来做。下面按实用程度给你一套方案。


一、系统层监控(基础)

1. 系统资源

top
htop
free -h
df -h
iostat -x 1

重点关注:

  • CPU 使用率
  • 内存(是否 swap)
  • 磁盘 IO(pg 很依赖 IO)
  • 磁盘空间(WAL、数据目录)

2. 服务状态

systemctl status postgresql
journalctl -u postgresql -f

二、PostgreSQL 自带监控(最重要)

1. 连接数监控

SELECT count(*) FROM pg_stat_activity;

查看连接来源:

SELECT datname, usename, client_addr, state, count(*)
FROM pg_stat_activity
GROUP BY 1,2,3,4;

2. 慢查询 / 活跃查询

SELECT pid, now()-query_start AS dur, state, query
FROM pg_stat_activity
WHERE state <> 'idle'
ORDER BY dur DESC;

3. 表 & 索引使用

SELECT relname, seq_scan, idx_scan, n_live_tup
FROM pg_stat_user_tables
ORDER BY seq_scan DESC;

4. 锁等待

SELECT * FROM pg_locks WHERE NOT granted;

5. 复制状态(主从)

SELECT * FROM pg_stat_replication;

三、日志监控(强烈建议)

1. 开启慢日志(Debian 默认配置路径)

/etc/postgresql/<version>/main/postgresql.conf

推荐配置:

logging_collector = on
log_min_duration_statement = 1000   # 慢于1秒
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d '
log_connections = on
log_disconnections = on

查看日志:

tail -f /var/log/postgresql/postgresql-*.log

四、命令行实用工具

1. pg_stat_statements(最推荐)

启用:

shared_preload_libraries = 'pg_stat_statements'
CREATE EXTENSION pg_stat_statements;

查看最耗时 SQL:

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

2. pg_top

apt install pgtop
pg_top

类似 top,但针对 PostgreSQL。


五、可视化 / 告警(生产推荐)

1. Prometheus + Grafana(主流方案)

组件:

  • postgres_exporter
  • Prometheus
  • Grafana

快速示例:

apt install prometheus postgresql-exporter

Grafana 模板:

  • ID: 9628(PostgreSQL Dashboard)

2. Netdata(零配置)

bash <(curl -Ss https://my-netdata.io/kickstart.sh)

自动监控 PG、CPU、IO。

3. Zabbix

适合已有 Zabbix 环境,模板成熟。


六、日常监控清单(建议)

✅ 连接数是否接近 max_connections
✅ 是否有长事务 / 锁等待
✅ 磁盘空间(尤其是 WAL)
✅ 慢 SQL 趋势
✅ 主从延迟
✅ 备份是否成功


如果你愿意,可以告诉我:

  • PostgreSQL 版本
  • 是否主从
  • 单机和还是生产集群
  • 想“实时看”还是“告警”

我可以直接帮你给一套可复制的配置。

0 踩