MYSQL PMM 搭建容易,細節難
- 2019 年 12 月 16 日
- 筆記

現在什麼都要短平快,意思就是又要好,又要快,又要不出問題,嗯, 如果要監控MYSQL 來說,想要一個這樣的東西 PMM monitor and mannagement)是一個不錯的選擇。(順便說一句,二代已經出爐了,這裡寫的還是一代)
首先要好,這款監控開源產品是支持 MYSQL,POSTGRESQL, MONGODB , ProxySQL , 三款數據庫基本上公司主流的開源數據庫都支持了。同時這款產品還有一個特殊的地方就是對自己有監控,什麼意思,很多監控產品對接入的系統都有良好的監控,但是獨獨對自己本身的狀態是沒有 監控的,這款產品會對自身的數據庫,系統狀態都是有監控的。
怎麼安裝就不提了,網上安裝也是一大堆,但實際上安裝還是需要提一下的,因為我在測試系統上安裝,是很順利的,但到了生產系統上就是另外一回事了。
大致安裝這個系統會遇到以下問題
1 由於防火牆沒有關閉,在安裝數據收集端後,造成DOCKER系統中的配置項寫入IPTABLE,進行DOCKER 內的監控系統和外部客戶端數據的轉發失敗。 具體的反應就是安裝完客戶端,客戶端和數據收集端之間的數據連接狀態為 DOWN ,即使你在關閉防火牆也是無法彌補,只能重新安裝。

2 網段的原因,實際上一個公司裏面的數據庫服務器可能會在多個網段都存在,但監控的收集只在一個網段,那網絡的4-7 層的設置並打通關於防火牆的一些設置就是必須的,至於怎麼打通,那就的問問你公司裏面的網絡大牛了。
3 默認安裝PMM 是沒有用戶名密碼的,但實際上一個系統最好還是有用戶名和密碼的設置,這裡的用戶名密碼由於PMM是DOCER 的安裝方式,只能在初始化的時候,來做,否則只能重做。
4 根據官方文檔的要求,如果你沒有專業的DOCKER Operation 那最還是按照文檔來給OPT 目錄提供充足的空間,防止某些你不懂的領域產生的問題
跳過這些坑後,剩下的基本上就是
1 部分監控項目有,但沒有監控數據
2 慢查詢沒有數據
我們先看第一個問題 (以下的MYSQL 為 PERCONA 5.7.23),以下僅僅是選擇了幾個指標,實際上安裝後 Innodb metrics advanced 都沒有數據



到底怎麼才能有數據呢????
SET GLOBAL innodb_monitor_enable=all
在MYSQL中執行完上面的語句,立即大部分PMM中顯示 NO DATA POINTS 的 地方均會開始接受和顯示數據。
但即使你做了這些,還是有些圖形沒有數據顯示 no data point
到底是怎麼回事。相信這裏面至少還有兩個圖形沒有數據
1 innodb online DDL
2 innodb Defragmentation
為什麼,因為這兩個圖形是僅僅服務於 MariaDB的,所以如果你使用的是官版的或者是PERCONA 版本的MYSQL 是捕會有數據顯示的。
還記得幾年前寫過一個SHELL 腳本,來統計一段時間有多少的 row insert ,delete, update 等信息,現在再看這個監控 innodb row operations ,那是比較一目了然看到系統的 IN OUT 狀態了。
在基本上搞清楚這些問題後,下面就是對一些監控圖形和指標的掌握了。(本期一定是說不完,所以寫到哪裡算哪裡)
1 innodb checkpoint age, 這張圖上我比較關注的並不是圖中的紅色的線,而是 uncheckpointed bytes ,這個數值的大小預示着有多少臟頁還存在於系統中

下面這個圖中的值之間的關係,試想如果你有很多的日誌還沒有做checkpoint ,日誌沒有落盤,你的想想哪裡出了問題,並關注一下系統的負載情況,以及I/O情況

當然在看完上面的圖,我馬上就想看下面這個圖,看看到底每秒的日誌寫入量有多大。

而相關的 innodb_buffer_pool_read_requests 也應該被關注,這表示在某個時間段系統從磁盤上請求數據的請求數,配合 innodb_buffer_pool_reads 和 Innodb_buffer_pool_read_requests兩個參數就可以獲得緩存的命中率是多少,並且是否缺少內存來界定的一個指標。

當然死鎖也是很容易在 innodb metrics 中發現的

另外還有一些比較好的功能,例如可以看到表的存儲空間的佔用以及每個表的行數 (這裡不一定是十分準確的),相關的信息是來自於information_schema中的VIEW的信息而來。


另外如果你使用的數據庫是PERCONA 版本的MYSQL 則監控還會奉送 mysql user statistics 狀態的界面
例如
那個用戶創建的連接多了,那個用戶的流量比較高,那個用戶搜索的數據行數,使用的CPU 等等都可以從PMM 中獲取。


所以說,PMM 看上去搭建速度很快,能展示的項目也很多,但其中的細節的問題,只有好好弄過的人知道有啥坑,OK 今天就到這裡。
