https://github.com/darold/pgbadger.git
這套基本功能就是將postgresql的log檔案,有系統的整理,預設值是產生html格式的好看報表。
報表資料來源還是來自於讀取的log檔案,可說是一個協助分析的工具。
2020/10/14 push 11.3
2021/06/17 push 11.5
postgresql 資料庫建議設置好 auto_explain與pg_stat_statements
產生的postgresql.log 透過pgbadger分析後比較好看的報表,
找問題時會更有參考價值更有效率。
例如:
auto_explain 有設,比較能找性能問題時,挑出效能不佳的SQL。
在報表中的 top頁下的slowest individua queries 就有整理好的Explain plan輸出的紀錄。
超過10秒的sql將被記錄到postgresql.log
# postgresql.conf
session_preload_libraries = 'auto_explain'
auto_explain.log_min_duration = '10s'
或者設置在 shared_preload_libraries = 'auto_explain'
shared_preload_libraries 與 session_preload_libraries有點差異可以自行找資料比較。
pg_stat_statements的部分如果auto_explain也是設在shared_preload_libraries
請用逗號區隔
shared_preload_libraries = 'auto_explain,pg_stat_statements'
這不是全域性可用,請在需要的database建立執行
CREATE EXTENSION pg_stat_statements;
mkdir -p pgbadger/pglog
cd pgbadger
(log檔案在哪裡就從哪裡copy到pglog目錄內的意思)
copy postgresql.log pglog/
由於掛載目前目錄下的pglog,所以請確認自己正在pgbadger目錄下執行
如果要指定特定目錄掛載,請自行更改$PWD路徑
docker run --rm -v $PWD/pglog/:/pglog/ dennisxkimo/pgbadger pgbadger /pglog/postgresql.log -O /pglog/
分析完成後pglog目錄內會產生out.html
透過cron的排程與簡單設計script執行,將產生的內容輸出到網頁伺服器目錄,就得到一個定期更新的分析工具網頁。
#0 代表收集全部SQL explain紀錄 視情況斟酌設置)
log_min_duration_statement = 0
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
這裡我postgresql log目錄是/var/lib/pgsql/13/data/log/
建立一個nginx 掛載 report 到 html,掛載 postgresql log目錄 到 container下 pglog
mkdir -p pgbadger-nginx/report
cd pgbadger-nginx
docker run -d --name pgbadger-nginx -v $PWD/report:/usr/share/nginx/html/ -v /var/lib/pgsql/13/data/log/:/pglog/ -p 8888:80 -d nginx
之後更新內容(假設我要分析/var/lib/pgsql/13/data/log/postgresql-Tue.log)
docker run --rm --volumes-from pgbadger-nginx dennisxkimo/pgbadger pgbadger /pglog/postgresql-Tue.log -O /pglog/
docker exec -it pgbadger-nginx cp /pglog/out.html /usr/share/nginx/html/
瀏覽 http://SERVER_IP:8888/out.html
Content type
Image
Digest
Size
157.5 MB
Last updated
over 5 years ago
docker pull dennisxkimo/pgbadger