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加上能够使用所有命令的权限)