跳转至

Zabbix 集成

Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构。可用于监视各种网络服务、服务器和网络机器等状态。 Zabbix 使用 MySQL、PostgreSQL、SQLite、Oracle 或 IBM DB2 储存资料。


zabbix 集成 CA 步骤

默认探针方式

  1. 创建应用

Cloud Alert界面创建 zabbix 应用,并获取 appkey

  1. 在 zabbix server 端安装 CA 探针

    1. 切换到 zabbix 脚本目录:

      cd /usr/local/zabbix-server/share/zabbix/alertscripts
      
      <small>补充:查看zabbix脚本目录方法:
      vi /etc/zabbix/zabbix_server.conf
      查看AlertScriptsPath
      
    2. 获取睿象云 Cloud Alert agent 包:

      wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-4.0.0.tar.gz
      
    3. 解压、安装。

      tar -xzf ca_zabbix_release-4.0.0.tar.gz
      cd cloudalert/bin
      bash install.sh --   --处填入您新建应用时生成的appkey         ```
      
      !!! note "安装说明"
      
          1. 在安装过程中根据安装提示,输入zabbix管理/监控/web登陆地址、管理员用户名、密码。
          2. zabbix管理地址正确示例:http://zabbix.server.com/zabbix或者https://XXX
          3. 安装时必须使用bash命令。
      
    4. 当提示"安装成功"时表示安装成功!

      产生新的 zabbix 告警(problem),动作状态为“已送达”表示集成成功。

      安装说明

      集成成功后不需要启动服务,可直接使用。

    5. 排查启动 zabbix 服务权限和安装探针权限是否一致,若不一致请将探针权限修改成和启动 zabbix 服务权限一致

      ps -aux|grep zabbix     查看zabbix启动服务权限
      chown zabbix:zabbix cloudalert -R       探针权限改成zabbix的
      

CA 探针安装报错说明

1. Zabbix 管理地址输入错误

错误提示:

The Zabbix management address you entered is incorrect!!!Check please...

解决办法:正确输入 Zabbix 管理地址(正确示例:http://主机域名:端口/zabbix)

2. zabbix 用户名、密码错误

错误提示:

Auth Failed,Please check the user and password!!!`

解决办法:正确输入 Zabbix 管理员账号、密码,确认可用通过该账户正确登录 zabbix

3. 媒体类型(Media Type)已经存在

错误提示:

create media type failed! error message:{"jsonrpc":"2.0","error":{"code":-32602,"message":"Invalid params.","data":"Media type \"cloudalert media\" already exists."},"id":1}

解决办法:登陆 Zabbix 管理控制台,删除媒体类型“cloudalert media”

4. 用户组(User Group)已经存在

错误提示:

create user group failed! error message:{"jsonrpc":"2.0","error":{"code":-32602,"message":"Invalid params.","data":"User group \"cloudalert group\" already exists."},"id":1}

解决办法:登陆 Zabbix 管理控制台,删除用户组“cloudalert group”

5. 用户(User)已经存在

错误提示:

create user failed! error message:{"jsonrpc":"2.0","error":{"code":-32602,"message":"Invalid params.","data":"User \"cloudalert\" already exists."},"id":1}

解决办法:登陆 Zabbix 管理控制台,删除用户“cloudalert”

6. 动作(Action)已经存在

错误提示:

create action failed! error message:{"jsonrpc":"2.0","error":{"code":-32602,"message":"Invalid params.","data":"Action \"cloudalert action\" already exists."},"id":1}

解决办法:登陆 Zabbix 管理控制台,删除动作“cloudalert action”


ZABBIX 集成常见问题

  1. 当 zabbix 服务所在机器无外网 IP 时,需要在脚本中增加代理配置

  2. 当 zabbix 集成时 appkey 未填写或填写错误时,请在如下两个位置修改 appkey


CA 探针安装后测试告警方法

测试原理: 在 zabbix 管理平台中手动关闭掉已产生的告警,使 zabbix 重新产生告警,从而触发动作(action)并将告警发送到 Cloud Alert。

  1. 登录 zabbix 进入问题列表:监测中(Monitoring)->问题(Problems)。

  2. 选中告警->【整批确认】(Bulk acknowledge)

  3. 勾选【关闭问题】(Close problem)->【确认】(Acknowledge)

    提示

    当【关闭问题】无法勾选时,需要修改触发器-允许手动关闭

  4. 当 zabbix 重新生成告警时,查看动作是否触发成功。状态是“已送到”表示集成成功

  5. 登录 Cloud Alert,查看告警。


集成后收不到告警排错方法

排查步骤:

  1. 进入 zabbix 管控台,监测中 -> 问题 勾选任意告警然后选择下方的 整批确认 按钮,触发 zabbix 确认告警(problem),动作状态为 已送达

如动作状态为 已失败,提示信息如下:

解决方案:alert.sh 脚本放到 /usr/local/zabbix/alertscripts/cloudalert/bin 即可。

  1. 查看探针日志

进入 zabbix 探针日志目录 (/usr/local/zabbix-server/share/zabbix/alertscripts/cloudalert/logs),查看探针日志(命令 :tail -f cloudalert.log

如日志没有告警记录,请确认启动 zabbix 服务权限和安装探针权限是否一致,权限不一致会导致告警日志无法正常写入。

  1. 确认探针日志

有两种异常情况:

告警参数

[ZabbixActionParams] zabbix 告警参数是不是正常

正常示例:

2018-02-02 13:02:34 INFO [ZabbixActionParams]: {'app':'bb23435e-0669-92de-c864-e75023476970','eventId':'ci3-13608','eventType':'trigger','alarmName':'Com_selectentityName:ci3','entityId':'ci3-13608','alarmContent':'ci3 MySQL select operations per second:493.85 qps','priority':'5','host':'ci3','tag':[{'hostgroups':['Test']}],'agentVersion':'1120','service':'MySQL select operations per second','ip':'10.251.23.168','itemName':'MySQL select operations per second','itemValue':'493.85 qps'}

告警转发状态为 failed

[ItsmAlertResponse] 告警转发状态是不是成功(result 为success为成功,failed表示失败)

正常示例:

2018-02-02 13:02:35 INFO [ItsmAlertResponse]: {"result":"success","message":"receive event success","data":0,"totalCount": 0,"code":"0"}

如果告警转发状态为 success,表示 zabbix 探针集成成功,可以登录 Cloud Alert 查看告警,设置分派通知策略。

补充

(1)告警转发状态为 failed,请联系 CA 客服人员

(2)告警转发状态为 success,任然接受不到告警请联系 CA 客服人员


webhook 配置方式

(与探针方式 2 选 1,不可同时使用)

  1. 创建应用

Cloud Alert界面创建 zabbix 应用,并获取 appkey

  1. 进入 管理 -> 报警媒介类型 -> 创建报警媒介类型

  1. 添加参数
名称
app 填写 appkey 值
URL 填写 WebHook 地址,http://api.aiops.com/alert/api/event/zabbix/v3/
alarmContent {HOST.HOST}{ITEM.NAME}:{ITEM.VALUE}{TRIGGER.NAME}
alarmName {TRIGGER.NAME}
entityId {HOST.HOST}-{TRIGGER.ID}
eventId {HOST.HOST}-{TRIGGER.ID}
entityName {HOSTNAME}
eventType {TRIGGER.STATUS}
host {HOST.HOST}
ip {HOST.IP}
itemName {ITEM.NAME}
itemValue {ITEM.VALUE}
Message {ALERT.MESSAGE}
priority {TRIGGER.NSEVERITY}
service {ITEM.NAME}
tag [{'hostgroups': ['{TRIGGER.HOSTGROUP.NAME}']}]
To {ALERT.SENDTO}
  1. 添加脚本内容(内容默认,直接添加即可)

脚本内容

           var Ca = {
           params: {},
           proxy: null,
           setParams: function (params) {
             if (typeof params !== 'object') {
             return;
             }
             Ca.params = params;
           },
           request: function () {
           var data = {
             app: Ca.params.app,
             Message: Ca.params.Message,
             To: Ca.params.To,
             eventId: Ca.params.eventId,
             eventType: Ca.params.eventType,
             alarmName: Ca.params.alarmName,
             entityId: Ca.params.entityId,
             alarmContent: Ca.params.alarmContent,
             priority: Ca.params.priority,
             host: Ca.params.host,
             tag: Ca.params.tag,
             ip: Ca.params.ip,
             itemName: Ca.params.itemName,
             itemValue: Ca.params.itemValue,
             entityName: Ca.params.entityName,

             service: Ca.params.service,

           },
           response,
           url = Ca.params.URL,
           request = new CurlHttpRequest();

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

           if (typeof data !== 'undefined') {
             data = JSON.stringify(data);
           }
           response = request.Post(url, data);

           if (response !== null) {
             try {
               response = JSON.parse(response);
             }
               catch (error) {
               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') {
             }
             else {
               throw 'Missing parameter. URL, message, to parameter is required'
             }
             if (params.HTTPProxy) {
               Ca.proxy = params.HTTPProxy;
             }
             Ca.setParams(params);
             Ca.request();
             return 'OK';
           }catch (error) {
             throw 'Sending failed: ' + error;
           }

注意 zabbix5.0 版本以上,在创建报警类型时还需要添加两个 Message templates 类型分别为问题、Problem recovery

  1. 进入 配置-> 动作 -> 创建动作

a. 添加操作(内容默认直接添加即可)

b. 添加恢复操作(内容默认直接添加即可)

注意 5.0 以上版本,需要用户勾选 custom message 并自定义主题和消息内容

  1. 进入 管理 -> 用户 -> 点击 Admin 用户

注意:若已经安装过 CloudAlertzabbix 探针,需要进入配置——>动作 将 Cloud Alert Action 禁用

zabbix 与 CA 告警级别映射关系

睿象云 zabbix(TRIGGER.NSEVERITY)
致命 5
严重 4
警告 2,3
提醒 1
通知 0

zabbix有两种级别取值方式,睿象云采用的是 TRIGGER.NSEVERITY 字段

TRIGGER.NSEVERITYTRIGGER.SEVERITY 对应关系如下

zabbix(TRIGGER.NSEVERITY) zabbix(TRIGGER.SEVERITY)
0 Not classified
1 Information
2 Warning
3 Average
4 High
5 Disaster
睿象云 Zabbix
事件ID (eventId) eventId

以上是Zabbix 告警设置中集成的步骤。