pt-stalk
pt-stalk:官方地址
說明
用途:當MySQL發生故障時收集
語法:
pt-stalk [OPTIONS]
pt-stalk等待觸發條件發生,然後收集數據來幫助診斷問題。該工具被設計爲作爲具有根特權的守護進程運行,這樣您就可以診斷不能直接觀察到的間歇性問題。還可以使用它來執行自定義命令,或者在不等待觸發器發生的情況下根據需要收集數據。
對於偶爾發生的間接性的性能問題,可以通過自定義腳本出發收集動作。如:定義一個腳本,只有在CPU使用率超過60%時,才收集信息。具體
具體例子
如下:通過腳本獲取CPU使用率,然後和--threshold
指定的閾值50%比較,如果超過閾值則收集信息。
腳本內容:
pt_cpu.sh
function trg_plugin(){
a=$(sar 1 1 | grep -i "Average:"| awk '{print $8}');echo 100 - $a |bc
}
pt-stalk命令:
[root@BigData ~]# pt-stalk --daemonize --dest=/tmp/log/pt-stalk --user=root --password=123 --port=3306 --function=/tmp/pt_cpu.sh --variable highcpu --cycles=3 --interval=1 --threshold 50 --sleep=60 --log=/var/log/pt-stalk.log
2019_08_01_10_55_57 PID file /var/run/pt-stalk.pid already exists and its PID (15741) is running
pt-stalk會在後臺運行,當CPU使用率達到50%則會自動收集信息,用於性能分析。收集的文件存儲在--dest
指定的目錄下:/tmp/log/pt-stalk。
常用的選項:
--collect
:默認啓用,收集信息。除非指定--no-collect
否則都會自動收集相關信息。--config
:指定pt-stalk的配置文件。將配置信息寫入文件,而不需要在命令行中指定。如果指定該參數,則必須是第一的位置。--cycles
:--variable
指定的值必須大於--threshold
指定值的次數,纔會觸發收集信息。默認:5--daemonize
:後臺運行--defaults-file
:指定MySQL的配置文件--dest
:收集信息產生文件的存放目錄。默認:/var/lib/pt-stalk。--disk-bytes-free
:指定磁盤可用空間不小於該大小才能收集信息,默認:100M。單位:k,M,G和T。--disk-pct-free
:和--disk-bytes-free
意思一樣,只是剩餘的百分比。--function
:指定自定義腳本文件,作爲觸發條件收集信息。默認是監控SHOW GLOBAL STATUS
命令。然後將結果傳遞給--variable
參數,和--threshold
參數值比較。- status
通過監控SHOW GLOBAL STATUS
的參數值,--variable
參數指定的監控的具體是哪個參數,默認:Threads_running。 - processlist
通過監控SHOW FULL PROCESSLIST
命令的結果,--variable
參數指定列的值和--match
指定值相匹配的次數,如:State列,匹配值:statistics。--function processlist \ --variable State \ --match statistics \ --threshold 10
- 自定義腳本
統計InnoDB出現的等待次數。trg_plugin() { mysql $EXT_ARGV -e "SHOW ENGINE INNODB STATUS" \ | grep -c "has waited at" }
- status
--iterations
:收集次數,默認:永久。--match
:匹配SHOW PROCESSLIST
中列值。--notify-by-email
:發送收集信息到指定的EMAIL中。