有时候我们需要监控外网网络的连接状况,通常的做法是在本机ping一些网络地址,比如sina。要实现这一目的,可以编写bat脚本不间断ping目标地址,并将返回结果保存到文本文件中,也可以使用Zabbix做一些配置来不间断监控网络状况,本文介绍这两种方法的具体实现。
简单的方法
最简单的方法就是编写一个bat脚本,循环ping目标地址,并将ping的结果放到文本文件中,比如以下脚本:
:top
echo %time% >> log.txt
ping -l 1024 -n 1 sina.com.cn | findstr "TTL">> log.txt
ping -n 2 127.1 >nul
goto top
使用命令行运行,在脚本所在目录会生成一个log.txt文件,里面会记录每次ping的回报信息:
11:09:08.51
来自 111.13.134.203 的回复: 字节=1024 时间=34ms TTL=49
11:09:09.58
来自 111.13.134.203 的回复: 字节=1024 时间=34ms TTL=49
11:09:10.69
来自 111.13.134.203 的回复: 字节=1024 时间=30ms TTL=49
11:09:11.77
来自 111.13.134.203 的回复: 字节=1024 时间=34ms TTL=49
11:09:12.89
来自 111.13.134.203 的回复: 字节=1024 时间=30ms TTL=49
11:09:13.94
来自 111.13.134.203 的回复: 字节=1024 时间=31ms TTL=49
11:09:15.04
来自 111.13.134.203 的回复: 字节=1024 时间=31ms TTL=49
11:09:16.15
来自 111.13.134.203 的回复: 字节=1024 时间=34ms TTL=49
11:09:17.26
来自 111.13.134.203 的回复: 字节=1024 时间=34ms TTL=49
11:09:18.37
来自 111.13.134.203 的回复: 字节=1024 时间=32ms TTL=49
11:09:19.46
来自 111.13.134.203 的回复: 字节=1024 时间=32ms TTL=49
可以看到,上述脚本已经实现了对目标地址的不间断ping。
配置Zabbix客户端
使用Zabbix监控目标机器的网络状态,首先需要使用脚本来ping目标网络地址获取返回值,并将返回值作为关键字发送到Zabbix服务端。在Zabbix配置管理工具中创建相关的项目和图表,就能达到按照指定频率监控网络连接的目的。
Zabbix是一个客户端-服务器结构,要想监控目标机器的状态,需要在该机器上安装Zabbix客户端,这里以Windows系统为例。首先创建以下使用PowerShell获取网络连接的脚本 pingsina.ps1 :
$Test = test-connection sina.com.cn -count 1
$Test.responsetime
脚本创建完成之后,将该脚本拷贝到Zabbix agent安装目录,并使用PowerShell运行一下:
PS C:\zabbix> .\pingsina.ps1
29
初次运行如果报以下错误:
PS C:\zabbix> .\pingsina.ps1
无法加载文件 C:\zabbix\pingsina.ps1,因为在此系统中禁止执行脚本。有关详细信息,请参阅 "get-help about_signing"。
所在位置 行:1 字符: 15
+ .\pingsina.ps1 <<<<
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException
则表示没有执行脚本的权限,可以执行以下语句:
PS C:\zabbix> Set-ExecutionPolicy -ExecutionPolicy Unrestricted
执行策略更改
执行策略可以防止您执行不信任的脚本。更改执行策略可能会使您面临 about_Execution_Policies
帮助主题中所述的安全风险。是否要更改执行策略?
[Y] 是(Y) [N] 否(N) [S] 挂起(S) [?] 帮助 (默认值为“Y”): y
以上设置成功之后,表示能够ping并且可以得到返回值,接下来需要对zabbix_agent进行配置,找到zabbix_agent的安装目录,打开zabbix_agentd.win.conf文件,在最后面添加:
UnsafeUserParameters=1
UserParameter=pingsina,C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe C:\zabbix\pingsina.ps1
表示将pingsina.ps1的执行结果放到关键字pingsina中,作为结果传递到zabbix服务器上。
配置Zabbix服务端
首先,在被监控的客户端 “Configuration"->"Hosts"->"Items" 创建一个Item监控项 :
这里被监控的客户端的IP地址是1.9,在Items里面添加一个监控项Item。如上图,Key就是在Zabbix Agent客户端配置文件里面设定的pingsina,数据类型是Numeric。
添加完监控项后在”“Configuration"->"Hosts"->"Graphics" 里面新建一个图形。
在图形监控的Items里面,点击Add,在弹出的选项里面选择之前创建的监控项。
以上配置完成之后,可以在”Monitor"->"Graphics"下面,显示图形了:
还可以将该监控图形添加到监控面板上,在“Monitor”->"Screens"下面,点击右上角“Edit Screen",选择一个单元格,可以进行配置刚才的图形: