在Ubuntu上监控PostgreSQL的综合方法
Ubuntu的系统工具可直接查看PostgreSQL进程的资源占用情况,适合快速定位系统级瓶颈:
htop,通过F3搜索“postgres”进程,实时查看CPU、内存、线程等占用情况,支持排序和过滤。vmstat 1(间隔1秒刷新),查看系统整体性能(如CPU使用率、内存交换、磁盘IO),重点关注r(运行队列长度)、b(阻塞进程数)、wa(IO等待)等指标。sysstat后运行iostat -x 1,查看磁盘IO详情(如%util磁盘利用率、await平均响应时间),识别磁盘瓶颈。PostgreSQL自带的系统视图提供了详细的性能指标,适合深入分析数据库内部状态:
SELECT * FROM pg_stat_activity WHERE state = 'active';(筛选活跃查询)。CREATE EXTENSION pg_stat_statements;),记录查询的执行次数、总时间、平均时间等。查询示例:SELECT query, calls, total_exec_time, mean_exec_time FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 10;(找出最耗时的查询)。SELECT datname, numbackends, xact_commit, xact_rollback FROM pg_stat_database;。SELECT relname, seq_scan, idx_scan, n_tup_ins, n_tup_upd FROM pg_stat_user_tables;。pgAdmin是PostgreSQL的官方管理工具,提供直观的图形化监控界面:
sudo apt update && sudo apt install pgadmin4,按提示完成安装。pg_hba.conf,添加host all all 0.0.0.0/0 md5),并设置用户密码(ALTER USER postgres WITH PASSWORD 'your_password';)。localhost、端口5432、用户名postgres、密码),点击“Save”。pg_stat_statements查询)获取性能数据。Zabbix是企业级开源监控工具,可实现PostgreSQL的全面监控(包括性能、可用性、告警):
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu22.04_all.deb下载仓库包,dpkg -i安装,然后apt update && apt install zabbix-agent2。apt install zabbix-agent2-plugin-postgresql,插件会自动部署到/usr/lib/zabbix/agent2/plugins/。CREATE USER zbx_monitor WITH PASSWORD 'zbx_monitor' INHERIT;),授予权限(GRANT pg_monitor TO zbx_monitor;),修改pg_hba.conf允许连接(host all zbx_monitor 127.0.0.1/32 trust),重启PostgreSQL。{$PG.USER}设为zbx_monitor、{$PG.PASSWORD}设为zbx_monitor),即可自动采集性能指标(如查询时间、连接数、缓存命中率)。pg_activity是类似top的终端监控工具,实时显示PostgreSQL的活动状态:
sudo apt install pg-activity(Ubuntu 22.04及以上可通过bullseye-backports安装)。pg_activity,界面显示当前所有PostgreSQL进程,包括:
F3搜索、q退出),帮助快速定位长时间运行的查询或锁冲突。