尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Prometheus 监控 Zabbix 全栈实战:Zabbix Exporter 打通传统监控与云原生可观测性

Prometheus 监控 Zabbix 全栈实战:Zabbix Exporter 打通传统监控与云原生可观测性 Prometheus 监控 Zabbix 全栈实战Zabbix Exporter 打通传统监控与云原生可观测性Zabbix 作为老牌企业级监控平台承载着海量的历史主机、触发器、事件和性能数据。但在云原生时代运维团队往往需要将 Zabbix 收集的指标与 Prometheus 生态融合——统一可视化、统一告警。Zabbix Exporterprometheus-community/zabbix_exporter正是这座桥梁它通过 Zabbix API 抓取主机、触发器、事件、告警等对象状态转化为 Prometheus 标准指标让 Zabbix 中的监控资产也能无缝接入 Grafana 大屏和 Alertmanager 告警实现传统与云原生监控的统一可观测。1. 为什么需要 Zabbix Exporter统一指标汇聚将 Zabbix 中的主机状态、触发器严重性、事件数量等纳入 Prometheus避免多套监控孤岛。利用 Prometheus 生态强大的 PromQL、Grafana 仪表盘、Alertmanager 告警路由。过渡与共存在不抛弃已有 Zabbix 投资的前提下逐步迁移或混合架构。CMDB 关联通过 Zabbix 的主机标签将告警与业务系统关联。Zabbix Exporter 本质是一个代理周期性调用 Zabbix API将 Zabbix 对象主机、触发器、事件、问题映射为 Prometheus 指标。2. 配置 Zabbix 监控用户与权限在 Zabbix 前端创建专用的 API 用户例如prometheus分配最小权限登录 Zabbix Web →管理→用户→创建用户。设置用户名、密码用户类型选择用户。在权限标签中授予需要监控的主机组读取权限。可选为该用户创建 API Token自 Zabbix 5.4 起支持更安全。记录用户名、密码或 token以及 Zabbix API 地址如http://zabbix.example.com/zabbix/api_jsonrpc.php。3. 部署 zabbix_exporter3.1 Docker 部署推荐dockerrun-d\--namezabbix_exporter\-p9105:9105\-eZABBIX_URLhttp://zabbix.example.com/zabbix/api_jsonrpc.php\-eZABBIX_USERprometheus\-eZABBIX_PASSWORDpassword\prometheuscommunity/zabbix-exporter:latest若使用 API token设置ZABBIX_API_TOKEN环境变量即可无需用户名密码。3.2 二进制部署wgethttps://github.com/prometheus-community/zabbix_exporter/releases/download/v0.2.0/zabbix_exporter-0.2.0.linux-amd64.tar.gztarxzf zabbix_exporter-0.2.0.linux-amd64.tar.gz ./zabbix_exporter--zabbix.urlhttp://zabbix.example.com/zabbix/api_jsonrpc.php\--zabbix.userprometheus\--zabbix.passwordpassword\--web.listen-address:9105访问http://localhost:9105/metrics验证应看到zabbix_hosts_total、zabbix_triggers_total等指标。3.3 过滤主机组如果 Zabbix 实例庞大可用--zabbix.hostgroups参数限定拉取的主机组逗号分隔减少数据量和 API 负载。--zabbix.hostgroupsLinux servers,Network devices4. 配置 Prometheus 抓取scrape_configs:-job_name:zabbixscrape_interval:60s# Zabbix API 调用较慢间隔不宜太短static_configs:-targets:[zabbix-exporter:9105]labels:env:productionmonitoring_system:zabbix5. 核心监控指标与 PromQLzabbix_exporter 暴露的指标以zabbix_为前缀主要包含以下几类5.1 主机状态指标含义zabbix_hosts_total主机总数zabbix_host_available主机可用性0不可达, 1可达按主机标签zabbix_host_info主机元数据名称、IP、组等PromQL 示例不可达主机zabbix_host_available 0某主机组的在线主机数count(zabbix_host_available{hostgroupLinux servers} 1)5.2 触发器与事件指标含义zabbix_triggers_total触发器总数按严重性、状态、主机分组zabbix_trigger_problem_total处于 Problem 状态的触发器数zabbix_events_total事件总数按类型PromQL 示例严重问题触发器数量zabbix_trigger_problem_total{severitydisaster}告警级触发器趋势zabbix_trigger_problem_total{severity~high|disaster}5.3 告警Alerts与确认指标含义zabbix_alerts_total告警总数按状态problem, ok, acknowledgedzabbix_alerts_acknowledged_total已确认的告警数告警分析zabbix_alerts_total{stateproblem} - zabbix_alerts_acknowledged_total{stateproblem}得到未确认问题数。5.4 API 性能指标含义zabbix_api_requests_totalAPI 请求总数zabbix_api_request_duration_secondsAPI 请求延迟直方图用于监控 Exporter 自身与 Zabbix API 的通信状况。6. Grafana 仪表盘推荐Zabbix Exporter DashboardDashboard ID14996社区设计展示主机状态、触发器、事件、告警趋势完美适配zabbix_exporter指标。Zabbix OverviewID5365备选需微调指标名。自建“Zabbix 问题面板”使用 Stat Panel 显示当前 Problem 触发器数量Table 列出问题详情通过zabbix_triggers_total过滤。导入后选择数据源将变量hostgroup或instance绑定到 Zabbix 导出器。7. 告警规则实战groups:-name:zabbix_alertsrules:-alert:ZabbixExporterDownexpr:up{jobzabbix} 0for:2mlabels:severity:criticalannotations:summary:Zabbix Exporter 不可达无法获取 Zabbix 状态-alert:ZabbixHostUnavailableexpr:zabbix_host_available 0for:5mlabels:severity:criticalannotations:summary:Zabbix 主机 {{ $labels.host }} 不可达-alert:ZabbixDisasterTriggersexpr:zabbix_trigger_problem_total{severitydisaster}0labels:severity:criticalannotations:summary:存在灾难级触发器当前数量: {{ $value }}-alert:ZabbixHighProblemTriggersexpr:zabbix_trigger_problem_total{severityhigh}5for:10mlabels:severity:warningannotations:summary:高严重性触发器超过 5 个数量: {{ $value }}-alert:ZabbixUnacknowledgedProblemsexpr:(zabbix_alerts_total{stateproblem}-zabbix_alerts_acknowledged_total{stateproblem})10for:15mlabels:severity:warningannotations:summary:未确认的 Zabbix 告警超过 10 条8. 进阶多 Zabbix 实例、安全与性能优化8.1 监控多个 Zabbix 实例可为每个 Zabbix 服务器部署独立的 exporter 容器在 Prometheus 中配置多个 target用instance标签区分。也可通过环境变量动态传入不同 Zabbix URL。8.2 使用 API Token 提升安全性Zabbix 5.4 支持 API Token避免明文密码。在 Zabbix 用户设置中生成 Token然后设置ZABBIX_API_TOKEN不设置用户名密码即可。8.3 降低 API 负载使用--zabbix.hostgroups过滤关注的主机组避免全量拉取。适当增加scrape_interval建议 ≥60s减少 API 调用频率。注意 Zabbix 服务器 API 性能若 Exporter 导致负载可启用 Zabbix 缓存或增加 Exporter 间隔。8.4 集成告警确认Zabbix Exporter 暴露了确认状态可在 Prometheus 中设置告警当重要问题长时间未确认时通知运维。也可以反向操作通过 Alertmanager webhook 将 Prometheus 告警确认写回 Zabbix需自定义集成。9. 总结通过 Zabbix Exporter你无需立刻抛弃 Zabbix即可将其主机、触发器、事件等核心监控数据融入 Prometheus 生态。统一的 Grafana 大屏、统一的 Alertmanager 告警让传统监控与云原生监控和谐共存。这不仅是技术上的桥梁更是团队从传统运维走向现代化可观测性的一大步。部署它让 Zabbix 不再是孤岛而是混合监控拼图中坚实的一块。
返回列表