【问题标题】:Zabbix Action - How to use Default Field in Custom ScriptZabbix Action - 如何在自定义脚本中使用默认字段
【发布时间】:2019-11-21 17:44:07
【问题描述】:

我正在编写一些由 Zabbix Action 运行的 python 脚本。 我想增加价值 操作字段中的默认主题和默认消息,然后在我的脚本中使用此值。所以我正在运行脚本并在脚本参数中转发所有需要的宏,例如:

python /path/script.py -A "{HOST.NAME}" -B "{ALERT.MESSAGE}" -C "{ALERT.SUBJECT}"

我只能获得 HOST.NAME 值,对于其他人我只能获得宏名称但没有值

你知道问题出在哪里吗?自定义脚本无法使用这些宏?

example

【问题讨论】:

    标签: python api monitoring alarm zabbix


    【解决方案1】:

    在自己做了一些研究和测试之后,似乎这些警报宏在自定义脚本操作中确实不可用。1

    您有两种解决方法:


    如果您需要能够在主机本身上执行此脚本,快速的选择是简单地将宏替换为您的主题和警报名称的实际文本。 肯定需要进行一些测试以确保它适用于您的环境,这不是最优雅的解决方案,但这样的事情可能只需很少的额外努力就可以工作:

    python /path/script.py -A "{HOST.NAME}" -B "Problem: {EVENT.NAME}" -C "Problem started at {EVENT.TIME} on {EVENT.DATE}
    Problem name: {EVENT.NAME}
    Host: {HOST.NAME}
    Severity: {EVENT.SEVERITY}
    
    Original problem ID: {EVENT.ID}
    {TRIGGER.URL}"
    

    当然要验证,例如换行符不会破坏您环境中的自定义脚本。
    它看起来不漂亮,但它可能是最简单的选择。


    如果您可以在任何主机上运行该命令,更好的选择是创建一个新的媒体类型,这将允许您使用这些变量,甚至可以更轻松地将此脚本添加到其他主机.这些宏绝对可以用作自定义媒体类型的一部分(请参阅Zabbix Documentation - Media Types),其中可以包含自定义脚本。

    您需要为 Zabbix 服务器 制作一个 bash 或类似的脚本文件才能运行(这意味着在 Zabbix 服务器本身之外的主机上做任何事情会更加困难,但不是不可能)。

    一旦设置了媒体类型,作为一种解决方法(当然不是理想的),您需要一个user 来“发送”到;将该媒体类型分配给用户,然后将警报“发送”给具有该媒体类型的用户,应该使用宏执行您的脚本,就像执行自定义命令一样。


    1:虽然我对此进行了自己的测试,但我找不到任何文档明确声明在这种情况下不支持这些宏,并且他们绝对看起来像他们应该 - 如果有人能找到确认或否认这一点的文档,他们非常乐意编辑/撤销这个答案。

    【讨论】:

    • 感谢您的帮助!我尝试了几种方法,但结果总是相同。看起来这些宏在自定义脚本中不可用。媒体类型脚本对我来说没用。我会以其他方式完成我的任务。谢谢:)
    【解决方案2】:

    我也应该解释一下它现在是如何工作的,所以我做了一些类似的事情:

    python /path/script.py -A "{HOST.NAME}" -B "Problem: {EVENT.NAME}" -C "Problem started at {EVENT.TIME} on {EVENT.DATE}
    Problem name: {EVENT.NAME}
    Host: {HOST.NAME}
    Severity: {EVENT.SEVERITY}
    
    Original problem ID: {EVENT.ID}
    {TRIGGER.URL}"
    

    为我工作:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多