夜莺-Nightingale
夜莺V6
项目介绍 架构介绍
快速开始 快速开始
黄埔营
安装部署 安装部署
升级
采集器 采集器
使用手册 使用手册
API API
数据库表结构 数据库表结构
FAQ FAQ
开源生态
Prometheus
版权声明
第1章:天降奇兵 第1章:天降奇兵
第2章:探索PromQL 第2章:探索PromQL
第3章:Prometheus告警处理 第3章:Prometheus告警处理
第4章:Exporter详解 第4章:Exporter详解
第5章:数据与可视化 第5章:数据与可视化
第6章:集群与高可用 第6章:集群与高可用
第7章:Prometheus服务发现 第7章:Prometheus服务发现
第8章:监控Kubernetes 第8章:监控Kubernetes
第9章:Prometheus Operator 第9章:Prometheus Operator
参考资料

Zabbix 插件

简介

Zabbix 插件用于将 Zabbix 中的监控数据转换为Prometheus格式的指标,进而转发给后端存储。该插件支持两种数据获取方式:从Zabbix文件导出功能读取历史数据文件,或者通过HTTP接收Zabbix实时流式数据。企业版 Categraf v0.4.10开始支持此功能,开源版不支持此插件

Zabbix 导出数据方式

Zabbix支持两种导出数据的方式,插件均可支持处理:

  • 导出数据到外部系统 从Zabbix 7.0开始支持,通过HTTP将数据流式传输到Categraf 如何配置
  • 导出数据到文件 从Zabbix 4.0开始支持,将数据保存到NDJSON格式文件中供Categraf读取 如何配置

采集配置

[[instances]]
## 同一个instance下,只能endpoint 和 data_dir 二选一
## endpoint 是categraf启动的监听地址,用于接收zabbix发送的数据
# endpoint=":1234"
## data_dir 是zabbix导出的数据目录,必须让categraf有可读权限
data_dir="/home/flashcat/zabbix/data"
## 给转换后的指标添加一个自定义前缀
#prefix="zabbix"

配置zabbix api连接

插件需要通过Zabbix API获取item详细信息以正确解析监控数据。需要提供能够访问item.get接口的Zabbix api token。

企业版v0.4.10/v0.4.11 版本仅支持用户名密码方式获取item数据, 最佳实践更推荐使用api token方式,请使用v0.4.12及以上版本。创建api token请参照文档

[instances.zabbix]
## zabbix的访问地址 可以带具体路径,也可以只是IP端口
server="http://192.168.10.222"
## zabbix的版本,目前支持6.x和7.x, 其他版本未验证
version="7.2"
## zabbix的api token
api_token="xxxx"
##  zabbix的指标名(item.name字段) 是否作为label 
##  如果设置为true , 会添加一个标签 description=${item.name}
#name_as_tag=true

指标映射配置

插件使用 items 配置来定义如何解析和转换Zabbix指标。可以在 input 或 instances 级别定义 items 配置。

[[items]]
## item.key 以什么格式接收数据 必选项
## 参考item types说明文档 https://www.zabbix.com/documentation/7.2/en/manual/config/items/itemtypes/zabbix_agent
key = "system.cpu.util[<cpu>,<type>,<mode>,<logical or physical>]"
## 指定模板中的参数默认值,如果数据中不提供这些参数,则使用默认值
default_value = {cpu = "all", type = "user", mode = "avg1", logical_or_physical = "logical"}
## 定义这个指标的名字(可选),如不指定则自动从key名和参数生成,最终指标名字中的 . 会替换为 _ 
## 通常都不需要指定这个值
## 自动拼接可以参考自定义指标转换示例部分
metric_name = "system_cpu_utilization"

自定义指标转换示例

[[items]]
key = "zabbix[stats,<ip>,<port>,queue,<from>,<to>]"
default_value = {ip = "127.0.0.1", port = "10051", from = "6s"}
# 自动生成的指标名为zabbix_stats_queue,  中括号之前的内容+常量参数拼接
# metric_name = ""


[[items]]
key = "system.cpu.load[<cpu>,<mode>]"
default_value = {cpu = "all", mode = "avg1"}
## 自动生成的指标名为system_cpu_load
# metric_name = ""


[[items]]
key = "vm.memory.size[<mode>]"
default_value = {mode = "pused"}

# 自动生成的指标名为vm_memory_size
# metric_name = ""

工作原理

  1. 数据文件监控模式
  • 插件会定期扫描指定目录下的.ndjson文件
  • 当发现新文件或文件内容变化时,读取新增内容并解析
  • 文件处理遵循增量读取原则,记录上次读取位置
  • 默认情况下,10分钟无变化的文件会被视为不活跃
  1. HTTP接收器模式
  • 插件启动HTTP服务器监听指定端口
  • 接收Zabbix发送的实时数据
  • 接口路径为${endpoint}/v1/zabbix/history
  1. 指标转换逻辑
  • 根据Item的key和参数解析原始数据
  • 提取宿主机、组、标签等信息作为Prometheus标签
  • 数字类型的值直接转换为指标值
  • 对于JSON格式的文本值,会尝试提取嵌套的数值数据

一份完整配置

  # input级别的Item配置
  [[items]]
  key = "system.cpu.util[<cpu>,<type>,<mode>]"
  default_value = {cpu = "all", type = "user", mode = "avg1"}

  # 实例配置
  [[instances]]
  # 如果使用HTTP接收模式
  endpoint = ":9109"
  # prefix = "zabbix"

  [instances.zabbix]
  server = "http://zabbix-server.example.com"
  version = "7.2"
  api_token="xxxx"
  # name_as_tag = true

  # instances级别的Item配置,会覆盖input相同key配置
  [[instances.items]]
  key = "vfs.fs.size[<fs>,<mode>]"
  default_value = {}

Zabbix 配置指南

导出数据到文件

zabbix_server.conf中配置

ExportDir=/path/to/export/directory
ExportFileSize=1G  # 可选:设置最大文件大小
ExportType=history # 导出类型

使用环境变量

ZBX_EXPORTDIR=/path/to/export/directory/
ZBX_EXPORTFILESIZE=1G
ZBX_EXPORTTYPE=history

导出数据到http receiver

zabbix_server.conf中配置

StartConnectors=5

使用环境变量

ZBX_STARTCONNECTORS=5

在Zabbix前端配置Connector (Administration → General → Connectors)

  • 数据类型:选择"Item values"
  • URL:指向Categraf的endpoint+"/v1/history",如http://categraf:1234/v1/history
  • 设置标签过滤器(可选)

参考文档

  1. Export to files
  2. Streaming to external system
  3. Newline-delimited JSON export protocol
  4. Zabbix agent item types
  5. Item key format
  6. Linux template documentation
  7. Zabbix API Tokens

故障排查

  • 查看日志是否有API调用错误
  • 确认Zabbix版本
  • 确认Zabbix导出功能已正确配置
  • 确保Zabbix API连接配置正确
  • 检查API Token权限是否足够
  • 检查文件路径或HTTP endpoint配置
  • 验证文件权限或网络连接
快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat