1.前言

我的zabbix的版本是5.0版本,5.0的官方文档没有使用bash接收器的示例,6.0的官方文档有使用bash接收器的示例,但是,下载文件的链接失效?!
这里讲解zabbix-server端配置和zabbix web端配置

2.zabbix-server端配置文件

执行第一步前,不管有没有用都去下载一下这些文件:yum install −y --nogpgcheck net-snmp-utils net-snmp-perl net-snmp

  • (感谢评论为大佬指正) gpgcheck主要为了软件下载使用的安全。gpg采用的是非对称加密方式,简单理解就是用公钥加密文件,用私钥解密文件。因为使用yum下载软件的时候会对下载下来的文件做校验,校验时使用的就是对应的公钥,–nogpgcheck就是关闭校验。

(1)配置Zabbix启动SNMP trapper并设置存放trap的文件

vim /etc/zabbix/zabbix_server.conf
StartSNMPTrapper=1
SNMPTrapperFile=/var/lib/zabbix/snmptraps/snmptraps.log
注意看下面

1./var/lib/zabbix/snmptraps/这个路径要存在(也可自己另找路径存储)(没有自己去mkdir一下:mkdir -p /var/lib/zabbix/snmptraps);
2.snmptraps.log这个也要存在(没有自己去创建一个);
3.!!!!!最重要的是:“/var/lib/zabbix/snmptraps/snmptraps.log”要和接下来第二步里面的zabbix_trap_handler.sh里面的“ZABBIX_TRAPS_FILE=“/var/lib/zabbix/snmptraps/snmptraps.log” ”一致!!!!

(2)编辑添加/usr/sbin/zabbix_trap_handler.sh

官网给的这个命令:curl -o /usr/sbin/zabbix_trap_handler.sh https://raw.githubusercontent.com/zabbix/zabbix-docker/6.2/Dockerfiles/snmptraps/alpine/conf/usr/sbin/zabbix_trap_handler.sh–但是看着博客的你多半不行

所以看我这儿操作:vim /usr/sbin/zabbix_trap_handler.sh

把代码复制进去zabbix_trap_handler.sh

ZABBIX_TRAPS_FILE="/var/lib/zabbix/snmptraps/snmptraps.log"

ZBX_SNMP_TRAP_DATE_FORMAT=${ZBX_SNMP_TRAP_DATE_FORMAT:-"+%Y%m%d.%H%M%S"}

ZBX_SNMP_TRAP_FORMAT=${ZBX_SNMP_TRAP_FORMAT:-"\n"}

date=$(date "$ZBX_SNMP_TRAP_DATE_FORMAT")

# The name of the host that sent the notification, as determined by gethostbyaddr(3).
# In fact this line is irrelevant and useless since snmptrapd basically attempts to
# perform reverse name lookup for the transport address (see below).
# In case of failure it will print "<UNKNOWN>"
read host
# The transport address, like "[UDP: [172.16.10.12]:23456->[10.150.0.8]]"
read sender
# The first OID should always be SNMPv2-MIB::sysUpTime.0
#read uptime
# the second should be SNMPv2-MIB::snmpTrapOID.0
#read trapoid

# The remaining lines will contain the payload varbind list. For SNMPv1 traps, the final OID will be SNMPv2-MIB::snmpTrapEnterprise.0.
vars=
while read oid val
do
    if [ "$vars" = "" ]
    then
        vars="$oid = $val"
    else
        vars="$vars$ZBX_SNMP_TRAP_FORMAT$oid = $val"
    fi

    if [[ "$oid" =~ snmpTrapAddress\.0 ]] || [[ "$oid" =~ 1\.3\.6\.1\.6\.3\.18\.1\.3\.0 ]]; then
        trap_address=$val
    fi
done

[[ ${sender} =~ \[(.*?)\].*\-\> ]] && sender_addr=${BASH_REMATCH[1]}

! [ -z $trap_address ] && sender_addr=$trap_address

echo -e "$date ZBXTRAP $sender_addr$ZBX_SNMP_TRAP_FORMAT$sender$ZBX_SNMP_TRAP_FORMAT$vars" >> $ZABBIX_TRAPS_FILE
  • 赋予权限给sh文件,(这一点也感谢评论区大佬指正),a+x就行但是图方便就直接777吧
 chmod 777  /usr/sbin/zabbix_trap_handler.sh

(3)将以下内容添加到snmtrapd.conf

vim /etc/snmp/snmptrapd.conf
traphandle default /bin/bash /usr/sbin/zabbix_trap_handler.sh
authCommunity log,execute,net public
注意看下面

1.“authCommunity log,execute,net public”中“public”这里需要替换为你自己的snmp团体字

(4)重新启snmptrapd服务

systemctl restart snmptrapd.service

(5)测试

snmptrap -v 2c -c public 192.168.0.50:162 "" .1.3.6.1.2.1.1.1.0 SysDesc s "test from snmptrap tool"

然后cat /var/lib/zabbix/snmptraps/snmptraps.log,结果如下图所示
在这里插入图片描述

3.zabbix-web配置监控

添加监控项

在这里插入图片描述

去最新数据看

在这里插入图片描述

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐