1.?使用kbbadger??
Kbbadger可以分析大型的日志文件饲嗽。當(dāng)日志文件足夠長時(shí)氮昧,kbbadger可以自動(dòng)檢測(cè)日志文件的格式(syslog宪郊,stderr昼激,csvlog或jsonlog)。
由kbbadger生成的所有圖表都是可縮放的并且可單獨(dú)下載為PNG文件抹恳。另外员凝,在生成的報(bào)告中SQL查詢將突出顯示。
Kbbadger生成的報(bào)告中包含的關(guān)于SQL查詢的信息有:
總體統(tǒng)計(jì)
占用時(shí)間最多的查詢
最常見的查詢
最常見的錯(cuò)誤
查詢時(shí)間直方圖
會(huì)話時(shí)間直方圖
參與頂級(jí)查詢的用戶
涉及頂級(jí)查詢的應(yīng)用程序
生成最多取消的查詢
大多數(shù)查詢已取消
最耗時(shí)的準(zhǔn)備/綁定查詢
報(bào)告也會(huì)提供每小時(shí)的統(tǒng)計(jì)圖表适秩,其內(nèi)容包括:
SQL查詢統(tǒng)計(jì)信息
臨時(shí)文件統(tǒng)計(jì)
檢查點(diǎn)統(tǒng)計(jì)
自動(dòng)vacuum和自動(dòng)分析統(tǒng)計(jì)
已取消查詢
錯(cuò)誤事件(死機(jī)绊序、致命、錯(cuò)誤和警告)
錯(cuò)誤的類分布
在kbbadger的使用過程中秽荞,可以使用命令行選項(xiàng)來啟用并行處理模式從而加快日志解析速度骤公,使用-j命令行選項(xiàng)來指定解析使用的CPU核心數(shù),使用-J命令行選項(xiàng)來并行解析的文件數(shù)扬跋,兩個(gè)選項(xiàng)可以同時(shí)使用阶捆。另外,可以使用-A命令行選項(xiàng)來調(diào)整直方圖的粒度钦听。默認(rèn)情況下洒试,它們將報(bào)告每小時(shí)發(fā)生的每個(gè)主要查詢/錯(cuò)誤的平均值。
Kbbadger使用方法
配置kingbase.conf
在開始之前朴上,必須在kingbase.conf中啟用并設(shè)置一些配置指令垒棋。
您必須首先啟用SQL查詢?nèi)罩居涗洸拍苓M(jìn)行解析:
log_min_duration_statement = 0
在這里,每條語句都會(huì)被記錄痪宰,在繁忙的服務(wù)器上叼架,您可能需要增加此值以僅記錄持續(xù)時(shí)間較長的查詢。請(qǐng)注意衣撬,不要啟用log_statement乖订,因?yàn)閗bBadger不會(huì)解析它的日志格式并且如果您將log_statement設(shè)置為'all',則不會(huì)通過log_min_duration_statement指令記錄任何內(nèi)容具练。如果要保證系統(tǒng)性能乍构,也可以使用log_duration來僅提供有關(guān)持續(xù)時(shí)間和查詢數(shù)量的報(bào)告。有關(guān)更多信息扛点,請(qǐng)參見下一章哥遮。
kbBadger支持任何設(shè)置到kingbase.conf文件的log_line_prefix中的自定義格式岂丘,只要它指定時(shí)間轉(zhuǎn)義序列(%t,%m或%n)和與進(jìn)程相關(guān)的轉(zhuǎn)義序列(%p或%c)昔善。
例如:
--使用“ stderr”日志格式元潘,log_line_prefix必須至少為:log_line_prefix = '%t [%p]: '--日志行前綴可以添加用戶畔乙,數(shù)據(jù)庫名稱君仆,應(yīng)用程序名稱和客戶端IP地址,如下所示:log_line_prefix = '%t [%p]: user=%u,db=%d,app=%a,client=%h '--或用于syslog日志文件格式:log_line_prefix = 'user=%u,db=%d,app=%a,client=%h '--stderr輸出的日志行前綴也可以是:log_line_prefix = '%t [%p]: db=%d,user=%u,app=%a,client=%h '--或用于syslog輸出:log_line_prefix = 'db=%d,user=%u,app=%a,client=%h '--您也可以在kingbase.conf中啟用其他參數(shù)牲距,以從日志文件中獲取更多信息:log_checkpoints = onlog_connections = onlog_disconnections = onlog_lock_waits = onlog_temp_files = 0log_autovacuum_min_duration = 0log_error_verbosity = default
注意
數(shù)據(jù)庫日志中的內(nèi)容必須為英文返咱,否則kbbadger可能無法解析日志中的內(nèi)容:
lc_messages='en_US.UTF-8'
使用kbBadger生成統(tǒng)計(jì)信息
kbbadger /var/log/kingbase.logkbbadger /var/log/kingbase.log.2.gz /var/log/kingbase.log.1.gz /var/log/kingbase.logkbbadger /var/log/kingbase/kingbase-2012-05-*kbbadger --exclude-query="^(COPY|COMMIT)" /var/log/kingbase.logkbbadger -b "2012-06-25 10:56:11" -e "2012-06-25 10:59:11" /var/log/kingbase.logcat /var/log/kingbase.log | kbbadger -kbbadger --prefix '%t [%p]: user=%u,db=%d,client=%h ' /sys_log/kingbase-2012-08-21*kbbadger --prefix '%m %u@%d %p %r %a : ' /sys_log/kingbase.log# Log line prefix with syslog log outputkbbadger --prefix 'user=%u,db=%d,client=%h,appname=%a' /sys_log/kingbase-2012-08-21*# Use my 8 CPUs to parse my 10GB file faster, much fasterkbbadger -j 8 /sys_log/kingbase-10.1-main.log
詳細(xì)請(qǐng)參見 –help
舉例說明
$ ./kbbadger ./ sys_log/kingbase-2019-10-26_1544* -f stderr -J 12 -j 32[========================>] Parsed 283210387 bytes of 283210387 (100.00%),queries: 327810, events: 51LOG: Ok, generating html report...
生成的統(tǒng)計(jì)信息效果圖如下: