只尝试将Prometheus的AlertManager从ZABBIX中使用

首先

我认为很多人在使用ZABBIX进行监控并通过邮件通知时会遇到以下类似情况。

    • ログ監視をしていて連続でメールが飛んできてメールサーバが死んだり遅延したり散々な目に遭う

 

    • SNMPTrap監視をしていて(ry

 

    メンテナンスなどのスケジュールが延長になり、ZABBIXメンテがあけてしまって大量のメールが(ry

我强烈认为ZABBIX应该对邮件和操作执行进行更精细的控制,但是说这些也没有意义,所以我正在考虑解决方法。

普罗米修斯的警报管理器

AlertManager是Prometheus的一部分,它是一个小型的服务器应用程序,用于通知Prometheus生成的事件。它具有通知功能。
其特点是根据主机、优先级和其他自定义标签等将在短时间内接收到的警报进行分组,并具有整理通知和事件的功能。我想在ZABBIX中使用它。

ZABBIX的设置

AlertScript的设置

抱歉,雖然做得比較亂,但在 ZABBIX 的警告腳本目錄中,我們會放置如下的文件。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import json
import requests

if len(sys.argv) < 4:
  print("Require Arguments 3 to,subject,body")

to=sys.argv[1]
subject=sys.argv[2]
body=sys.argv[3]

## to -> unused.
## subject -> Priority\tInstance\tGroup(commasep)\tAlertname
## body -> Alertmanager's annoation summary field.

hash = {}
hash["labels"] = {}

labels = subject.split("\t")
hash["labels"]["Priority"] = labels[0]
hash["labels"]["ProjectName"] = labels[1]
hash["labels"]["Instance"] = labels[2]
hash["labels"]["Group"] = labels[3]
hash["labels"]["alertname"] = labels[4]
hash["labels"]["system"] = "zabbix"

hash["annotations"] = {}
hash["annotations"]["summary"] = body

jsonstr = json.dumps([hash])

# 以下、AlertManager Output

json_data = jsonstr.encode("utf-8")
am_url = "http://localhost:9093/api/v1/alerts"
headers = {"Content-Type" : "application/json" }

r = requests.post(am_url, data=jsonstr, headers=headers)

设置媒体类型

媒体类型看起来是这样的。

項目値NameAlertManagerTypeScriptScriptNamezabbix_alertmanager.pyEnbledChecked

创建具有AlertManager媒体类型的用户(或向现有用户添加媒体)。

在AlertManager中创建一个具有AlertManager媒体类型的用户。由于AlertManager无法使用电子邮件地址栏,因此可以填写任何内容。

创建动作 ​​​zuò)

我将创建一个用于AlertManager的操作。

項目値補足NameAlertManager Action など 何でも良い
Default Subject{TRIGGER.SEVERITY} ProjectName {HOST.NAME1} {TRIGGER.HOSTGROUP.NAME} {TRIGGER.NAME}タブ区切りなので、どこかテキストエディタに書いてからWebUIに貼る プロジェクト名はZABBIXが複数ある前提で入れているDefault Message{ITEM.NAME1}:{ITEM.VALUE1}
{TRIGGER.DESCRIPTION}アラートのサマリーフィールドとしてふんわりとしたテキストを入れる感じにしているので、入れたい情報を入れれば良いRecovery Message無効

以上是ZABBIX方面的设置完成。

AlertManager配置神器

由于感觉用正式的方式写下来有点不太对,所以省略了AlertManager的设置。但是,你可以通过在9093端口使用默认设置启动,并适当进行通知设置,就可以从ZABBIX发送警报了。不过,请注意,本次我们并没有开启恢复通知,只会进行警报通知。

学科

    • リカバリメッセージどうする問題

 

    • APIバージョンが古いかもしれない 今Github見に行ったらAPIv2とか書いてある…

 

    • AlertManagerの設定をちゃんとまとめるとか、Git管理して自動的にデプロイされるようにするとか云々

 

    通知先の管理 ZABBIX上のUIと切り離されてAlertManagerのyamlで管理しないといけなくなるので、その手間など

2019年10月24日更新

看起来似乎有一个叫做amtool的CLI,因此在ZABBIX服务器上安装amtool,并将其设为警报脚本来适当传递数据似乎是个好主意。
(如果API发生变化就很麻烦,所以最好还是交给专门的SDK或CLI来处理)
如果设置好发送数据,还可以管理恢复工作。

广告
将在 10 秒后关闭
bannerAds