pgAdmin作为PostgreSQL的图形化管理工具,提供了基础的监控功能,可直接查看数据库实时状态及查询性能。
CREATE EXTENSION pg_stat_statements;,然后通过pgAdmin查看“pg_stat_statements”视图,分析SQL语句的执行频率、总执行时间、平均执行时间等,找出最耗资源的查询。pgAdmin运行在CentOS系统上,其性能受系统资源影响,需通过系统工具监控底层指标。
top命令动态查看系统CPU、内存使用情况及进程排名;htop(需安装:sudo yum install htop)提供更直观的实时监控界面,支持排序和过滤。vmstat 1(每秒刷新一次)可查看虚拟内存、进程状态、磁盘I/O等统计信息;iostat -x 1(需安装sysstat包:sudo yum install sysstat)专注于磁盘I/O性能,重点关注**%util**(磁盘利用率,超过70%需优化)、await(平均等待时间)。free -h查看系统内存使用情况(包括缓存、缓冲区);netstat -tulnp查看网络连接状态及端口监听情况,确保pgAdmin服务端口(默认5050)正常。对于生产环境,建议使用第三方工具实现长期、可定制的性能监控与告警。
sudo yum install prometheus-postgresql-exporter grafana安装Prometheus PostgreSQL Exporter(用于采集PostgreSQL指标)和Grafana(可视化工具);/etc/prometheus/prometheus.yml,添加PostgreSQL数据源:scrape_configs:
- job_name: 'postgresql'
static_configs:
- targets: ['localhost:9187'] # PostgreSQL Exporter默认端口
postgresql.conf文件(通常位于/var/lib/pgsql/data/),设置:logging_collector = on
log_directory = '/var/log/postgresql'
log_filename = 'postgresql-%Y-%m-%d.log'
log_min_messages = 'warning' # 记录警告及以上级别日志
重启PostgreSQL服务使配置生效:sudo systemctl restart postgresql;pgBadger工具分析日志,生成HTML格式的性能报告。安装pgBadger:sudo yum install pgbadger,执行命令:pgbadger /var/log/postgresql/*.log -o /tmp/postgresql_report.html
打开报告可查看慢查询排名、错误日志统计、连接数变化趋势等。通过编写脚本定期检查关键指标,超阈值时发送告警,适合个性化需求。
check_idle_connections.sh:#!/bin/bash
IDLE_COUNT=$(psql -U postgres -c "SELECT COUNT(*) FROM pg_stat_activity WHERE state='idle';")
THRESHOLD=50 # 阈值
if [ "$IDLE_COUNT" -gt "$THRESHOLD" ]; then
echo "警告:空闲连接数超过${THRESHOLD},当前值为${IDLE_COUNT}!" | mail -s "pgAdmin空闲连接告警" admin@example.com
fi
给脚本添加执行权限:chmod +x check_idle_connections.sh,并通过crontab -e添加定时任务(每分钟执行一次):* * * * * /path/to/check_idle_connections.sh
当空闲连接数超过阈值时,会发送邮件告警。