You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Zabbix 6.2.4每日仅执行一次触发动作的配置咨询

Zabbix 6.2.4 每日仅首次告警执行重启动作的实现方案

针对你现有Zabbix配置(通过system.run监控进程、触发告警后执行启动脚本),要实现每日仅当天首次告警时执行重启,后续同告警不重复执行,可采用以下两种可靠方案:

方案一:利用Action聚合条件判断(推荐)

这是Zabbix原生支持的方式,无需额外脚本,配置简单:

  1. 进入Zabbix前端 → Configuration → Actions,找到你的告警动作并编辑
  2. 在Conditions标签页,新增以下条件(逻辑为AND):
    • 基础触发条件:Trigger value → is PROBLEM(保留原有触发逻辑)
    • 当日首次触发判断:选择Calculated,输入聚合表达式:
      count(/Monitor process/system.run["ps -aux | grep -i 'proces' | grep -v 'grep' | wc -l"],,"now/d","now")=1
      
      表达式说明:
      • count(...) 统计指定Item关联触发器的当日触发次数
      • "now/d" 限定统计范围为当天00:00到当前时间
      • =1 仅当当天第一次触发告警时满足条件
  3. 保存配置即可

方案二:全局宏+脚本控制(复杂场景适配)

若聚合条件无法满足特殊需求,可通过脚本结合全局宏记录每日执行状态:

  1. 创建全局宏:进入Administration → General → Macros,新增宏{$DAILY_RESTART_EXECUTED},默认值设为0
  2. 修改Action的执行脚本,替换为以下逻辑(bash示例):
    #!/bin/bash
    TODAY=$(date +%Y%m%d)
    # 从Zabbix获取宏记录的上次执行日期
    LAST_DATE=$(zabbix_get -s <你的Zabbix服务器IP> -k macro.get["{$DAILY_RESTART_EXECUTED}"])
    
    if [ "$TODAY" != "$LAST_DATE" ]; then
        # 执行服务启动脚本
        /path/to/your/start_process.sh
        # 更新宏为当天日期,标记已执行
        zabbix_sender -z <你的Zabbix服务器IP> -s "Zabbix Server" -k macro.set["{$DAILY_RESTART_EXECUTED}","$TODAY"]
    fi
    
  3. 给zabbix-agent用户配置sudo权限,允许执行zabbix_get和zabbix_sender命令,确保脚本能正常读写宏值

验证方法

  • 第一次手动停掉目标进程,触发告警后检查服务是否重启
  • 再次停掉进程触发告警,确认脚本未重复执行
  • 次日重复测试,验证脚本会再次执行重启操作

内容的提问来源于stack exchange,提问作者Rahul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 18:15:35