一、內置監控工具(原生視圖與命令)
CentOS上的PostgreSQL自帶豐富的監控工具,無需額外安裝,適合快速排查基礎問題:
SELECT datname, usename, state, query, now() - query_start AS duration FROM pg_stat_activity WHERE state = 'active';
(篩選活躍連接的SQL及耗時)。CREATE EXTENSION pg_stat_statements;
),再通過查詢獲取TOP慢SQL:SELECT query, calls, total_time, mean_time FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;
。SELECT datname, (blks_hit + blks_read) AS total_reads, blks_hit, (blks_hit::float / (blks_hit + blks_read)) * 100 AS cache_hit_rate FROM pg_stat_database;
(緩存命中率≥98%為佳)。SELECT pid, usename, application_name, client_addr, state, write_lag, flush_lag, replay_lag FROM pg_stat_replication;
(lag為延遲時間,單位毫秒)。systemctl status postgresql
(檢查服務運行狀態)、pg_isready -U postgres
(測試連接是否正常)、psql -U postgres -c "SELECT 1;"
(驗證數據庫響應)。二、日志分析工具
通過分析PostgreSQL日志,可深入了解錯誤、慢查詢及系統行為:
pgbadger /var/log/postgresql/postgresql-*.log
即可生成報告。三、第三方監控工具
針對企業級需求,可選擇功能全面的第三方工具,實現實時監控、告警與可視化:
postgres_exporter
(PostgreSQL專用exporter)采集指標(如TPS、QPS、緩存命中率、連接數);postgres_exporter
作為target,最后配置Grafana dashboard。四、自定義腳本與告警
通過編寫腳本定期檢查關鍵指標,結合郵件、釘釘等工具發送告警,適合定制化需求:
#!/bin/bash
IDLE_CONNS=$(psql -U postgres -t -c "SELECT COUNT(*) FROM pg_stat_activity WHERE state = 'idle';")
THRESHOLD=50 # 閾值
if [ "$IDLE_CONNS" -gt "$THRESHOLD" ]; then
echo "警告:PostgreSQL空閑連接數超過閾值!當前值:$IDLE_CONNS" | mail -s "PostgreSQL告警" admin@example.com
fi
將腳本添加到cron(如每5分鐘運行一次),即可實現空閑連接數的自動監控與告警。