温馨提示×

centos如何监postgresql库

小樊
38
2026-09-24 16:21:26
栏目: 云计算

在 CentOS 上监控 PostgreSQL 数据库,可以从 系统层、数据库层、日志、第三方工具 几个维度来做。下面按常见实用方式给你梳理。


一、使用 PostgreSQL 自带工具

1️⃣ psql 查看状态

psql -U postgres -c "SELECT version();"
psql -U postgres -c "SELECT now();"

查看连接数:

SELECT count(*) FROM pg_stat_activity;

查看慢查询:

SELECT * FROM pg_stat_activity
WHERE state <> 'idle'
ORDER BY query_start;

2️⃣ 系统视图(非常重要)

-- 表级统计
SELECT * FROM pg_stat_user_tables;

-- 索引使用
SELECT * FROM pg_stat_user_indexes;

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

二、开启并查看 PostgreSQL 日志(推荐)

1️⃣ 修改配置文件

路径一般为:

/var/lib/pgsql/<版本>/data/postgresql.conf

关键参数:

logging_collector = on
log_directory = 'log'
log_min_duration_statement = 1000   # 记录超过1秒的SQL
log_connections = on
log_disconnections = on
log_line_prefix = '%t %u %d %p'

重启:

systemctl restart postgresql

2️⃣ 查看日志

tail -f /var/lib/pgsql/<版本>/data/log/*.log

三、CentOS 系统级监控

1️⃣ 进程 & 资源

ps aux | grep postgres
top
htop

2️⃣ 端口监听

ss -lntp | grep 5432

3️⃣ 磁盘 & IO

df -h
iostat -x 1

四、使用 pg_stat_statements(强烈推荐)

1️⃣ 安装扩展

CREATE EXTENSION pg_stat_statements;

2️⃣ 配置

shared_preload_libraries = 'pg_stat_statements'

重启后查看:

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

五、第三方监控方案(生产环境推荐)

✅ Prometheus + Grafana

  • postgres_exporter
  • Grafana 官方 PostgreSQL Dashboard

✅ Zabbix

  • 使用 Zabbix PostgreSQL 模板
  • 监控:连接数、复制、慢查询、磁盘

✅ pgAdmin

  • 图形化监控
  • 适合开发/运维排查

六、主从/复制监控(如启用)

SELECT * FROM pg_stat_replication;

七、简单巡检脚本示例

#!/bin/bash
psql -U postgres -c "SELECT count(*) FROM pg_stat_activity;"
psql -U postgres -c "SELECT datname, blks_read, blks_hit FROM pg_stat_database;"

如果你能告诉我:

  • PostgreSQL 版本
  • CentOS 版本
  • 是否生产环境
  • 是否主从

我可以给你一套 更精准的监控方案或脚本。

0 踩