ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Zabbix 集成 IBM Maximo Service Request:Webhook 媒体类型配置实战指南

Zabbix 集成 IBM Maximo Service Request:Webhook 媒体类型配置实战指南 指标监控可观测性告警运维【免费下载链接】zabbixReal-time monitoring of IT components and services, such as networks, servers, VMs, applications and the cloud.项目地址https://gitcode.com/gh_mirrors/zabbix2/zabbix点击查看免费下载导读本文以 Zabbix 官方模板库中的IBM Maximo Service Request Webhook 媒体类型为线索完整讲解如何将 Zabbix 告警事件问题/恢复/更新自动转化为 IBM Maximo 服务请求Service Request即工单。读完本文你将掌握webhook 媒体类型的 14 个可配置/内置参数的含义与取值、IBM Maximo 侧的前置准备、Zabbix 中从导入 YAML 到用户/媒介/动作的完整配置链路以及隐藏在 media_maximo_service_request.yaml 中的脚本级实现原理优先级映射、OSLC/REST 双格式、TLS 校验与代理支持。概述这个媒体类型做什么IBM Maximo 是 IBM 的企业资产管理EAM套件其 Service Request 模块用于受理服务请求/工单。Zabbix 通过webhook 媒体类型一种由 Zabbix 内置 JavaScript 引擎执行脚本、再通过 HTTP 调用外部 API 的告警通道与 Maximo 集成。依据仓库中的 README.md该媒体类型支持以下能力服务请求创建Service request creation告警触发时向 Maximo 创建一张 SR 工单自定义上报优先级Custom reported priority可用自定义优先级替换 Zabbix 事件严重级别自定义资产编号Custom asset number可携带库存资产标签作为工单的 assetnum自定义分类 IDCustom classification IDs通过class_structure_id指定工单归属的分类结构。版本要求Zabbix 8.0 及以上README 明确说明 Zabbix version: 8.0 and higher。YAML 导出的version: 8.0字段media_maximo_service_request.yaml与之对应。从源码结构看webhook 类媒体类型在 Zabbix 服务端由告警管理器统一调度MEDIA_TYPE_WEBHOOK分支会调用zbx_am_update_webhook()将脚本编译为字节码缓存src/libs/zbxalerter/alert_manager.calerter 进程收到消息后调用zbx_es_execute()交由嵌入式 JS 引擎执行src/libs/zbxalerter/alerter.c。因此下面要导入的 YAML 中那段 JavaScript 脚本就是 webhook 的真正大脑。参数总览可配置参数与内置参数导入 webhook 后所有参数会以媒体类型参数形式出现在界面中。它们分为两类可配置参数按部署环境修改与内置参数预留给系统宏不建议改动。可配置参数名称默认值/示例说明tls_verify{$HTTP.TLS.VERIFY:IBM Maximo Service Request}HTTP 请求的 TLS 证书校验none- 禁用校验peer- 校验证书链与有效期full- 完整校验链、有效期、主机名。其他任何值都按完整校验处理。可通过带上下文 IBM Maximo Service Request 的全局宏覆盖该媒体类型的设置。api_endpointENTER YOUR API ENDPOINTIBM Maximo 的 API 端点地址必填。api_keyENTER YOUR API KEY访问 IBM Maximo 所用的 API Key必填。reported_priority空自定义上报优先级。留空则使用 Zabbix 事件严重级别。use_oslc_formattruetrue使用 OSLC API 格式false使用 REST API 格式。默认true。内置参数内置参数由宏展开供脚本内部读取用于构建请求体与选择处理逻辑名称宏值说明event_source{EVENT.SOURCE}事件来源数值0 - Trigger1 - Discovery2 - Autoregistration3 - Internal4 - Service。event_value{EVENT.VALUE}触发动作的事件数值1 为问题0 为恢复。event_nseverity{EVENT.NSEVERITY}事件严重级别数值0 - Not classified1 - Information2 - Warning3 - Average4 - High5 - Disaster。event_severity{EVENT.SEVERITY}事件严重级别名称。event_update_nseverity{EVENT.UPDATE.NSEVERITY}事件更新严重级别数值取值同上。event_update_severity{EVENT.UPDATE.SEVERITY}事件更新严重级别名称。event_update_status{EVENT.UPDATE.STATUS}问题更新状态数值0 - 因问题/恢复事件调用 webhook1 - 更新操作。event_name{EVENT.NAME}触发动作的问题事件名称。class_structure_id{ALERT.SENDTO}服务请求创建归属的分类 ID数值型——即用户在媒介的Send to字段填写的值。asset_number{INVENTORY.ASSET.TAG}库存资产标签。代理支持README 特别提示每个 webhook 都支持 HTTP 代理。如需使用请新增一个名为http_proxy的媒体类型参数值设为代理 URL。脚本的run()方法中this.request.setProxy(this.httpProxy)正是为消费该参数media_maximo_service_request.yaml。IBM Maximo 侧的服务准备Service setup在开始 Zabbix 配置前需在 IBM Maximo 中完成三项准备README 原文步骤在Administration Work Center的Integration选项卡下创建 API Key在Security Groups / Object Structures中为MXAPISR数据集授予权限在Integration External Systems和Enterprise Services中配置端点。这些准备决定了api_key、api_endpoint参数的可用性脚本通过apikey请求头携带 API Key并向api_endpoint发起POST请求见下文实现剖析。Zabbix 配置从导入媒体类型到发送工单1. 导入媒体类型在Alerts Media types页面导入media_maximo_service_request.yaml文件README 原文指引。导入后即可看到名为IBM Maximo Service Request的 webhook 类型媒体。2. 设置 webhook 参数打开导入的媒体类型配置以下参数api_endpoint—— IBM Maximo Service Request 端点的地址api_key—— 访问 API 的密钥reported_priority—— 可选。创建服务请求时使用的上报优先级留空则使用 Zabbix 的事件严重级别use_oslc_format—— 可选布尔值。true使用 OSLC APIfalse使用 REST API默认true。3. 启用并保存勾选Enabled复选框启用媒体类型点击Update保存设置。4. 创建 Zabbix 用户并添加媒介进入Users Users点击右上角Create user在User选项卡中填写所有必填字段红色星号标记确保该用户对所有需要向 IBM Maximo Service Request 发送问题通知的主机都有访问权限在Media选项卡点击Add从Type下拉列表中选择IBM Maximo Service Request在Send to字段填写classstructureid—— 即创建服务请求所用的分类 ID。该值会经{ALERT.SENDTO}宏注入class_structure_id参数。提示Send to填写的分类 ID 对应 media_maximo_service_request.yaml 中class_structure_id参数的宏值{ALERT.SENDTO}它是每次发送时唯一随告警变化的地址字段。5. 接入动作配置完成后即可在动作Actions中使用该媒体类型发送通知——问题、恢复、更新三类事件都会按你配置的操作条件触发工单创建。源码级实现剖析工单是如何生成的导入文件中的 JavaScript 脚本完整定义了 webhook 行为media_maximo_service_request.yaml。理解它有助于排查工单没建出来类问题。参数校验与事件分流CWebhook构造函数首先校验事件语义event_source必须在 0-4 之间Trigger/Internal/Service 来源0/3/4下event_value必须为 0 或 1更新时event_update_status必须为 0 或 1L77-L101。run()方法随后按事件来源分流处理L131-L145Trigger0、Internal3、Service4来源根据event_update_status 1判为Update否则按event_value判为Problem / ResolveDiscovery1、Autoreg2来源无事件语义走handleEventless其余来源抛出Unexpected event_source异常。对于 Service 来源4当更新严重级别不同于原严重级别时脚本会用更新值覆盖event_nseverity/event_severity并把event_update_status置为1L94-L100。请求体构建优先级映射与 OSLC/REST 双格式onCheckParamsL463-L497完成三件事参数校验api_endpoint、api_key必须是非空字符串class_structure_id必须是整数use_oslc_format按布尔规则解析。优先级映射内部定义了一张从 Zabbix 严重级别到 Maximo 上报优先级的映射表var severityMap { 0: 5, // Not classified - 5 1: 4, // Information - 4 2: 4, // Warning - 4 3: 3, // Average - 3 4: 2, // High - 2 5: 1 // Disaster - 1 };当reported_priority为空时使用severityMap[event_nseverity]否则使用用户自定义值var priority this.params.reported_priority ? severityMap[this.params.event_nseverity] : this.params.reported_priority;负载构建核心载荷包含三个字段其中description_longdescription取问题事件名称classstructureid取分类 IDreportedpriority取上述优先级若asset_number非空则追加assetnum字段。随后按use_oslc_format决定封装格式var payload { classstructureid: this.params.class_structure_id, description_longdescription: this.params.event_name, reportedpriority: priority }; if (this.params.asset_number this.params.asset_number ! ) { payload.assetnum this.params.asset_number; }; this.params.body this.params.use_oslc_format ? { MXSRSet: [payload] } : payload;即 OSLC 格式时请求体为{MXSRSet: [payload]}数组封装REST 格式时为裸 payload。发送与结果校验onEventL499-L529执行实际发送添加apikey请求头向api_endpoint发起POST请求体为 JSON用getStatus()检查 HTTP 状态码非 2xx 直接返回HTTP code: status解析响应后优先从response.MXSRSet[0]提取工单对象必须同时存在ticketid与ticketuid字段否则抛出Response missing required fields (ticketid or ticketuid)异常成功时返回Service Request created. ticketuid: ticketuid, ticketid: ticketid这段文字会作为告警的发送结果写入 Zabbix 告警记录便于排查。TLS 校验与代理CTlsConfigL48-L70解析tls_verifynone禁用校验peer校验对端证书链SSLVerifyPeertruefull额外校验主机名SSLVerifyHosttrue非法值一律回退为full。若启用了校验但 URL 不是https://checkURL会抛出异常提示改用 https 或把{$HTTP.TLS.VERIFY}设为none。CHttpRequestL371-L457封装了 Zabbix 内建的HttpRequest对象支持 get/post/put/patch/delete 等方法并统一处理 JSON 序列化与响应解析。代理http_proxy参数在run()开头被应用this.request.setProxy(this.httpProxy)配置方法见上文参数总览中的提示。内建消息模板YAML 末尾定义了多组消息模板L570-L668覆盖 TRIGGERS问题/恢复/更新、DISCOVERY、AUTOREGISTRATION、INTERNAL问题/恢复、SERVICE问题/恢复/更新等事件场景主题与正文默认使用{EVENT.NAME}、{HOST.NAME}、{EVENT.SEVERITY}、{EVENT.UPDATE.MESSAGE}等宏。虽然 webhook 脚本最终使用event_name等参数构造工单内容但这些模板为管理员提供了可读的告警记录与排障参考。故障排查要点工单未创建检查 Zabbix 侧告警记录中的发送结果。若为HTTP code: xxx说明 Maximo 端点返回了非 2xx优先核对api_key与api_endpoint若为Response missing required fields说明 API 调用成功但响应不符合脚本预期需核对 MXAPISR 数据集权限与端点配置。TLS 相关报错若启用了 TLS 校验但端点不是https://脚本会直接抛出异常请确认端点协议与tls_verify设置匹配。参数校验失败class_structure_id必须为整数它来自{ALERT.SENDTO}即用户在Send to填写的分类 IDapi_endpoint/api_key不能为空字符串。宏未解析内置参数依赖宏展开若媒介的Send to留空{ALERT.SENDTO}无法提供有效分类 ID参数校验会失败。相关资源媒体类型定义与完整脚本media_maximo_service_request.yaml官方集成说明README.mdwebhook 脚本调度与执行实现src/libs/zbxalerter/alert_manager.c、src/libs/zbxalerter/alerter.c嵌入式 JavaScript 引擎执行入口src/libs/zbxembed/embed.c如需报告媒体类型相关问题可参照 README 中的反馈渠道说明并在提交时附上告警发送结果日志以加快定位。赞分享指标监控可观测性告警运维【免费下载链接】zabbixReal-time monitoring of IT components and services, such as networks, servers, VMs, applications and the cloud.项目地址https://gitcode.com/gh_mirrors/zabbix2/zabbix点击查看免费下载相关推荐一张 50 美元只能换一片肉干Cataclysm-DDA 灾变后定价price_postapoc实战手册一张 50 美元只能换一片肉干Cataclysm DDA 灾变后定价price_postapoc实战手册 在 Cataclysm DDA简称 CDDA指标监控可观测性告警运维OneUptime 与 Zabbix 集成实战用 Webhook 媒体类型 Workflow 自动把监控告警变成事件OneUptime 与 Zabbix 集成实战用 Webhook 媒体类型 Workflow 自动把监控告警变成事件 Zabbix 负责持续监控你的服务器可观测性后端运维前端云原生微服务AI AgentOneUptime 与 Zabbix 集成实战用 Webhook 媒体类型 Workflow 把监控告警自动转成事件OneUptime 与 Zabbix 集成实战用 Webhook 媒体类型 Workflow 把监控告警自动转成事件 Zabbix 负责监视服务器与网络可观测性后端运维前端云原生微服务AI Agent上一篇civitai 迁移实战以 civitai/db-queries 为单一数据访问层的 Kysely 落地计划下一篇frontend-slides Sakura Chroma 设计系统解析用复古磁带目录美学构建 1920×1080 固定舞台幻灯片的完整实现指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表