用pgbadger工具分析PostgreSQL的系統日誌(生成html報告)

原創文章,轉載須註明出處。訪問我的Github(地址:https://guobo507.github.io)查看最新文章列表。

pgBadger是一個基於Perl編寫的PostgreSQL日誌分析腳本。

pgBadger通過分析PG的日誌文件,以圖表的形式展現數據庫的各項活動和狀態信息,其願景是:“Make your reports in seconds!”。

pgBadger的特性:

  1. 圖表輸出:輸出的圖表可單獨下載爲PNG文件,這個功能對於DBA來說,用於數據庫巡檢截圖會比較管用。
  2. 並行分析:使用-j或-J可以指定日誌分析的並行度。
  3. 壓縮文件:可支持gzip壓縮的日誌文件分析。
  4. 增量報告:支持增量模式,比如按天分析,最後可以疊加爲按周/月分析。

此外,它不僅收集SQL,還收集服務器日誌中的錯誤日誌等。

詳細的Features列表請參見官網(http://pgbadger.darold.net/)。

安裝pgBadger

pgBadger提供了源代碼可以用於編譯安裝。在PGDG倉庫中也已經包含了pgBadger的rpm安裝包,針對Ubuntu系列系統,pgBadger也有對應的倉庫可以使用。詳細信息請看官方頁面:http://pgbadger.darold.net/#download

推薦採用從軟件倉庫安裝的方式來安裝pgBadger。

從倉庫安裝pgBadger比較簡單,以Redhat Linux爲例,只需先配置好PGDG倉庫,然後使用yum命令在線安裝即可。Ubuntu系列Linux與此類似。

你也可以參考官方文檔的說明來安裝,地址是:http://pgbadger.darold.net/documentation.html

PostgreSQL參數配置

使用pgBadger來分析PostgreSQL系統日誌需要對postgresql.conf參數文件做相應的配置,具體如下所示:

log_destination = 'csvlog'      # 可選
logging_collector = on
log_min_duration_statement = 0
log_line_prefix = '%t [%p]: user=%u,db=%d,app=%a,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
log_autovacuum_min_duration = 0
log_error_verbosity = default
lc_messages='C'
log_filename = 'postgresql-%Y%m%d_%H%M%S.log'   # 定義日誌文件的名稱
log_file_mode = 0600

注意不要同時啓用log_min_duration_statementlog_durationlog_statement,這將導致錯誤的計數器值,也會大大增加日誌的大小。log_min_duration_statement是首選啓用的參數。

另外,請考慮爲log_min_messages參數設置一個合理的值,默認爲warning,設置不當可能導致日誌信息膨脹或日誌信息不足。

pgBadger的使用實例

我在項目中實際使用pgBadger時,利用crontab做了計劃任務,日常會每天晚上23:55自動調用pgBadger分析當天的日誌並生成報告,第二天來查看檢查數據庫的使用情況。

我的腳本內容如下:

#!/bin/bash

CURRDATE=`date +%Y%m%d`
PGDATA=/u01/pgdata/11
REPTDIR=/home/postgres/pgbadger_reports

if [ -d $REPTDIR ]; then
    mkdir -p $REPTDIR
fi

/bin/pgbadger -q $PGDATA/log/postgresql-$CURRDATE*.csv -o $REPTDIR/reports_$CURRDATE.html -j 8 -f stderr

find $REPTDIR -name reports_*.html -mtime +8 -exec rm -rf {} \;

腳本還會自動刪除8天之前的報告文件。

然後,我們就可以按時從服務器的/home/postgres/pgbadger_reports目錄獲取報告進行查看和分析了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章