python - Zabbix Action - 如何在自定义脚本中使用默认字段

标签 python api monitoring alarm zabbix

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

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

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

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

example

最佳答案

我自己做了一些研究和测试后,似乎这些警报宏确实在自定义脚本操作中不可用。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:虽然我对此进行了自己的测试,但我找不到任何文档明确声明在这种情况下不支持这些宏,而且它们看起来肯定像< em>应该 - 如果有人能找到证实或否认这一点的文档,我会非常乐意编辑/撤销此答案。

关于python - Zabbix Action - 如何在自定义脚本中使用默认字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58980829/

相关文章:

python - 导入时模拟模块全局变量

Python:进程/线程监控

logging - Grafana Loki 特定日志消息总数

azure - 监视 Azure 辅助角色诊断的最佳方式?

python - 是否可以禁用右键单击并关闭消息框 ctype python 上的所有内容?

python - Python 中有一个迭代字典

Python 解释器无法处理导入的模块?

用于以通用方式返回序列的 C++ API

python - 如何使用 pyOpenssl 解码 CSR

api - 如何在 golang 中使用 gin-gonic 服务器编写流 API?试过 c.Stream 没用