CentOS 上 pgAdmin 监控与日志分析实操
一 监控体系总览
- 使用 pgAdmin 内置 Dashboard 观察数据库实时状态:连接数、每秒事务数、元组读写、块 I/O、Server Activity 等,用于日常巡检与快速定位异常会话与阻塞。
- 借助 Linux 系统工具 观察资源瓶颈:top/htop(CPU/内存)、vmstat(系统整体)、iostat(磁盘 I/O)、free(内存)、df(磁盘空间)、netstat(网络连接)。
- 深入 PostgreSQL 内置视图 做细粒度诊断:pg_stat_activity(当前会话与查询)、pg_stat_statements(SQL 统计与耗时)、pg_stat_database(库级事务与读写)、复制场景用 pg_stat_replication。
- 构建 Prometheus + Grafana 长期监控与告警:以 PostgreSQL Exporter 采集指标,Grafana 展示面板并设置阈值告警。
二 pgAdmin 内置监控与快速排障
- 启用与连接:在 CentOS 安装并启动 pgAdmin 后,新增服务器连接(主机、端口 5432、维护库 postgres、凭据),左侧展开目标服务器即可访问监控页面。
- 关键面板:进入数据库的 Dashboard,重点关注
- Server sessions(当前连接与会话分布)
- Transactions per second(TPS)
- Tuples in / Tuples out(读写行数)
- Block I/O(读写块数)
- Server activity(活跃查询、锁等待、阻塞)
- 辅助诊断:在查询工具中使用 EXPLAIN / EXPLAIN ANALYZE 查看执行计划与实际耗时,定位慢查询与扫描方式问题。
三 PostgreSQL 日志管理与分析
- 日志位置与查看
- 常见路径:/var/log/postgresql/(如 postgresql-<版本>-main.log);实时查看:tail -f;检索错误:grep “error”;分页:less。
- 关键配置(postgresql.conf)
- 启用日志收集:logging_collector = on
- 日志目录与命名:log_directory、log_filename(建议含时间戳便于轮转)
- 语句与耗时记录:
- log_statement = ‘all’(记录全部语句,调试阶段建议)
- log_min_duration_statement = 1000(单位毫秒,记录超过阈值的慢查询,如 1 秒)
- 日志轮转与归档
- 使用 log_rotation_age / log_rotation_size 控制按天/按大小切割;长期保留建议接入 logrotate 或 ELK/Fluentd 做归档与分析。
- 分析工具
- pgBadger:将 PostgreSQL 日志生成 HTML 报告(Top SQL、慢查询、错误、会话等),适合周报与瓶颈定位。
- 其他:pgFouine、ELK Stack(Elasticsearch/Logstash/Kibana)用于集中化检索与可视化。
四 系统资源与查询性能联动分析
- 资源瓶颈定位
- CPU/内存:top/htop 观察 postgres 进程占用;free 检查可用内存;vmstat 看上下文切换与 I/O 等待。
- 磁盘 I/O:iostat -x 1 检查 await、svctm、util,识别磁盘饱和。
- 网络:netstat -s 或 ss -s 检查连接状态与重传。
- 数据库侧联动
- 活跃会话与阻塞:查询 pg_stat_activity,关注 state、wait_event_type/wait_event、query。
- 全局负载与吞吐:pg_stat_database 观察 commits/rollbacks、tup_returned/tup_fetched。
- SQL 耗时与频次:启用 pg_stat_statements,识别高频与高耗时语句(配合 EXPLAIN ANALYZE 优化)。
五 Prometheus Grafana 长期监控与告警
- 组件与部署
- 部署 Prometheus 与 Grafana;为 PostgreSQL 部署 PostgreSQL Exporter(或 pgBadger 报告接入 Grafana)。
- 配置抓取(prometheus.yml 示例)
- scrape_configs:
- job_name: ‘postgresql’
static_configs:
- targets: [‘<数据库主机>:9187’]
- 可视化与告警
- Grafana 添加 Prometheus 数据源,导入 PostgreSQL 官方/社区面板;为关键指标(如连接数、慢查询数、复制延迟、磁盘 util)设置阈值告警并对接邮件/企业微信/钉钉。