简言

上篇文章结合了Percona监控了Linux下的Mysql效果非常好,监控项非常多。这里我们也需要记录一片监控Window下Mysql的文章。百度搜索了一下发现大部分监控也都是使用脚本进行监控的,用的模板也是zabbix自带的,并没有说结合Percona的方式的。这里咱们使用上述方法来实践一下。

一、编写VBS脚本

1.我们需要在zabbix下面建立一个文件夹用来存放脚本
在这里插入图片描述
第一个脚本mysql-ping.vbs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
str1 = getCommandOutput("C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqladmin -u root -p123456 ping")

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
str1 = getCommandOutput("C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqladmin -u root -p123456 extended-status")
Arg = objArgs(0)
str2 = Split(str1,"|")
#注意mysql的路径和账户密码自己进行修改其余不需要动
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

二、修改配置文件

1.将此参数修改为1
UnsafeUserParameters=1
2.在后面添加参数内容

1
2
3
4
UserParameter=mysql.status[*], cscript /nologo C:\zabbix\scripts\mysql-ping.vbs $1
UserParameter=mysql.ping, cscript /nologo C:\zabbix\scripts\mysql-status.vbs
#注意后面的脚本路径位置需要修改

三、重启并测试

1.这里我们重新启动agentd客户端

1
2
3
4
5
C:\zabbix\zabbix_agentd.exe -s -c C:\zabbix\zabbix_agentd.win.conf
#启动zabbix服务
C:\zabbix\zabbix_agentd.exe -x -c C:\zabbix\zabbix_agentd.win.conf
#关闭zabbix服务

2.在zabbix界面添加自带模板Template MySQL
在这里插入图片描述
3.进入zabbix服务端测试

1
2
/usr/local/zabbix-server/bin/zabbix_get -s 192.168.43.66 -k mysql.ping

4.监控的内容展示