跳到主要内容
版本:3.7.0

Zabbix 告警

通过API Webhook 获取Zabbix平台的告警数据,后经过数据流处理成ONE平台的标准事件。

前置条件

  • 4.4以上版本仅需在 ZabbixServer 端进行脚本内容配置,4.4以下需要额配置脚本文件才可完成数据接入。
  • 需保证ONE平台与Zabbix 平台网络能够连接。
  • zabbix配置webook转发时,创建新的主机组不会自动给主机组配置告警转发权限,需要在zabbix的用户群组中手动配置主机组的权限。

开始使用

ONE平台配置

进入数据集成 -> 数据接入页面,找到Zabbix 数据接入卡片,点击开始集成来创建Zabbix告警数据的接入任务。

填写对应参数后获取Webhook推送地址。

Zabbix Server端配置

创建报警媒介(适用于Zabbix 4.4以上版本)

登陆Zabbix端,点击管理 - 报警媒介类型,在此页面创建一个报警媒介。

ZabbixAlertMedia

配置报警媒介

选择报警媒介类型为 Webhook,并将ONE平台中创建的Webhook推送地址。

ZabbixAlertMediaWebhook

脚本中配置以下代码

ZabbixAlertShell

var ZabbixAlert = {
params: {},
proxy: null,
setParams: function (params) {
if (typeof params != 'object') {
return;
}
ZabbixAlert.params = params;
},
request: function () {
var data, response, replaceData,
url = ZabbixAlert.params.URL,
request = new CurlHttpRequest();

request.AddHeader('Content-Type: application/json');
if (typeof ZabbixAlert.HTTPProxy != 'undefined' && ZabbixAlert.HTTPProxy != '') {
request.setProxy(ZabbixAlert.HTTPProxy);
}

replaceData = ZabbixAlert.params.Message
replaceData = replaceData.replace(/"([^"]*)":\s*"([^\r\n]*)",/g, function(match, key, value) {
value = value.replace(/"/g, '\\\\"');
return '"' + key + '": "' + value + '",';
});
replaceData = replaceData.replace(/\r\n|'/g, '');
Zabbix.Log(4, "[ZabbixAlert Webhook] after replace message is: " + replaceData);
response = request.Post(url, replaceData);

Zabbix.Log(4, '[ ZabbixAlert Webhook ] Received response with status code ' +
request.Status() + '\n' + response);

if (response != null) {
try {
response = JSON.parse(response);
}
catch (error) {
Zabbix.Log(4, '[ ZabbixAlert Webhook ] Failed to parse response received from ZabbixAlert');
response = null;
}
}

if (request.Status() != 200) {
var message = 'Request failed with status code '+request.Status();

if (response != null && typeof response.errmsg != 'undefined') {
message += ': '+ JSON.stringify(response.errmsg) ;
}

throw message + '. Check debug Log for more information.';
}

return response;
},
};


try {
var params = JSON.parse(value);

if (typeof params.URL != 'undefined'
&& typeof params.To != 'undefined'
&& typeof params.Message != 'undefined') {
Zabbix.Log(4, '[ ZabbixAlert Webhook ] webhookURL "' + params.URL +
'" sendto "'+ params.To )+'"';
}
else {
throw 'Missing parameter. URL, message, to parameter is required'
}
if (params.HTTPProxy) {
ZabbixAlert.proxy = params.HTTPProxy;
}

ZabbixAlert.setParams(params);
ZabbixAlert.request();
return 'OK';
}catch (error) {
Zabbix.Log(3, '[ ZabbixAlert Webhook ] ERROR: ' + error);
throw 'Sending failed: ' + error;
}

其他参数按需配置,完成后需点击更新配置生效。

配置消息模板

在报警媒介类型中添加消息模板,按需配置消息内容。

ZabbixAlertMessage

消息内容举例

{
"date_time":"{DATE} {TIME}",
"event_nseverity":"{EVENT.NSEVERITY}",
"event_status":"{EVENT.STATUS}",
"event_name":"{EVENT.NAME}",
"event_value":"{EVENT.VALUE}",
"event_id":"{EVENT.ID}",
"item_name":"{ITEM.NAME}",
"item_key":"{ITEM.KEY}",
"item_value":"{ITEM.VALUE}",
"host_ip":"{HOST.IP}",
"host_name":"{HOST.NAME}",
"trigger_hostgroup_name":"{TRIGGER.HOSTGROUP.NAME}"
}

配置完成后需点击更新操作生效。

报警媒介验证

在报警媒介列表中找到创建的媒介信息,点击测试操作以验证媒介可用。

创建用户媒介

媒体类型配置完成后,需要转到 用户 界面,将该webhook媒体类型分配给一个现有用户,或者使用create创建一个新用户来代表该webhook。

  • 进入 管理 - > 用户

    ZabbixAlertUserMedia

  • 打开用户属性窗口

  • 在媒介选项卡中,单击 Add

创建媒介动作

  • 进入 配置 - > 动作 -> 创建动作

    ZabbixAlertCreateAction

  • 配置操作和恢复操作,选择发送给用户,配置刚才为Webhook创建的用户,自定义主题和消息结构。

    ZabbixAlertActionTopic

ZabbixAlertActionMessage

  • 操作主题和消息配置参考

    主题:Problem: {EVENT.NAME}

    消息:

    {
    "date_time":"{DATE} {TIME}",
    "event_nseverity":"{EVENT.NSEVERITY}",
    "event_status":"{EVENT.STATUS}",
    "event_name":"{EVENT.NAME}",
    "event_value":"{EVENT.VALUE}",
    "event_id":"{EVENT.ID}",
    "item_name":"{ITEM.NAME}",
    "item_key":"{ITEM.KEY}",
    "item_value":"{ITEM.VALUE}",
    "host_ip":"{HOST.IP}",
    "host_name":"{HOST.NAME}",
    "trigger_hostgroup_name":"{TRIGGER.HOSTGROUP.NAME}"
    }
  • 恢复操作主题和消息配置参考

    主题:Resovled:{EVENT.NAME}

    消息:

    {
    "date_time":"{DATE} {TIME}",
    "event_nseverity":"{EVENT.NSEVERITY}",
    "event_status":"{EVENT.STATUS}",
    "event_name":"{EVENT.NAME}",
    "event_value":"{EVENT.VALUE}",
    "event_id":"{EVENT.ID}",
    "item_name":"{ITEM.NAME}",
    "item_key":"{ITEM.KEY}",
    "item_value":"{ITEM.VALUE}",
    "host_ip":"{HOST.IP}",
    "host_name":"{HOST.NAME}",
    "trigger_hostgroup_name":"{TRIGGER.HOSTGROUP.NAME}"
    }

报警媒介配置Zabbix官方文档

操作配置Zabbix官方文档

创建报警媒介(适用于Zabbix 4.4及以下版本)

下载Webhook执行脚本

bonree_alert_zabbix.sh

配置报警推送脚本

登录到zabbix机器查看zabbix_server.conf文件,找到AlertScriptsPath项,即为zabbix加载脚本的目录。

将下载的bonree_alert_zabbix.sh脚本放置到该目录下并执行命令变更脚本权限为可执行。

chmod +x bonree_alert_zabbix.sh

配置通知媒介

登录到zabbix平台添加脚本方式的报警媒介,请注意参数填写顺序,脚本执行日志的目录需要有读写权限。ZabbixAlertMedia4_4

配置用户脚本通知方式

创建新用户或为已存在的用户添加新的通知方式

ZabbixAlertUserMedia4_4

创建/更新已有Action

创建一个新的action,或者在已有action中配置用户,并选择脚本媒介方式通知

ZabbixAlertAction4_4

分别配置动作的操作、恢复操作消息模板。

ZabbixAlertActionMessage4_4

Zabbix配置验证验证

在Zabbix监测->问题中点击配置的动作中,点击查看。

配置接入流

  • ONE平台提供开箱即用的默认数据处理流。
  • 也可以根据所需监控场景的需要,手动配置数据流。

验证

  • 观测洞察 -> 事件中心 下查看对应的标准事件数据。