跳到主要内容

[toc]

zabbix3.4配置触发zabbix-agent端shell脚本、命令

1.说明

1.zabbix-server端配置了触发器,如果监控项的阀值达到触发器的值,会发出告警信息。我们还想增加一个功能,如磁盘使用空间达到80%阀值的时候,触发一个自动清理磁盘空间的脚本,达到所谓的“自愈”功能

2.要配置好监控项、触发器,要确保触发器在监控项达到设置的阀值的时候能正常触发,这个是实现触发zabbix-agent脚本任务执行的前提,此处以磁盘可用空间低于30%为例

2.执行步骤

2.1 zabbix-agent端开启允许远程执行命令

//zabbix-agent端编辑配置文件/etc/zabbix/zabbix_agentd.conf第73行,取消# EnableRemoteCommands=0注释,并把值修改为1
EnableRemoteCommands=0

用以下命令修改
[root@zabbix-agent ~]# sed -i.bak '/# EnableRemoteCommands=0/a EnableRemoteCommands=1' /etc/zabbix/zabbix_agentd.conf

//重启zabbix-agent
[root@zabbix-agent ~]# systemctl restart zabbix-agent

2.2 在zabbix-agent端编写脚本,交给触发器触发时执行

//创建存放脚本目录,在zabbix-server端配置触发脚本时要写脚本的绝对路径
[root@zabbix-agent ~]# mkdir /etc/zabbix/scripts

//编写脚本,此处仅仅是为了演示触发效果
[root@zabbix-agent ~]# mkdir /etc/zabbix/scripts
[root@zabbix-agent ~]# cat >/etc/zabbix/scripts/test.sh <<EOF
#!/usr/bin/env bash
echo "磁盘使用超过80%"
echo "`date "+%F-%T"` done" >> /tmp/test.txt
EOF

2.3 在zabbix-agent端将zabbix用户加入到sudo中

visudo编辑文件,在93行新加入abbix ALL=(ALL) NOPASSWD: ALL
viduso编辑文件,注释53行Defaults !visiblepw

//用以下命令修改
[root@zabbix-agent ~]# sed -i.bak '/^root/a zabbix ALL=(ALL) NOPASSWD: ALL' /etc/sudoers && sed -i '/Defaults !visiblepw/c#Defaults !visiblepw' /etc/sudoers

2.4 zabbix-server创建动作,并指定只让某个主机组执行命令

配置-->动作-->创建动作

iShot_2024-08-28_21.12.58

操作-->新的

iShot_2024-08-28_21.14.13

进行相关配置

iShot_2024-08-28_21.15.19

在zabbix-agent端做如下操作

#创建一个8G的大文件让系统磁盘使用率大于80%,这样就会触发告警,从而执行我们自定义的脚本
dd if=/dev/zero of=/opt/bigfile bs=1M count=8192

#等待server端web界面告警后,就会在我们自定的脚本中设定的路径/tmp下创建一个test.txt文件
cat /tmp/test.txt
2018-01-10-22:28:13磁盘使用率超过80%