zabbix使用脚本自定义监控项

发布于:2024-08-08 ⋅ 阅读:(113) ⋅ 点赞:(0)

1. 在zabbix_agent的配置文件中配置自定义key和脚本位置

vim /etc/zabbix/zabbix_agentd.conf
 UserParameter=mq_check_log,/etc/zabbix/zabbix_agentd.d/mqlog.sh


mq_check_log:是这个自定义参数的名称。在Zabbix的监控项(item)配置中,你可以通过引用这个名称来调用这个脚本。

/etc/zabbix/zabbix_agentd.d/mqlog.sh:指定自定义脚本位置

2. 书写自定义脚本(我这边是自己收集的日志,只有错误消息才有时间戳,所以我过滤时间戳就行,过滤到时间戳后和当前时间对比,小于30分钟就告警(1),大于三十分钟就恢复(0))

#!/bin/bash

# 日志文件路径
LOGFILE="/home/likun/entrade-transwarp/MQ/log"


# 使用grep和awk等工具提取最新的告警时间戳
# 时间戳格式为 '%Y-%m-%d %H:%M:%S'
LATEST_ALERT_TIMESTAMP=$(cat /home/sysadm/entrade-transwarp/MQ/log/* |tac|grep -Eo '\b[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\b' |head -n 1)

# 检查是否成功找到时间戳
if [ -z "$LATEST_ALERT_TIMESTAMP" ]; then
    echo "0"  # 如果没有找到时间戳,则返回0(不告警)
    exit 0
fi

# 获取当前时间戳
NOW=$(date '+%s')
# 将找到的告警时间戳转换为秒
LATEST_ALERT_SEC=$(date -d "$LATEST_ALERT_TIMESTAMP" '+%s')

# 计算时间差(秒)
DIFF=$((NOW - LATEST_ALERT_SEC))

# 如果时间差小于或等于1800秒(30分钟),则返回1(告警)
# 否则返回0(不告警)
if [ $DIFF -le 1800 ]; then
    echo "1"
else
    echo "0"
fi

3. 在zabbix_server端验证新建的监控项

[root@localhost bin]# pwd
/usr/local/zabbix/bin
[root@localhost bin]# ./zabbix_get -s 192.168.224.88 -k mq_check_log
0



abbix_get命令	
-s	客户端ip地址
-p	客户端端口号(默认是10050)
-k	指定键值

4. 在zabbix网页端配置自定义监控项

配置-模版-创建模版

点击监控项-创建监控项

 

点击触发器 - 创建触发器

 

 


网站公告

今日签到

点亮在社区的每一天
去签到