
指标监控可观测性告警运维【免费下载链接】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 官方仓库中的 OTRS CE 媒体类型模板templates/media/otrs_ce为核心完整讲解如何通过 Zabbix 的 Webhook 通知功能将告警事件自动转化为 ((OTRS)) Community Edition 工单覆盖 OTRS CE 端 Web 服务、客户与坐席配置、Zabbix 端媒体类型导入、参数调优以及底层脚本实现原理。读完本文你将能够独立完成两端配置实现告警自动建单、事件更新同步与问题恢复自动关单的闭环流程。集成概览与适用版本该媒体类型解决的核心问题是让 Zabbix 触发的问题problem、恢复resolve与更新update事件通过标准 HTTP REST 调用写入 ((OTRS)) Community Edition简称 OTRS CE的票务系统。整个链路不依赖第三方中间件仅使用 Zabbix 内置的Webhook 媒体类型能力。依据 README.md 与 media_otrs_ce.yaml 中的zabbix_export.version字段本模板的适用前提如下Zabbix 版本8.0 及以上媒体类型导出格式为version: 8.0类型为WEBHOOK((OTRS)) CE 版本6.x官方模板声明支持 OTRS CE version 6。模板目录包含三个关键文件配合使用即可完成两端配置文件作用media_otrs_ce.yamlZabbix 媒体类型导入文件内含全部 Webhook 参数、消息模板与执行脚本ZabbixTicketConnector.yml需导入 OTRS CE 的 Web 服务定义提供TicketCreate/TicketGet/TicketUpdate三个 REST 操作README.md官方配置指南本文的主体依据一、OTRS CE 端Web 服务与账号体系准备在 Zabbix 侧发起任何请求之前必须先在 OTRS CE 管理界面完成四项前置配置。完整截图流程见模板目录 images本节给出每一步的操作要点。1. 导入 Web 服务登录 OTRS CE 管理界面进入Admin → Web services点击导入并选择 ZabbixTicketConnector.yml。该文件定义了一个HTTP::REST类型的连接器Provider其关键配置如下取自文件中的Transport.Config.RouteOperationMappingTicketCreatePOST /Ticket—— 用于创建工单TicketGetGET /Ticket/:TicketID—— 用于按工单 ID 查询数据TicketUpdatePUT /Ticket/:TicketID—— 用于更新工单事件更新、关闭工单均走此接口。同时文件指定了FrameworkVersion: 6.0.27即 OTRS CE 6.0.x 框架版本。Debug 阈值默认error、TestMode: 0生产环境建议保持默认。2. 创建 Customer客户在Admin → Customers中新建客户。这是工单的归属客户实体对应 Webhook 参数otrs_customer中的邮箱地址所关联的客户记录。3. 创建 Customer User客户用户在Admin → Customer Users中新建客户用户必须选择上一步创建的客户 ID使邮箱账号与客户实体建立关联。Webhook 建单时会将otrs_customer参数作为CustomerUser写入工单。4. 创建 Agent坐席并配置队列权限在Admin → Agents中新建坐席Webhook 将使用该坐席的账号密码即otrs_auth_user/otrs_auth_password完成 REST 认证。关键步骤是根据工单将要落入的队列为包含该队列的组授予RW读写权限。例如使用官方示例中的Misc队列就必须为组users设置RW权限否则建单请求会被拒绝。二、Zabbix 端全局宏、媒体类型导入与参数配置OTRS 端就绪后回到 Zabbix 前端完成如下配置序列。1. 设置全局宏 {$ZABBIX.URL}Webhook 建单后会在工单正文中附带 Zabbix 告警详情链接该链接由全局宏{$ZABBIX.URL}决定。在Administration → Macros左上角下拉菜单中设置值应为 Zabbix 前端的 IP、FQDN 或 localhost协议必须写明端口可选按 Web 服务器部署方式可能需要在 URL 末尾追加/zabbix路径。官方给出的合法示例http://zabbix.com、https://zabbix.lan/zabbix、http://server.zabbix.lan/、http://localhost、http://127.0.0.1:8080非法示例zabbix.com缺协议、http://zabbix/缺主机名与合法路径。2. 导入媒体类型并填写必填参数在Alerts → Media types中导入 media_otrs_ce.yaml随后打开该OTRS CE媒体类型按下表配置核心 Webhook 参数均对应模板中parameters列表参数必填说明otrs_auth_user是OTRS CE 坐席用户名otrs_auth_password是OTRS CE 坐席密码otrs_customer是客户用户邮箱即上一步创建的 Customer Userotrs_queue是Webhook 建单所使用的工单队列otrs_url是OTRS CE 前端 URL如https://otrs.example.com/otrs3. 启用媒体类型并创建通知用户勾选Enabled复选框并点击Update保存。随后在Users → Users新建用户在Media页签添加媒体类型选择OTRS CE注意Send to字段虽然不被 Webhook 使用但出于前端校验要求不能留空填入任意字符即可。同时应确保该用户对需要产生告警的所有主机具备权限。4. 在 Action 中使用媒体类型完成上述步骤后即可在告警动作Action中选择该媒体类型作为操作介质实现告警 → 工单的自动流转。三、Webhook 参数全表可配置参数与内部参数模板中的所有参数均定义在 media_otrs_ce.yaml 的parameters段中分为两类。可配置参数按需修改参数默认值说明tls_verify{$HTTP.TLS.VERIFY:OTRS CE}HTTP 请求的 TLS 证书校验级别none禁用、peer校验证书链与有效期、full完整校验其他任意值视为full。可通过定义上下文为OTRS CE的全局宏覆盖如{$HTTP.TLS.VERIFY:OTRS CE}zabbix_url{$ZABBIX.URL}当前 Zabbix 前端 URLotrs_closed_state_id0关闭工单对应的 OTRS CE 状态 ID。0表示禁用自动关单0取 State Management 页面中的状态 IDotrs_auth_passwordPUT YOUR USER PASSWORD坐席密码otrs_auth_userPUT YOUR USER NAME坐席用户名otrs_customerPUT YOUR CUSTOMER EMAIL客户用户邮箱otrs_default_priority_id3默认优先级 ID脚本校验范围 1–5otrs_queuePUT YOUR QUEUE NAME工单队列otrs_ticket_typeUnclassified工单类型新装 OTRS CE 默认存在该类型otrs_ticket_statenew工单状态otrs_time_unit0工单时间单位写入 Article 的时间消耗otrs_urlPUT YOUR ((OTRS)) CE URLOTRS CE 前端 URL扩展映射参数按需新增不属于默认参数表优先级映射severity_name其中name可取not_classified、information、warning、average、high、disaster值为 OTRS CE 优先级 ID动态字段映射dynamicfield_OTRS CE 动态字段名动态字段仅支持text、textarea、checkbox、date四种类型。若定义了severity_*映射脚本会根据event_nseverity查找对应优先级未命中时回退到otrs_default_priority_id见脚本onCheckParams实现。内部参数保留给预定义宏不建议修改参数宏值说明event_source{EVENT.SOURCE}事件来源数值0 - Trigger、1 - Discovery、2 - Autoregistration、3 - Internal、4 - Serviceevent_value{EVENT.VALUE}触发动作的事件值1 为问题0 为恢复event_severity{EVENT.SEVERITY}事件严重级别名称event_nseverity{EVENT.NSEVERITY}事件严重级别数值0 - Not classified、1 - Information、2 - Warning、3 - Average、4 - High、5 - Disasterevent_update_nseverity{EVENT.UPDATE.NSEVERITY}事件更新严重级别数值取值同上event_update_severity{EVENT.UPDATE.SEVERITY}事件更新严重级别名称event_update_status{EVENT.UPDATE.STATUS}问题更新状态数值0 - 因问题/恢复事件调用 Webhook1 - 更新操作alert_subject{ALERT.SUBJECT}动作配置中的“默认标题”alert_message{ALERT.MESSAGE}动作配置中的“默认消息”event_id{EVENT.ID}触发动作的事件数字 IDtrigger_id{TRIGGER.ID}触发动作的触发器数字 IDotrs_ticket_id{EVENT.TAGS.__zbx_otrs_ticket_id}已创建的 OTRS CE 工单 ID用于后续更新/关闭提示每个 Webhook 媒体类型都支持 HTTP 代理。如需使用在媒体类型中新增名为http_proxy的参数并填入代理 URL 即可脚本会在run()中调用this.request.setProxy(this.httpProxy)生效。四、实现原理从事件到工单的脚本执行链路媒体类型文件内嵌的 Webhook 脚本media_otrs_ce.yaml 中script字段完整实现了事件分发、参数校验与 REST 调用逻辑理解它有助于排障与二次定制。事件分发模型脚本定义了CWebhook类其run()根据event_source决定处理分支来源为 Trigger0、Internal3、Service4时依据event_update_status与event_value组合出事件类型1时视为Update否则event_value 1走Problem0走Resolve来源为 Discovery1、Autoreg2时走无事件的onDiscovery/onAutoreg分支内部均调用onProblem建单逻辑。对应的处理回调为onProblem建单、onUpdate更新工单、onResolve关闭/更新工单。脚本通过handleEvent依次调用onSourceEvent、onEvent、onEvent三个回调首个返回非空结果的回调即被采用。建单与工单生命周期建单createTicketonProblem首先按需填充DynamicField日期型动态字段若匹配^\d{4}[.-]\d{2}[.-]\d{2}$会统一转为-分隔格式然后向otrs_url /nph-genericinterface.pl/Webservice/ZabbixTicketConnector/Ticket发起POST请求体携带Article标题、正文、时间单位、ContentType: text/plain; charsetutf8与Ticket标题、队列、类型、状态、优先级 ID、客户用户。成功响应中的TicketID会被写入结果标签__zbx_otrs_ticket_id同时生成__zbx_otrs_ticketlinkOTRS 前端AgentTicketZoom工单直达链接更新updateTicketonUpdate通过PUT /Ticket/:TicketID更新工单URL 中的TicketID取自otrs_ticket_id参数关闭onResolve仅当otrs_closed_state_id 0时onResolve会在Ticket中附加StateID字段并通过PUT更新工单实现恢复事件自动关单若该值为0则恢复事件只触发更新不关闭工单。标签、事件菜单与{$ZABBIX.URL}媒体类型声明了process_tags: YES与show_event_menu: YES事件菜单名称与 URL 分别引用{EVENT.TAGS.__zbx_otrs_ticket_id}与{EVENT.TAGS.__zbx_otrs_ticketlink}。这意味着建单成功后Zabbix 事件界面会直接呈现“OTRS CE: ticket # ”的可点击菜单项运维人员可从事件一键跳到 OTRS 工单。此外触发器事件event_source 0时createProblemURL会拼接出tr_events.php?triggerid...eventid...的告警详情链接追加到工单正文末尾。TLS 与参数校验CTlsConfig将tls_verify解析为SSLVerifyPeer/SSLVerifyHost选项启用校验非none时若目标 URL 不是https://脚本会直接抛错提示改用 HTTPS 或关闭校验。CParamValidator.validate则在onCheckParams中对alert_subject、alert_message、otrs_url、otrs_auth_user等参数做类型、URL 协议与取值范围如otrs_default_priority_id限制在 1–5 的整数的强制校验校验失败时输出明确错误信息便于在 Zabbix 调试日志中定位问题。五、消息模板与告警正文示例media_otrs_ce.yaml 的message_templates为各事件来源预置了可直接使用的标题与正文模板覆盖触发器问题/恢复/更新、发现、自动注册、内部事件与服务SLA事件。例如触发器问题模板正文包含事件时间、名称、主机、严重级别、操作数据、原始事件 ID 与触发器 URL服务事件模板则额外携带{SERVICE.ROOTCAUSE}根因信息。若对工单标题与正文有定制需求可在此基础上调整。六、常见问题与排障建议建单失败优先确认 OTRS 端坐席对目标队列所在组是否具有RW权限、otrs_auth_user/otrs_auth_password是否正确、otrs_customer对应的 Customer User 是否存在TLS 校验错误若 OTRS 前端为 HTTP 而tls_verify未设为none脚本会抛出“URL uses plain HTTP”的明确错误请按实际环境调整更新/关闭不生效确认事件标签__zbx_otrs_ticket_id已写入建单成功后才存在以及恢复事件的otrs_closed_state_id是否配置为大于 0 的状态 ID代理场景Webhook 与 OTRS 之间需经代理时在媒体类型中增加http_proxy参数日志定位脚本在 INFO 级别输出请求与响应摘要在 WARN/ERROR 级别输出失败原因可在 Zabbix 媒体类型测试与前端调试日志中查看。总结OTRS CE 媒体类型模板完整展示了 Zabbix Webhook 与 ITSM 工单系统对接的标准范式OTRS 端通过 REST Web 服务暴露 Ticket APIZabbix 端以事件驱动的 Webhook 脚本完成建单、更新、关闭与标签回填再通过事件菜单实现“告警—工单”双向跳转。按本文步骤完成两端配置后即可获得从监控告警到工单管理的全自动闭环若需扩展可依据脚本中的CWebhook、CParamValidator与CHttpRequest结构增加自定义字段、动态字段或额外 REST 操作。赞分享指标监控可观测性告警运维【免费下载链接】zabbixReal-time monitoring of IT components and services, such as networks, servers, VMs, applications and the cloud.项目地址https://gitcode.com/gh_mirrors/zabbix2/zabbix点击查看免费下载相关推荐Chat2DB 上手指南自然语言生成 SQL统一管理 16 数据库Chat2DB 上手指南自然语言生成 SQL统一管理 16 数据库 要写一条关联好几张表的复杂查询你得翻文档回忆语法每天在几套数据库之间来回切换每个指标监控可观测性告警运维快速下载电子课本3步拿到智慧教育平台教材 PDF快速下载电子课本3步拿到智慧教育平台教材 PDF 学期开始前的那个晚上你在国家中小学智慧教育平台上找齐了这学期要用的电子课本。在线翻页很顺眼可想存到本指标监控可观测性告警运维10 分钟配好 Continue 编码代理插件安装、Agent 生成测试实战与参数调优指南10 分钟配好 Continue 编码代理插件安装、Agent 生成测试实战与参数调优指南 Continue 是一个开源编码代理coding agent能指标监控可观测性告警运维上一篇XCOM2 Mod启动器(XCOM2 Launcher)配置文件权限问题分析下一篇Hydra 1.3 实例化对象实战指南用 hydra.utils.instantiate 从配置构建对象树创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考