Zabbix监控服务器,有个要求:如果有两个主机A,B和服务端S,如何配置才能监控A到B的网络状况
监控网站是否能够ping通
方案一:使用zabbix自带的icmmping来进行连接监测
步骤一、安装fping
1、 下载fping.tar.gz
2、tar -zxvf fpring.tar.gz
3、./configure --prefix=/usr/local/fping
4、 make && make install
5、测试是否能用
./fping baidu.com
baidu.com is alive
步骤二、zabbix配置使用fping
1、在zabbix_server.conf配置FpingLocation=/usr/local/fping/sbin/fping
2、创建监控项,监控项注意类型选择“简单代理”然后输入键值“icmpping[mapi.alipay.com,4,1000,32,100000]”即可
3、之后创建触发器。
【PS:很不幸的是,最后发现无法实现需求,因为icmpping是用来监测服务端与客户端之间是否有效连接的,我不知道该用什么办法让它能在客户端监控与其它网站之间的连接,那么只能用自定义key的方式来判断是否顺利联通了】
方案二:使用编写脚本,设置自定义Kye的方式来进行监控
1、下载安装fping,客户端下编写测试是否联通的脚本,脚本内容如下
# 使用fping进行校验
if [ ! -n "$1" ] ;then
echo -1
exit 1
else
echo `/usr/local/fping/sbin/fping $1`
alive="alive"
result=$(echo $a | grep "${alive}")
if [[ "$result" != "" ]]
then
echo 1
else
echo 0
fi
fi
2、在zabbix_agentd.conf中配置自定义key,
# fping ip,如果ping通返回1,ping不通返回-
UserParameter=fping.other.sys[*],/usr/local/zabbix/scripts/check_fping.sh $1
3、在服务端使用zabbix_get来测试是否有效
./zabbix_get -s 127.0.0.1 -p 10050 -k "fping.other.sys[baidu.com]"
(这里遇到一个问题,在客户端自测脚本是好的,但是到了服务端怎么样都执行不出来fping,因为fping必须由root执行,如果非root会报错,这是权限问题,chmod u+s /usr/local/sbin/fping 就可以解决这个问题。)
监控网站端口是否可连接
方案1:使用telent监测服务器端口是否开放
1、退出telent界面的命令
首先需要按ctrl+] ,然后在按 q
2、 telnet监视的脚本
3、配置zabbix_agentd(客户端)的自定义item
//telnet ip port,如果端口能够连接返回1,不能够连接返回0
UserParameter=telnet.other.sys[*],/usr/local/zabbix/scripts/checknet/check_telnet.sh $1 $2
4、然后在服务端死活无法监测接口,一直返回失败,估计是telnet命令执行的问题
方案2:使用nmap来监测
1、既然本地命令执行有问题,那么就采用fpirng类似的方式来监测端口好了
2、下载安装nmap,然后配置,编写shell脚本,之后设置权限,
3、最后,妥妥的
(最后提供一个zabbix用户无法使用命令的方法:思路就是提权,为这些命令加上chmod u+x的权限;或者干脆visudo给zabbix加上能够使用所有命令的权限)