官方博文|通过Zabbix API 自动关闭问题

2021-01-29 16:28:14 浏览数 (1)

今天要讲的用例是,当找不到合适的方法来为Zabbix trigger编写恢复表达式时该怎么办。即我们知道如何发现问题,但是却没有好方法来检测问题何时得到了解决。

一般会出现在大型环境部署中,比如说:

  • 一个日志文件中有上百种pattern,我们要理解且需要这些pattern
  • SNMP trap监控项 (snmptrap.fallback)中写有不同的pattern

在这些情况下,trigger很有可能配置成“Event generation mode: Multiple.”(事件生成模式:多个)。实际上这意味着,当“problematic metric”发生时,会额外生成一个事件。

目标:

我只需要收到一份有关记录的邮件,然后关闭事件。

一个变通的办法( 让我们姑且在这里称之为解决方案)是,我们可以定义一个动作,来做到:

  1. 关联一个API端点
  2. 手动确认事件并关闭事件

这一方法有效的最重要的原因是,事件发生,产生action时,在操作中可以知道问题的事件ID,也就是通过宏{EVENT.ID}得知。

要解决问题,我们需要安装全局API属性:

代码语言:javascript复制
     {$Z_API_PHP}=http://127.0.0.1/api_jsonrpc.php
    {$Z_API_USER}=api
{$Z_API_PASSWORD}=zabbix

注意:

‘http://127.0.0.1/api_jsonrpc.php’ 表示前端服务器与systemd:zabbix-server在同一个服务器上运行。如果不在同一服务器,我们需要写一个Zabbix GUI的前端地址并添加'api_jsonrpc.php'。

我们会有两个action。首先会发送邮件通知:

一分钟后,第二个action是关闭事件:

以下的bash代码段必须全部添加进去。复制粘贴即可,无需做任何更改。

代码语言:javascript复制
url={$Z_API_PHP}
    user={$Z_API_USER}
password={$Z_API_PASSWORD}

# authorization
auth=$(curl -sk -X POST -H "Content-Type: application/json" -d "
{
  "jsonrpc": "2.0",
  "method": "user.login",
  "params": {
    "user": "$user",
    "password": "$password"
  },
  "id": 1,
  "auth": null
}
" $url | 
grep -E -o "([0-9a-f]{32,32})")

# acknowledge and close event
curl -sk -X POST -H "Content-Type: application/json" -d "
{
  "jsonrpc": "2.0",
  "method": "event.acknowledge",
  "params": {
    "eventids": "{EVENT.ID}",
    "action": 1,
    "message": "Problem resolved."
  },
  "auth": "$auth",
  "id": 1
}" $url

# close api key
curl -sk -X POST -H "Content-Type: application/json" -d "
{
    "jsonrpc": "2.0",
    "method": "user.logout",
    "params": [],
    "id": 1,
    "auth": "$auth"
}
" $url

点击“阅读原文”,可查看英文博客。

12月14-18日 上海

2020年最后一场

  • 优势:Zabbix认证培训可能是性价比最高的学习Zabbix方式!
  • 特点:Zabbix5.0认证培训天数增加,内容更丰富,包含4.0、4.2、4.4、5.0,理论 实践 咨询,全面到位、深度解析!
  • 资料:欢迎联系培训小姐姐获取内容大纲和相关信息。

培训负责人Jenny

延伸阅读

  • Zabbix API实践操作在线课分享及精选问答

0 人点赞