温馨提示×

怎样监控debian postgresql状态

小樊
37
2026-09-23 17:50:01
栏目: 云计算

在 Debian 上监控 PostgreSQL 的运行状态,可以从系统层、数据库层、日志层、以及自动化工具几个角度来做。下面按实用程度由浅入深说明。


一、系统层监控(最基础)

1. 查看 PostgreSQL 服务状态

systemctl status postgresql

或指定版本(如 15):

systemctl status postgresql@15-main

常见状态:

  • active (running):正常
  • failed:异常

2. 查看进程

ps aux | grep postgres

3. 查看监听端口

ss -tlnp | grep 5432

二、数据库层监控(核心)

1. 使用 psql 连接

sudo -u postgres psql

2. 查看当前连接数

SELECT count(*) FROM pg_stat_activity;

3. 查看数据库状态视图

\dx
SELECT * FROM pg_stat_database;

4. 查看慢查询 / 活跃查询

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

5. 查看锁等待

SELECT * FROM pg_locks WHERE NOT granted;

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

PostgreSQL 日志位置(Debian 默认)

/var/log/postgresql/postgresql-15-main.log

实时查看:

tail -f /var/log/postgresql/postgresql-15-main.log

建议开启的日志参数(postgresql.conf):

logging_collector = on
log_min_duration_statement = 1000  # 记录慢查询
log_connections = on
log_disconnections = on

修改后重启:

systemctl restart postgresql

四、使用内置统计与扩展

1. 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;

五、自动化 & 可视化监控(生产推荐)

1. Prometheus + postgres_exporter

apt install prometheus-postgres-exporter

配合 Grafana 做仪表盘。

2. pgAdmin

图形化查看状态、锁、连接。

3. Nagios / Zabbix

  • 监控服务是否存活
  • 连接数阈值
  • 复制延迟(主从)

六、主从复制监控(如有)

SELECT * FROM pg_stat_replication;

从库查看:

SELECT * FROM pg_stat_wal_receiver;

七、简单健康检查脚本示例

#!/bin/bash
if ! systemctl is-active --quiet postgresql; then
  echo "PostgreSQL is DOWN" | mail -s "PG Alert" admin@x.com
fi

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

  • PostgreSQL 版本
  • 是否主从
  • 是否生产环境
  • 想要“命令行”还是“图形化”

我可以给你一套更针对性的监控方案。

0 踩