菜单

Zabbix集成Grafana OnCall

Zabbix是一款开源监控软件工具,适用于各种IT组件,包括网络、服务器、虚拟机和云服务。Zabbix提供了对网络利用率、CPU负载和磁盘空间消耗等指标的监视。

为Grafana OnCall配置Zabbix集成

该集成可用于Grafana Cloud OnCall。您必须具有管理员角色才能在Grafana OnCall中创建集成。

  1. 集成选项卡上,单击+新的集成接收警报
  2. 选择Zabbix从可用的集成列表中
  3. 请按照指南中的说明操作如何建立联系窗口以获取惟一的集成URL并查看下一步。

配置Zabbix服务器

  1. 部署一个Zabbix游乐场,如果你没有一个设置:

    Docker run——name zabbix-appliance -t \ -p 10051:10051 \ -p 80:80 \ -d zabbix/zabbix-appliance:最新版本
  2. 建立到Zabbix服务器的ssh连接。

    Docker exec - zabbix-appliance bash
  3. grafana_oncall.sh脚本。AlertScriptsPath在Zabbix服务器配置文件(zabbix_server.conf)中指定的目录。

    grep AlertScriptsPath /etc/zabbix/zabbix_server.conf . grep

    注意:该脚本必须由在zabbix服务器上运行zabbix_server二进制文件(通常为“zabbix”)的用户执行。例如,Chmod +x grafana_oncall.sh

    ls -lh /usr/lib/zabbix/alertscripts/grafana_oncall.sh -rw-r——r——1 root root 1.5K Jun 6 07:52 /usr/lib/zabbix/alertscripts/grafana_oncall.sh

配置Zabbix警报

在Zabbix web界面中,执行以下操作:

  1. 在浏览器中打开localhost:80。

  2. 导航到管理>媒体类型>创建媒体类型

  1. 用以下字段创建媒体类型。

    • 名称:Grafana OnCall
    • 类型:脚本
    • 脚本参数:
      • {警报。SENDTO}
      • {警报。主题}
      • {警报。信息}

设置{ALERT。SEND_TO}的值

要向Grafana OnCall发送警报,{ALERT。SEND_TO}的值必须在用户媒体配置

  1. 在web界面中,导航到管理>用户打开用户属性的形式。

  2. 媒体选项卡上,单击添加和复制链接从Grafana OnCall在发送到字段。

  1. 点击测试在最后一列发送测试警报Grafana OnCall。
  1. 指定发送到OnCall使用唯一的集成URL从上面的步骤在测试窗口打开。
    创建带有正文和可选主题的测试消息,然后单击测试

Zabbix通知的分组和自动解析

Grafana OnCall提供Zabbix通知的分组和自动解析。使用以下步骤配置分组和自动解析。

  1. 为Grafana OnCall提供一个参数作为分组区分的标识符。

  2. 将该变量附加到动作的主题asONCALL_GROUP: ID,在那里ID有扎比克斯吗.例如,{事件。ID}.Grafana OnCall脚本grafana_oncall.sh提取此事件并传递alert_uid到Grafana OnCall。

  3. 中的“Resolved”关键字需要在Grafana Oncall中启用自动解析默认主题恢复操作

grafana_oncall.sh脚本

# !这是原来ericos的shell脚本的修改。#获取url($1),主题($2),和消息($3)url="$1" subject="${2//$'\r\n'/'\n'}" message="${3//$'\r\n'/'\n'}" #警报状态取决于主题,表明它是一个触发器进入问题状态或恢复recoversub='^恢复(Y|ED)?$|^OK$|^已解决。*' if [["$subject" =~ $recoversub]];then state='ok' else state='alerting' fi payload='{"title": "'${subject}'", "state": "'${state}'", "message": "'${message}'"}' #动作主体的警报组标识符。如果没有ONCALL_GROUP在动作主题regex='ONCALL_GROUP: ([a-zA-Z0-9_\"]*)'如果[["$subject" =~ $regex]]];然后alert_uid = $ {BASH_REMATCH[1]}载荷= "{“alert_uid”:“$ {alert_uid}”,“标题”:“${主题}”,“状态”:“${}状态”,“消息”:“${消息}”}的fi返回= $(卷$ url - d " ${载荷}" - h - type: application / json - x的帖子)

更多的信息

有关Zabbix脚本的更多信息,请参见通知脚本