首先介紹下 pt-stalk,它是 Percona-Toolkit 工具包中的壹個工具,說起 PT 工具包大家都不陌生,平時常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自於這個工具包,這裏就不多介紹了。
pt-stalk 的主要功能是在出現問題時收集 OS 及 MySQL 的診斷信息,這其中包括:
1. OS 層面的 CPU、IO、內存、磁盤、網絡等信息;
2. MySQL 層面的行鎖等待、會話連接、主從復制,狀態參數等信息。
而且 pt-stalk 是壹個 Shell腳本,對於我這種看不懂 perl 的人來說比較友好,腳本裏面的監控邏輯與監控命令也可以拿來參考,用於構建自己的監控體系。
三、使用
接著我們來看下如何使用這個工具。
pt-stalk 通常以後臺服務形式監控 MySQL 並等待觸發條件,當觸發條件時收集相關診斷數據。
觸發條件相關的參數有以下幾個:
function:
默認為 status,代表監控 SHOW GLOBAL STATUS 的輸出; 也可以設置為 processlist,代表監控 show processlist 的輸出;variable:
默認為 Threads_running,代表 監控參數,根據上述監控輸出指定具體的監控項;threshold:
默認為 25,代表 監控閾值,監控參數超過閾值,則滿足觸發條件; 監控參數的值非數字時,需要配合 match 參數壹起使用,如 processlist 的 state 列;cycles:
默認為 5,表示連續觀察到五次滿足觸發條件時,才觸發收集;連接參數:host、password、port、socket。
其他壹些重要參數:
iterations:該參數指定 pt-stalk 在觸發收集幾次後退出,默認會壹直運行。
run-time:觸發收集後,該參數指定收集多長時間的數據,默認 30 秒。
sleep:該參數指定在觸發收集後,sleep 多久後繼續監控,默認 300 秒。
interval:指定狀態參數的檢查頻率,判斷是否需要觸發收集,默認 1 秒。
dest:監控數據存放路徑,默認為 /var/lib/pt-stalk。
retention-time :監控數據保留時長,默認 30 天。
daemonize:以後臺服務運行,默認不開啟。
log:後臺運行日誌,默認為 /var/log/pt-stalk.log。
collect:觸發發生時收集診斷數據,默認開啟。
collect-gdb:收集 GDB 堆棧跟蹤,需要 gdb 工具。 collect-strace:收集跟蹤數據,需要 strace 工具。 collect-tcpdump:收集 tcpdump 數據,需要 tcpdump 工具。