zabbix自定义监控项脚本

文章介绍了如何配置Zabbix自定义监控项,包括使用bash脚本来检测URL是否存活以及服务的状态。脚本通过curl命令获取HTTP状态码和重定向URL,判断URL的健康状况,并且可以嵌套多个检测项。同时,文中提供了函数式脚本示例,实现多个监控项集成在一个脚本中,通过参数调用执行不同的检查功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下脚本具体如何使用可参考以下文章

配置zabbix自定义监控项_Apex Predator的博客-优快云博客

1.检测url是否存活

vi /opt/zabbix_jb/check_url_status.sh

#!/bin/bash
a=`curl -s -o /dev/null -w "%{http_code}" "$1"`
b=`curl -s -o /dev/null -w "%{redirect_url}" -I $1|tail -n 1`
c=`curl -s -o /dev/null -w "%{http_code}" "$b"`
if [ "$a" == 200 ]; then
   echo '1'
else
   if [ "$a" != 301 ]; then
      echo '0'
   else
      if [ "$c" == 200 ]; then
         echo '1'
      else
         echo '0'
      fi
   fi
fi

2.单个脚本嵌套多个检测项

vi /opt/zabbix_jb/check.sh

#!/bin/bash
function check_url {   
   a=`curl -s -o /dev/null -w "%{http_code}" "$1"`   #传入$1参数
   b=`curl -s -o /dev/null -w "%{redirect_url}" -I "$1"|tail -n 1`  #传入$1参数
   c=`curl -s -o /dev/null -w "%{http_code}" "$b"`
   if [ "$a" == 200 ]; then
         echo '1'
   else
         if [ "$a" != 301 ]; then
             echo '0'
         else
             if [ "$c" == 200 ]; then
                 echo '1'
             else
                 echo '0'
             fi
         fi
   fi
}

function check_service {
   b=`ps -ef |grep "$1"|grep -v grep|wc -l`  #传入$1参数
   a=`netstat -tlpn |grep "$2"|wc -l`     #传入$2参数
   if [ $b == 0 ]; then
       echo '0'
   else
       if [ $a == 0 ]; then
            echo '0'
       else
            echo '1'
       fi
   fi
}
$1 $2 $3  #此处通过传入$1参数去选择需要执行的脚本,达成多个监控项集成于一个脚本,后面的$2和$3作为数值重新传入function脚本的变量中

传入参数参考 

zabbix_get -s 10.1.60.118 -k check[check_url,www.baidu.com]

zabbix_get -s 10.1.60.118 -k check[check_service,kafka,:9092]

对于zabbix agent配置的参考

对于看不懂function传参使用的可参考:shell脚本function传参的使用_Apex Predator的博客-优快云博客

### 自定义脚本用于Zabbix监控交换机 为了实现通过Zabbix监控网络交换机的功能,通常会采用SNMP协议来收集设备数据。编写自定义脚本来获取特定于交换机的信息并将其发送到Zabbix服务器是一个常见做法。 #### SNMP配置 首先,在目标交换机上启用SNMP服务,并设置合适的社区字符串以便访问必要的OID(对象标识符)。这一步骤对于确保能够从远程位置查询交换机状态至关重要[^1]。 #### 脚本开发 接下来是创建Python或其他支持的语言编写的脚本,该脚本利用`pysnmp`库或者其他类似的工具包与交换机通信: ```python from pysnmp.hlapi import * errorIndication, errorStatus, errorIndex, varBinds = next( getCmd(SnmpEngine(), CommunityData('public'), UdpTransportTarget(('demo.snmplabs.com', 161)), ContextData(), ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0))) ) if errorIndication: print(errorIndication) elif errorStatus: print('%s at %s' % (errorStatus.prettyPrint(), errorIndex and varBinds[int(errorIndex) - 1][0] or '?')) else: for varBind in varBinds: print(' = '.join([x.prettyPrint() for x in varBind])) ``` 上述代码片段展示了如何使用PySNMP库执行简单的GET请求以检索系统描述信息;实际应用中可以根据需求调整所使用的MIB文件以及具体的OID路径[^2]。 #### 集成至Zabbix 完成脚本测试之后,可以将此脚本集成进Zabbix环境中作为UserParameter或者外部检查的一部分。编辑相应的模板文件并将新目关联给被监测的目标主机即可生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值