從zabbix3.4開始,zabbix上就自帶mysql的監控模版,可以很方便對linux上的mysql數據庫進行直接監控,基本不需要任何配置.但m是對windows上的mysql數據庫卻需要配置,不能直接進行監控。經過不斷查詢,找到了監控方法,參考https://blog.51cto.com/11575637/2056976
創建vbs腳本
在windows主機上,新建兩個VB腳本,名稱爲mysql-ping.vbs和mysql-status.vbs,名稱和路徑自己可以隨意定義,我的如下所示
mysql-ping.vbs腳本,主要是檢測mysql程序是否存活,內容如下
Set objFS =CreateObject("Scripting.FileSystemObject") Set objArgs = WScript.Arguments str1 = getCommandOutput("C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin.exe -uroot -pxxxxx ping") #這裏注意寫明mysqladmin程序的絕對路徑和root用戶密碼 If Instr(str1,"alive") > 0 Then WScript.Echo 1 Else WScript.Echo 0 End If Function getCommandOutput(theCommand) Dim objShell, objCmdExec Set objShell =CreateObject("WScript.Shell") Set objCmdExec = objshell.exec(thecommand) getCommandOutput =objCmdExec.StdOut.ReadAll end Function
mysql-status.vbs腳本,主要是配置zabbix鍵值,採集mysql相關狀態
Set objFS = CreateObject("Scripting.FileSystemObject") Set objArgs = WScript.Arguments str1 = getCommandOutput("C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin.exe -uroot -pxxxx extended-status") #這裏注意寫明mysqladmin程序的絕對路徑和root用戶密碼 Arg = objArgs(0) str2 = Split(str1,"|") For i = LBound(str2) to UBound(str2) If Trim(str2(i)) = Arg Then WScript.Echo TRIM(str2(i+1)) Exit For End If next Function getCommandOutput(theCommand) Dim objShell, objCmdExec Set objShell =CreateObject("WScript.Shell") Set objCmdExec = objshell.exec(thecommand) getCommandOutput =objCmdExec.StdOut.ReadAll end Function
然後配置zabbix-agent程序配置文件
在
修改需要被監控的mysql所在服務器上的zabbix_agent.conf
UnsafeUserParameters=1
添加鍵值
UserParameter=mysql.status[*], cscript/nologo C:\Users\Administrator\Desktop\zabbix_agents_3.4.0.win\Scripts\mysql-status.vbs $1 UserParameter=mysql.ping, cscript /nologo C:\Users\Administrator\Desktop\zabbix_agents_3.4.0.win\Scripts\mysql-ping.vbs
如下所示:
然後在zabbix服務器上哪測試
zabbix_get -s 172.31.102.111 -k mysql.ping zabbix_get -s 172.31.102.111 -k mysql.status[Com_commit]
最後在zabbix服務上,套用mysql模版,同時自己繪製一套圖形,最終結果如下所示: