首页主机资讯postgresql在ubuntu上如何监控

postgresql在ubuntu上如何监控

时间2026-01-21 17:16:07发布访客分类主机资讯浏览1071
导读:Ubuntu 上监控 PostgreSQL 的实用方案 一 内置视图快速巡检 连接数据库后,优先查看以下系统视图,获取会话、SQL、锁、复制与 WAL 的整体状态: 当前会话与阻塞:查询 pg_stat_activity,关注 stat...

Ubuntu 上监控 PostgreSQL 的实用方案

一 内置视图快速巡检

  • 连接数据库后,优先查看以下系统视图,获取会话、SQL、锁、复制与 WAL 的整体状态:
    • 当前会话与阻塞:查询 pg_stat_activity,关注 state、query、wait_event_type、wait_event,定位长事务与等待事件。
    • 锁争用:查询 pg_locks,结合 pg_stat_activity 找出持有锁与等待锁的会话,识别锁等待与死锁风险。
    • 慢查询与 SQL 统计:启用扩展 pg_stat_statements 后,按 total_time / mean_time 排序,优先优化高频高耗 SQL。
    • 数据库级负载与缓存:查询 pg_stat_database,用 blks_hit / (blks_hit + blks_read) 评估缓存命中率,低于 90% 需进一步排查(索引/内存/SQL)。
    • 表与索引热点:查询 pg_stat_user_tables / pg_stat_user_indexes,识别全表扫描与低效索引。
    • 后台写与检查点:查询 pg_stat_bgwriter,观察检查点与刷脏压力。
    • 复制与 WAL:查询 pg_stat_replication / pg_stat_wal_receiver,监控复制延迟与接收端状态。
    • 在线真空进度:查询 pg_stat_progress_vacuum,掌握 VACUUM 进度与阻塞情况。

二 日志与慢查询分析

  • postgresql.conf 中开启与慢查询相关的关键参数,并重启或重载:
    • 记录 DML/ALL:log_statement = ‘mod’(或 ‘all’
    • 记录长查询:log_min_duration_statement = 1000(单位毫秒,示例为 1 秒)
    • 记录锁等待:log_lock_waits = on
    • 启用日志收集:logging_collector = on
  • 日志分析工具:
    • 使用 pgBadger 解析 PostgreSQL 日志,生成 HTML 报告,快速洞察慢查询模式、错误与锁等待趋势。

三 系统级资源监控

  • 配合数据库指标,持续观察操作系统资源:
    • CPU/内存:top / htop / vmstat,关注 postgres 进程的 CPU 占用与 si/so(换入/换出)。
    • 磁盘 I/O:iostat -x 1,关注 %util(设备利用率)与 await(I/O 等待),接近 100% 通常表示存储瓶颈。
    • 网络:跨机房/高并发场景用 iftop / netstat 排查延迟与丢包。

四 持续监控与可视化方案

  • Prometheus + Grafana
    • 部署 postgres_exporter 采集数据库指标,Prometheus 存储与告警,Grafana 展示面板(连接数、缓存命中率、慢查询趋势、复制延迟等)。
    • 可使用 Elephant Shed 一站式集成 PostgreSQL + Prometheus + Grafana + pgBadger,快速搭建监控与日志分析平台。
  • Zabbix
    • 使用 Zabbix 6.x 在 Ubuntu 上部署服务器与代理,导入 PostgreSQL 模板(如社区模板 pg_monz),通过 userparameter 或 ODBC 采集指标并配置告警。
  • 轻量采集与一次性巡检
    • 使用 pgmetrics 连接数据库采集健康与性能数据,输出 JSON/CSV/Text,便于对接自有平台或做临时诊断。

五 落地配置与告警示例

  • 启用扩展与最小权限监控账号
    • 在目标库执行:
      • 创建监控账号:CREATE ROLE monitoring WITH LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE PASSWORD ‘***’;
      • 授予连接:GRANT CONNECT ON DATABASE your_db TO monitoring;
      • 按需授予只读权限(示例):GRANT USAGE ON SCHEMA public TO monitoring; GRANT SELECT ON ALL TABLES IN SCHEMA public TO monitoring; (生产环境请按最小权限细化)
      • 启用扩展:CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
  • Prometheus 告警规则示例(PromQL)
    • 连接数过高:sum(pg_stat_activity_count{ state=“active”} ) by (instance) > 100
    • 缓存命中率低:1 - sum(rate(pg_stat_database_blks_hit{ datname!~“template."} [5m])) / sum(rate(pg_stat_database_blks_read{ datname!~"template.”} [5m])) < 0.90
    • 复制延迟(秒):(pg_replication_lag_seconds{ application_name!~“.*sender”} ) > 30
  • 日志与报表例行化
    • 每日/每周用 pgBadger 生成报告,归档并对比趋势;对超过阈值的慢查询建立优化工单闭环。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: postgresql在ubuntu上如何监控
本文地址: https://pptw.com/jishu/788866.html
Debian系统下SecureCRT的文件传输方法 postgresql在ubuntu上如何设置权限

游客 回复需填写必要信息