1.介紹
PostgreSQL日志分析器“ pgBadger ”是一個用 Perl 編寫的開源“快速 PostgreSQL 日志分析報告”程序,它從正在運行的 PostgreSQL 實例獲取日志輸出并將其處理成 HTML 文件。它生成的報告以漂亮且易于閱讀的報告格式顯示所有信息。這些報告可以幫助闡明系統(tǒng)中發(fā)生的錯誤、檢查點行為、真空行為、趨勢以及 PostgreSQL 系統(tǒng)的其他基本但至關重要的信息。
pgBadger 報告有關你的 SQL 查詢的所有信息:對慢查詢分析,SQL查詢統(tǒng)計分析,會話分析,?以及我們的IO ,acuum,checkpoin?等等日常監(jiān)控的一些關鍵點,都能很好地從日志或圖表上看出關鍵點。而且面很全,對們數(shù)據(jù)庫的日常管理,性能優(yōu)化個人覺得很有幫助,由于在測試庫我生的Html?文件可能數(shù)據(jù)不夠豐富,但這不影響對pgBadger?的了解。
2.PG?參數(shù)設置
PostgreSQL 日志記錄設置
為了有效地使用 pgBadger,應該設置登錄 PostgreSQL 以提供 pgBadger 盡可能多的信息。可以調(diào)整一些選項以允許數(shù)據(jù)庫系統(tǒng)記錄有用的信息,以便 pgBadger 生成有用的報告。PostgreSQL 配置的完整文檔可以在 pgBadger github 頁面上找到,但下面是一些基本信息。
? ? #慢日志時間 和日志格式?
? ? log\_min\_duration\_statement = 1000
? ? log\_line\_prefix = '%t \[%p\]: user=%u,db=%d,app=%a,client=%h '
? ? #支持英文
? ? lc\_messages='en\_US.UTF-8'
? ? lc\_messages='C'
? ? #啟用其他參數(shù)才能從日志文件中獲取更多信息:
? ? 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? ?
? ? pgBadger 默認輸入不適用于 csvlog??
? ? 所以如果pg參數(shù) log\_destination 值是'csvlog' 時,需要先轉(zhuǎn)換安裝?Text::CSV\_XS?組件,詳細見6.1
3.PGabadger?安裝
? ? 下載: https://github.com/darold/pgbadger?
? ? tar xzf pgbadger-11.x.tar.gz
? ? cd pgbadger-11.x/
? ? perl Makefile.PL
? ? make && sudo make install
4.PGabadger? 使用示例
4.1?查看幫助
pgbadger --help? ? ?#更多內(nèi)容可以查看幫且文檔
Usage:
pgbadger \[options\] logfile \[...\]
? ? 具有完整詳細報告和圖表的 PostgreSQL 日志分析器。
Arguments:
logfile 可以是單個日志文件、文件列表或 shell 命令返回文件列表。如果你想從標準輸入傳遞日志內(nèi)容使用 - 作為文件名。
? ? 注意:來自標準輸入的輸入不適用于 csvlog。
options:
? ? -a | --average minutes : 構建平均圖表的分鐘數(shù)查詢和連接。默認 5 分鐘。
? ? -A | --histo-average min:構建直方圖的分鐘數(shù)的查詢。默認 60 分鐘。
? ? -b | --begin datetime : 在日志中解析數(shù)據(jù)的開始日期/時間(時間戳或時間)
? ? -c | --dbclient host :僅報告給定客戶端主機的條目。
? ? -C | --nocomment :從查詢中刪除 /\* ... \*/ 之類的注釋。
? ? -d | --dbname 數(shù)據(jù)庫:僅報告給定數(shù)據(jù)庫的條目。
? ? -D | --dns-resolv :客戶端 IP 地址被其 DNS 名稱替換。 請注意,這確實會降低 pgBadger 的速度。
? ? -e | --end datetime : 要在日志中解析的數(shù)據(jù)的結(jié)束日期/時間(時間戳或時間)
? ? -E | --explode : 通過生成一份報告來分解主報告每個數(shù)據(jù)庫。與 a 無關的全局信息數(shù)據(jù)庫被添加到 postgres 數(shù)據(jù)庫報告中。
? ? -f | --format logtype:可能的值:syslog、syslog2、stderr、jsonlog、 cvs、pgbouncer、logplex、rds 和 redshift。
? ? ? ? ? ? ? ? ? ? ? ? ? ?用這個pgBadger 無法檢測到日志時的選項格式。
? ? -G | --nograph :禁用 HTML 輸出的圖表。默認啟用。
? ? -h | --help :顯示此消息并退出。
? ? -H | --html-outdir path:必須寫入 HTML 報告的目錄的路徑在增量模式下,二進制文件保留在目錄中使用 -O, --outdir 選項定義。
? ? -i | --ident name : 用作 syslog ident 的程序名。默認值:postgres
? ? -I | --incremental :使用增量模式,報告將由天在一個單獨的目錄中, --outdir 必須設置。
? ? -j | --jobs number :同時運行的作業(yè)數(shù)。單人運行默認情況下或使用 csvlog 時。
? ? -J | --Jobs number : 要并行解析的日志文件數(shù)。流程一默認情況下一次文件或使用 csvlog 時。
? ? -l | --last-parsed file: 通過注冊允許增量日志解析最后一個日期時間和行解析。
? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果你愿意的話很有用觀察自上次運行以來的錯誤,或者如果你想要一個每天報告,每周輪換日志。
? ? -L | --logfile-list 文件:包含要解析的日志文件列表的文件。
? ? -m | --maxlength size : 查詢的最大長度,將被限制為給定的大小。默認截斷大小為 100000。
? ? -M | --no-multiline : 不收集多行語句以避免垃圾特別是在生成大量報告的錯誤上。
? ? -n | --nohighlight : 禁用 SQL 代碼高亮。
? ? -N | --appname name :僅報告給定應用程序名稱的條目
? ? -o | --outfile 文件名:定義輸出的文件名。默認依賴關于輸出格式:out.html、out.txt、out.bin、out.json 或 out.tsung。
? ? ? ? ? ? ? ? ? ? ? ? ? 可以使用此選項多次輸出幾種格式。使用 json輸出 Perl 模塊 JSON::XS 必須安裝,要將輸出轉(zhuǎn)儲到標準輸出,請使用 - 作為文件名。
? ? -O | --outdir path :必須保存輸出文件的目錄。
? ? -p | --prefix string :自定義 log\_line\_prefix 的值在你的 postgresql.conf 中定義。
? ? ? ? ? ? ? ? ? ? ? ? ? ? 僅當你使用它時未使用指定的標準前綴之一在 pgBadger 文檔中,
? ? ? ? ? ? ? ? ? ? ? ? ? ? 例如如果你的前綴包括附加變量,如客戶端 ip或應用程序名稱。請參閱下面的示例。
? ? -P | --no-prettify :禁用 SQL 查詢美化格式化程序。
? ? -q | --quiet :不打印任何內(nèi)容到標準輸出,甚至不打印進度條。
? ? -Q | --query-numbering : 使用時將查詢編號添加到輸出中 選項 --dump-all-queries 或 --normalized-only。
? ? -r | --remote-host ip : 設置執(zhí)行cat命令的主機? ??
? ? -R | --retention N :保持增量模式的周數(shù)。默認為 0,禁用。用于將周數(shù)設置為保存在輸出目錄中。較舊的幾周和幾天目錄被自動刪除。
? ? -s | --sample number :要存儲的查詢樣本數(shù)。默認值:3。
? ? -S | --select-only :僅報告 SELECT 查詢。
? ? -t | --top number :要存儲/顯示的查詢數(shù)。默認值:20。
? ? -T | --title string : 更改 HTML 頁面報告的標題。
? ? -u | --dbuser username:僅報告給定用戶的條目。
? ? -U | --exclude-user username : 排除指定用戶的條目報告。可以多次使用。
? ? -v | --verbose :啟用詳細或調(diào)試模式。默認禁用。
? ? -V | --version : 顯示 pgBadger 版本并退出。
? ? -w | --watch-mode :只報告錯誤,就像 logwatch 一樣。
? ? -W | --wide-char : 將查詢的 html 輸出編碼為 UTF8 以避免Perl 消息“打印中的寬字符”。
? ? -x | --extension :輸出格式。值:text, html, bin, json ortsung。默認值:html
? ? -X | --extra-files : 在增量模式下允許 pgBadger 編寫 CSS 和 輸出目錄中的 JS 文件作為單獨的文件。
? ? -z | --zcat exec\_path :設置 zcat 程序的完整路徑。如果使用它zcat 或 bzcat 或 unzip 不在你的路徑中。
? ? -Z | --timezone +/-XX : 設置時區(qū)從 GMT 開始的小時數(shù)。使用它來調(diào)整 JavaScript 圖表中的日期/時間。
? ? --pie-limit num : 低于 num% 的餅圖數(shù)據(jù)將顯示一個總和。
? ? --exclude-query regex : 任何匹配給定正則表達式的查詢都將被排除 從報告中。例如:“^(VACUUM|COMMIT)”?你可以多次使用此選項。
? ? --exclude-file 文件名:包含所有正則表達式的文件的路徑用于從報告中排除查詢。一個正則表達式每行。
? ? --include-query regex : 任何不匹配給定正則表達式的查詢將被排除在報告之外。你可以用這個多次選擇。例如:“(tbl1|tbl2)”。
? ? --include-file 文件名:包含所有正則表達式的文件的路徑要從報告中包含的查詢。一個正則表達式每行。
? ? --disable-error : 不生成錯誤報告。
? ? --disable-hourly :不生成每小時報告。
? ? --disable-type : 不按類型生成查詢報告,數(shù)據(jù)庫或用戶。
? ? --disable-query :不生成查詢報告(最慢,最頻繁,用戶查詢,數(shù)據(jù)庫查詢,...)。
? ? --disable-session :不生成會話報告。
? ? --disable-connection :不生成連接報告。
? ? --disable-lock :不生成鎖定報告。
? ? --disable-temporary :不生成臨時報告。
? ? --disable-checkpoint :不生成檢查點/重啟點報告。
? ? --disable-autovacuum : 不生成 autovacuum 報告。
? ? --charset :用于設置要使用的 HTML 字符集。默認值:utf-8。
? ? --csv-separator : 用于設置 CSV 字段分隔符,默認:,
? ? --exclude-time 正則表達式:匹配給定正則表達式的任何時間戳都將是從報告中排除。示例:“2013-04-12 .\*”你可以多次使用此選項。
? ? --include-time 正則表達式:只有與給定正則表達式匹配的時間戳才會包含在報告中。示例:“2013-04-12 .\*”你可以多次使用此選項。
? ? --exclude-db name : 排除指定數(shù)據(jù)庫的條目報告。示例:“pg\_dump”。可多次使用時間。
? ? --exclude-appname name : 排除指定應用程序名稱的條目從報告。示例:“pg\_dump”。可以使用多次。
? ? --exclude-line regex : pgBadger 將開始排除任何日志條目將匹配給定的正則表達式。可多次使用時間。
? ? --exclude-client name : 排除指定客戶端 IP 的日志條目。可以多次使用。
? ? --anonymize : 隱藏查詢中的所有文字,有助于隱藏機密數(shù)據(jù)。
? ? --noreport : 防止 pgBadger 以增量方式創(chuàng)建報告模式。
? ? --log-duration : 強制 pgBadger 關聯(lián)生成的日志條目通過 log\_duration = on 和 log\_statement = 'all'
? ? --enable-checksum :用于在每個查詢報告下添加一個 md5 和。
? ? --journalctl 命令:用于替換 PostgreSQL 日志文件的命令對 journalctl 的調(diào)用。基本上它可能是:journalctl -u postgresql-9.5
? ? --pid-dir path :設置 pid 文件必須存儲的路徑。默認 /tmp
? ? --pid-file file : 設置pid文件的名字來管理并發(fā)pgBadger 的執(zhí)行。默認值:pgbadger.pid
? ? --rebuild :用于以增量方式重建所有 html 報告輸出有二進制數(shù)據(jù)文件的目錄。
? ? --pgbouncer-only :僅在標題中顯示 PgBouncer 相關菜單。
? ? --start-monday :在增量模式下,日歷的周開始于一個星期天。使用此選項在星期一開始。
? ? --iso-week-number :在增量模式下,日歷的周數(shù)從星期一并尊重 ISO 8601 周數(shù)、范圍01 到 53,其中第 1 周是具有新的一年至少有4天。
? ? --normalized-only :僅將所有規(guī)范化查詢轉(zhuǎn)儲到 out.txt
? ? --log-timezone +/-XX : 設置時區(qū)從 GMT 開始的小時數(shù)必須用于調(diào)整從讀取的日期/時間解析之前的日志文件。使用此選項使用日期/時間進行更困難的日志搜索。
? ? --prettify-json :如果你希望 json 輸出被美化,請使用它。
? ? --month-report YYYY-MM : 創(chuàng)建一個累積的 HTML 報告超過指定月。需要增量輸出目錄和存在所有必要的二進制數(shù)據(jù)文件
? ? --day-report YYYY-MM-DD:創(chuàng)建指定日期的 HTML 報告。需要增量輸出目錄和存在所有必要的二進制數(shù)據(jù)文件
? ? --noexplain : 不處理 auto\_explain 生成的行。
? ? --command CMD :執(zhí)行以檢索日志條目的命令標準輸入。 pgBadger 將打開一個管道到命令并解析命令生成的日志條目。
? ? --no-week :通知 pgbadger 不要在增量模式。如果花費太多時間很有用。
? ? --explain-url URL : 用它來覆蓋圖形解釋的 url工具。默認值:http://explain.depesz.com/?is\_public=0&is\_anon=0&plan=
? ? --tempdir DIR : 設置寫入臨時文件的目錄 默認值:File::Spec->tmpdir() || '/tmp'
? ? --no-process-info :禁用更改進程標題以幫助識別? pgbadger 進程,有些系統(tǒng)不支持。
? ? --dump-all-queries : 轉(zhuǎn)儲在日志文件中找到的所有查詢替換 綁定參數(shù)包含在查詢中他們各自的占位符位置。
? ? --keep-comments :不要從規(guī)范化查詢中刪除評論。如果你想?yún)^(qū)分相同的規(guī)范化查詢。
? ? --no-progressbar : 禁用進度條。
? ? pgBadger 能夠使用無密碼 ssh 連接解析遠程日志文件。使用 -r 或 --remote-host 設置主機 ip 地址或主機名。還有一些額外的選項來完全控制 ssh 連接。
? ? --ssh-program? ? ?? 要使用的 ssh 程序的 ssh 路徑。默認值:ssh。
? ? --ssh-port port? ?? 用于連接的 ssh 端口。默認值:22。
? ? --ssh-user username 連接登錄名。默認為運行用戶。
? ? --ssh-identity file 要使用的身份文件的路徑。
? ? --ssh-timeout ssh?? 連接失敗的第二次超時。默認 10 秒。
? ? --ssh-option options 用于 ssh 連接的 -o 選項列表。
? ? ? ? ?總是使用的選項:
? ? ? ? ? ? ?-o 連接超時=$ssh\_timeout
? ? ? ? ? ? ?-o PreferredAuthentications=hostbased,publickey
? ? 也可以使用 URI 指定要解析的日志文件,支持的協(xié)議是http\[s\] 和 \[s\]ftp。 curl 命令將用于下載文件和文件將在下載過程中被解析。也支持 ssh 協(xié)議并將使用與遠程主機一樣的 ssh 命令。請參見下面的示例。
Examples:
? ? pgbadger /var/log/postgresql.log
? ? pgbadger /var/log/postgres.log.2.gz /var/log/postgres.log.1.gz /var/log/postgres.log
? ? pgbadger /var/log/postgresql/postgresql-2012-05-\*
? ? pgbadger --exclude-query="^(COPY|COMMIT)" /var/log/postgresql.log
? ? pgbadger -b "2012-06-25 10:56:11" -e "2012-06-25 10:59:11" /var/log/postgresql.log
? ? cat /var/log/postgres.log | pgbadger -
? ? #帶有 stderr 日志輸出的日志前綴
? ? pgbadger --prefix '%t \[%p\]: user=%u,db=%d,client=%h' /pglog/postgresql-2012-08-21\*
? ? pgbadger --prefix '%m %u@%d %p %r %a : ' /pglog/postgresql.log
? ? #帶有 syslog 日志輸出的日志行前綴
? ? pgbadger --prefix 'user=%u,db=%d,client=%h,appname=%a' /pglog/postgresql-2012-08-21\*
? ? #使用我的 8 個 CPU 更快地解析我的 10GB 文件
? ? pgbadger -j 8 /pglog/postgresql-10.1-main.log
? ? #對遠程日志文件使用 URI 表示法
? ? pgbadger http://172.12.110.1//var/log/postgresql/postgresql-10.1-main.log
? ? pgbadger ftp://username@172.12.110.14/postgresql-10.1-main.log
? ? pgbadger ssh://username@172.12.110.14:2222//var/log/postgresql/postgresql-10.1-main.log\*
? ? #你可以同時使用本地 PostgreSQL 日志和遠程 pgbouncer 日志文件來解析:
? ? pgbadger /var/log/postgresql/postgresql-10.1-main.log ssh://username@172.12.110.14/pgbouncer.log
? ? #僅使用選擇查詢生成 Tsung 會話 XML 文件:
? ? pgbadger -S -o sessions.tsung --prefix '%t \[%p\]: user=%u,db=%d ' /pglog/postgresql-10.1.log
? ? #每周按 cron 作業(yè)報告錯誤:
? ? 30 23 \* \* 1 /usr/bin/pgbadger -q -w /var/log/postgresql.log -o /var/reports/pg\_errors.html
? ? #每周使用增量行為生成報告::
? ? 0 4 \* \* 1 /usr/bin/pgbadger -q \`find /var/log/ -mtime -7 -name "postgresql.log\*"\` -o /var/reports/pg\_errors-\`date +\\%F\`.html -l /var/reports/pgbadger\_incremental\_file.dat
? ? #這假設你的日志文件和 HTML 報告也每周輪換一次,且使用自動生成的增量報告::
? ? 0 4 \* \* \* /usr/bin/pgbadger -I -q /var/log/postgresql/postgresql.log.1 -O /var/www/pg\_reports/
? ? #將每天和每周生成一份報告。
? ? #在增量模式下,你還可以指定要保留的周數(shù)報告:
? ? /usr/bin/pgbadger --retention 2 -I -q /var/log/postgresql/postgresql.log.1 -O /var/www/pg\_reports/
? ? #如果你在半小時內(nèi)每天 23:00 和 13:00 有一個 pg\_dump,你可以使用 pgBadger 如下從報告中排除這些時期:
? ? pgbadger --exclude-time "2013-09-.\* (23|13):.\*" postgresql.log
? ? 這將有助于避免 pg\_dump 生成的 COPY 語句位于最慢查詢列表的頂部。你還可以使用 --exclude-appname "pg\_dump" 以更簡單的方式解決此問題。
? ? #你還可以解析 journalctl 輸出,就像它是一個日志文件一樣:?
? ? pgbadger --journalctl 'journalctl -u postgresql-9.5'
? ? #從遠程主機調(diào)用它:
? ? pgbadger -r 192.168.1.159 --journalctl 'journalctl -u postgresql-9.5'
? ? #你不需要在命令行中指定任何日志文件,但如果你有其他 PostgreSQL 日志文件要解析,你可以照常添加它們。
? #要在之后重建所有增量 html 報告,請執(zhí)行以下操作:
? ? rm /path/to/reports/\*.js
? ? rm /path/to/reports/\*.css
? ? pgbadger -X -I -O /path/to/reports/ --rebuild
? ? 它還將更新所有資源文件(JS 和 CSS)。如果使用此選項構建報告,請使用 -E 或 --explode。
? ? #pgBadger 還支持使用 logplex 格式的 Heroku PostgreSQL 日志:
? ? heroku logs -p postgres | pgbadger -f logplex -o heroku.html -
? ? 這將通過標準輸入將 Heroku PostgreSQL 日志流式傳輸?shù)?pgbadger。
#pgBadger 可以使用自動檢測 RDS 和 cloudwatch PostgreSQL 日志 rds 格式:
? ? pgbadger -f rds -o rds\_out.html rds.log
? ? #CloudSQL Postgresql 記錄它是相當普通的 PostgreSQL 日志,但以 JSON 格式封裝。 pgBagder 也會自動檢測到它,但如果你需要強制使用日志格式,請使用 \`jsonlog\`
? ? pgbadger -f jsonlog -o cloudsql\_out.html cloudsql.log
這與 jsonlog 擴展相同,json 格式不同,但 pgBadger 可以解析兩種格式。
? ? #要創(chuàng)建一個月內(nèi)的累積報告,請使用命令:
? ? pgbadger --month-report 2919-05 /path/to/incremantal/reports/
? ? 這會將月份名稱的鏈接添加到增量報告的日歷視圖中,以查看 2019 年 5 月的報告。如果使用此選項構建報告,請使用 -E 或 --explode。
4.2 增量生成報告
pgBadger 包括使用選項 -I 或 --incremental 的自動增量報告模式。在這種模式下運行時,pgBadger 將每天生成一份報告,每周生成一份累積報告。首先以二進制格式輸出到強制輸出目錄(請參閱選項 -O 或 --outdir),然后以 HTML 格式輸出帶有主索引文件的每日和每周報告。主索引文件將每周顯示一個下拉菜單,其中包含指向每周報告的鏈接和指向每周每日報告的鏈接。
在這種模式下,pgBadger 將在輸出目錄中創(chuàng)建一個自動增量文件,因此你不必使用 -l 選項,除非你想更改該文件的路徑。這意味著你可以每天在此模式下對每周輪換的日志文件運行 pgBadger,并且它不會計算日志條目兩次。
為了節(jié)省磁盤空間,你可能需要使用 -X 或 --extra-files 命令行選項來強制 pgBadger 編寫 JavaScript 和 CSS 來分隔輸出目錄中的文件。然后將使用腳本和鏈接標簽加載資源。
? ? 例如,如果你基于每日輪換文件按如下方式運行 pgBadger:你將獲得整個運行期間的所有每日和每周報告。
? ? 0 4 \* \* \* /usr/bin/pgbadger -I -q /var/log/postgresql/postgresql.log.1 -O /var/www/pg\_reports/
4.3 重建報告
增量報告可以在 pgbadger 報告修復或更新所有 HTML 報告的新功能后重建。要重建仍然存在二進制文件的所有報告,請執(zhí)行以下操作:
? ? rm /path/to/reports/\*.js
? ? rm /path/to/reports/\*.css
? ? pgbadger -X -I -O /path/to/reports/ --rebuild
它還將更新所有資源文件(JS 和 CSS)。如果使用此選項構建報告,請使用 -E 或 --explode。
4.4 月度報告
默認情況下,增量模式下的 pgBadger 僅計算每日和每周報告。如果你想要每月累積報告,則必須使用單獨的命令來指定要構建的報告。例如,要構建 2019 年 8 月的報告:
pgbadger -X --month-report 2919-08 /var/www/pg_reports/
這會將月份名稱的鏈接添加到增量報告的日歷視圖中,以查看月度報告。當前月份的報告可以每天運行,每次都完全重建。默認情況下不構建月度報告,因為它可能需要大量時間來跟蹤數(shù)據(jù)量。
如果使用每個數(shù)據(jù)庫選項( -E | --explode )或( -R | --rebuild )時也是如此,則在調(diào)用 pgbadger 構建月度報告時也必須使用它。
例在使用每個數(shù)據(jù)庫選項( -E | --explode )構建報告,則在調(diào)用 pgbadger 構建月度報告時也必須使用它:
? ? pgbadger -E -X --month-report 2919-08 /var/www/pg\_reports/
4.5 其它格式
pgbadger??支持多種格式 ,其中就包括二進度格式,和JSON格式。詳細可以查看官方文檔?或幫助文檔
二進制格式
使用二進制格式可以創(chuàng)建自定義增量和累積報告,并可從該二進制文件生成新的 HTML
JSON格式
JSON 格式有利于與其他語言共享數(shù)據(jù),這使得將 pgBadger 結(jié)果集成到 Cacti 或 Graphite 等其他監(jiān)控工具中變得容易。
4.6 并行處理
要啟用并行處理,你只需使用 -j N 選項,其中 N 是你要使用的內(nèi)核數(shù)。
pgBadger 然后將按如下方式進行:
對于每個日志文件
塊大小 = int(文件大小 / N)
查看這些塊的開始/結(jié)束偏移量
fork N 個進程并尋找每個塊的起始偏移量
當解析器到達結(jié)束偏移量時,每個進程都會終止
它的塊
每個進程將統(tǒng)計信息寫入二進制臨時文件
等待所有子進程終止
所有生成的二進制臨時文件都將被讀取并加載到
內(nèi)存來構建 html 輸出。
使用該方法,在塊的開始/結(jié)束時,pgBadger 可能會截斷或省略每個日志文件最多 N個查詢 . 如果你的日志文件中有數(shù)百萬個查詢,那么這是一個微不足道的差距。你正在尋找的查詢丟失的可能性接近0,這就是為什么我認為這個差距是宜居的。大多數(shù)情況下,查詢被計算兩次但被截斷。
注意: -J N? 一般是對數(shù)百個小日志文件并且可以使用至少 8 個 CPU,性能會更好
-j N? 常用于單個大文件,性能更好
? ? 這是在具有 8 個 CPU 和 9.5GB 單個文件的服務器上完成的基準測試,-j? 性能更好(小寫的的j , 同時運行的作業(yè)數(shù))
? ? ? ? ?Option |? 1 CPU? | 2 CPU | 4 CPU | 8 CPU
? ? ? ? --------+---------+-------+-------+------
? ? ? ? ? ?-j?? | 1h41m18 | 50m25 | 25m39 | 15m58
? ? ? ? ? ?-J?? | 1h41m18 | 54m28 | 41m16 | 34m45
? ? 這是在有 200 個日志文件,每個 10MB,總共 2GB,結(jié)果略有不同。-J? 性能更好(大寫的的J,主要針對要并行解析的日志文件數(shù))
? ? ? ? ?Option | 1 CPU | 2 CPU | 4 CPU | 8 CPU
? ? ? ? --------+-------+-------+-------+------
? ? ? ? ? ?-j?? | 20m15 |? 9m56 |? 5m20 | 4m20
? ? ? ? ? ?-J?? | 20m15 |? 9m49 |? 5m00 | 2m40
重要提示:
當你使用并行解析時,pgBadger 會在 /tmp 目錄中生成大量臨時文件,并在最后刪除它們,因此除非 pgBadger 未運行,否則不要刪除這些文件。它們都使用以下模板 tmp\_pgbadgerXXXX.bin 命名,因此可以很容易地識別它們。
5.PGabadger?? 使用截圖
pgbadger? postgresql-2022-02-14_120324.csv? -o abc.html
5.1 Overivew


5.2 Connections



5.3 Checkpoints/Restartpoints



5.4? Vacuums



5.5 Top Queies



6.問題
6.1? 安裝支持CSV的組件
perl -MCPAN -e shell
install Text::CSV_XS
#如果沒有報錯Can’t locate CPAN.pm in @INC
先安裝CPAN https://www.ltsplus.com/python/fix-perl-cannot-locate-cpan-pm
yum -y install perl-CPAN
[root@s2ahumysqlpg01 log]# rpm -qa | grep perl-CPAN
perl-CPAN-1.9800-299.el7_9.noarch
#成功將?csv?格式的日志?格式分析成html?
\[root@s2ahumysqlpg01 log\]# pgbadger -f stderr postgresql-2022-02-14\_120324.csv? -o abc.html?
\[========================>\] Parsed 111864 bytes of 111864 (100.00%), queries: 0, events: 0
LOG: Ok, generating html report...
6.2? 本文pdf和 html下載
下載連接 : http://www.sunline.cc/download/432889
7.參考連接:
https://github.com/darold/pgbadger
https://pgbadger.darold.net/documentation.html
https://severalnines.com/database-blog/postgresql-log-analysis-pgbadger
https://www.postgresql.org/message-id/CAPgXFMRPhFF%2BRyTYsY0gbkz7Szyb18UUHmjYJN0u%3Dk3A8BxVRw%40mail.gmail.com
https://www.ltsplus.com/python/fix-perl-cannot-locate-cpan-pm




