You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何限制external script仅在指定Zabbix host group执行并配置告警

解决Zabbix仅在指定主机组运行外部脚本并告警的方案

嗨,作为Zabbix新手碰到这种精准控制的需求很正常,我来一步步帮你搞定:

核心思路

你现有模板已经关联了host-blwehost-trainhost-standby三个组,要让新的外部脚本Item仅在host-blwe生效,我给你两种可行方案,推荐第一种(逻辑更清晰,后续维护更方便):


方法一:创建专属模板(推荐)

这种方式把host-blwe的专属监控和其他组隔离开,不会干扰现有模板的其他配置:

  1. 新建专属模板
    • 登录Zabbix UI,进入配置 > 模板 > 创建模板
    • 模板名称设为Template BLWE Custom Script,关联到host-blwe主机组(注意不要关联其他组)
  2. 添加外部脚本Item
    • 进入新建的模板,点击Items > 创建Item
    • 填写关键信息:
      • 名称:比如BLWE 自定义脚本检查
      • 类型:选择External check
      • 键值:填写你的脚本名称+参数(比如my_check_script.sh[arg1,arg2],无参数直接写my_check_script.sh
      • 数据类型:根据脚本返回值选择——如果是数值选数字(无符号);如果是字符串,要在键值后加-s(比如my_check_script.sh[-s]),再选字符类型
      • 勾选已启用,其他选项按需调整(比如更新间隔、历史数据保留时长)
    • 保存Item
  3. 配置告警触发器
    • 在模板里点击触发器 > 创建触发器
    • 填写关键信息:
      • 名称:比如BLWE脚本执行异常告警
      • 严重性:根据需求选(比如严重
      • 表达式:根据脚本返回逻辑设置,比如:
        • 脚本正常返回0、异常返回非0:{Template BLWE Custom Script:my_check_script.sh.last()} != 0
        • 脚本异常返回字符串ERROR{Template BLWE Custom Script:my_check_script.sh[-s].last()} = "ERROR"
      • 可选添加描述,说明告警原因和处理建议
    • 保存触发器
  4. 验证脚本权限
    • 确保脚本放在Zabbix服务器的ExternalScripts目录(默认是/usr/lib/zabbix/externalscripts/
    • 给脚本设置正确权限:chmod +x /usr/lib/zabbix/externalscripts/my_check_script.sh && chown zabbix:zabbix /usr/lib/zabbix/externalscripts/my_check_script.sh
    • 切换到zabbix用户手动执行脚本,确认能正常返回结果:su - zabbix -s /bin/bash -c "/usr/lib/zabbix/externalscripts/my_check_script.sh"

方法二:用宏控制现有模板的Item(无需新建模板)

如果不想新增模板,也可以在现有模板里加Item,通过主机组宏控制仅在host-blwe启用:

  1. 给各主机组设置宏
    • 进入配置 > 主机组,找到host-blwe,点击宏 > 创建宏
      • 宏名称:{$BLWE_SCRIPT_ENABLED}
      • 值:1
    • host-trainhost-standby设置同样的宏,值设为0
  2. 在现有模板添加Item
    • 进入现有模板,点击Items > 创建Item
    • 信息填写和方法一类似,唯一区别是:已启用选项不要直接勾选,而是选择{$BLWE_SCRIPT_ENABLED}(只有宏值为1的主机组会启用这个Item)
  3. 配置触发器
    • 触发器表达式和方法一一致,因为只有host-blwe的主机启用了Item,所以触发器只会在这些主机上触发告警
  4. 验证脚本权限(和方法一第4步一致)

最后验证

配置完成后等待几分钟,进入监测 > 最新数据,筛选host-blwe组的主机,查看这个Item是否有数据返回;然后可以手动让脚本返回异常值,测试触发器是否正常触发告警。

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

火山引擎 最新活动