Zabbix 数据对接观测云最佳实践
简介
Zabbix 是一款开源的监控工具,它能够监控网络和应用程序的健康状态。Zabbix 支持多种协议,包括 SNMP、IPMI、JMX、Telnet 等,能够监控服务器、交换机、路由器、虚拟机等多种设备和服务。
实时导出功能
Zabbix 提供了实时导出功能,允许用户将触发器事件、监控项采集值和趋势数据实时导出。这些数据以换行符分隔的 JSON 格式导出,确保了数据的及时性和机器可读性。
配置和使用
要启用实时导出,需要修改 Zabbix 的配置文件,通常位于 /etc/zabbix/zabbix_server.conf
。配置项包括:
ExportDir
:设置实时导出数据的目录。ExportFileSize
:设置每个导出文件的最大字节数。ExportType
:通过逗号分隔的列表,控制导出实体的类型,如事件(events)、历史(history)、趋势(trends)。
与 Zabbix API 对比
Zabbix Real-time export | Zabbix API | |
---|---|---|
实时性 | 数据实时写入文件,几乎无延迟 | 需要定期调用API获取数据,存在一定延迟 |
资源消耗 | 由Zabbix服务器直接写入文件,对服务器资源消耗较低 | API调用可能增加服务器负载,尤其是在高频率调用时 |
数据完整性 | 所有数据实时导出,完整性高 | 可能需要编写额外逻辑来确保数据的完整性,如处理分页、数据遗漏等 |
操作复杂度 | 配置简单,一旦设置,无需额外操作 | 需要编写脚本或程序来定期调用API,处理数据,操作复杂度较高 |
数据格式 | 数据以换行符分隔的JSON格式导出,易于机器读取和处理 | 数据格式可能需要额外处理才能用于分析 |
数据安全性 | 数据直接写入本地文件,无需开放网络接口 | API调用需要开放网络接口,可能需要额外的安全措施,如认证、限流等 |
数据导出量 | 可以配置导出文件的大小,适合大量数据导出 | 大量数据导出可能会受到API速率限制或对服务器造成较大压力 |
适用场景 | 适合需要实时、大量、持续导出数据的场景 | 适合需要手动或周期性导出数据的场景 |
维护成本 | 维护成本低,配置后无需太多关注 | 需要定期检查和维护API调用脚本,处理可能的错误 |
扩展性 | 可以轻松地将导出的数据集成到ELK、Kafka等日志和数据处理系统中 | 需要额外开发来集成到其他系统 |
灵活性 | 灵活性较低,所有数据都会被导出 | 可以通过API调用来定制需要导出的数据,灵活性高 |
操作步骤
结合 Zabbix Real-time export 功能将实时数据发送到观测云中心。
Zabbix 从 5.0 到 7.0 版本都支持将实时数据写到文件中。实时数据中有三种数据格式:events/history/trends
,其中 history 和 trends 都是以指标形式展示。而 events 则可以通过 Webhook 方式发送到观测云。
前置准备
- Zabbix ≥ 5.0
- 安装最新版本 DataKit
Zabbix 配置
修改 Zabbix 配置文件,一般位于 /etc/zabbix/zabbix_server.conf
。
注意:不同 Zabbix 版本导出数据的配置方式有些差异,可根据对应的版本选择正确的配置方式:
### Option: ExportDir
# Directory for real time export of events, history and trends in newline delimited JSON format.
# If set, enables real time export.
#
# Mandatory: no
ExportDir=/data/zbx/datakit
### Option: ExportFileSize
# Maximum size per export file in bytes.
# Only used for rotation if ExportDir is set.
#
# Mandatory: no
# Range: 1M-1G
ExportFileSize=32M
### Option: ExportType
# List of comma delimited types of real time export - allows to control export entities by their
# type (events, history, trends) individually.
# Valid only if ExportDir is set.
#
# Mandatory: no
# Default:
# ExportType=events,history,trends
修改其中的配置项:
ExportDir=/data/zbx/datakitExportFileSize=32M
修改文件的权限:
mkdir -p /data/zbx/datakit
chown zabbix:zabbix -R /data/zbx/datakit
chmod u+rw -R /data/zbx/datakit/
注意:配置文件大小时根据主机配置衡量,太大的文件容易造成磁盘空间不足。并且应当定期删除 .old
文件。这里设置成为 32M 就是考虑到文件系统的负载太大。
配置好之后,重启服务:
systemctl restart zabbix-server
采集器配置
进入 DataKit 安装目录下的 conf.d/zabbix_exporter
目录,复制 zabbix_exporter.conf.sample
并命名为 zabbix_exporter.conf
。示例如下:
[[inputs.zabbix_exporter]]
## zabbix server web.
localhostAddr = "http://localhost/zabbix/api_jsonrpc.php"
user_name = "Admin"
user_pw = "zabbix"
## measurement yaml Dir
measurement_config_dir = "/data/zbx/yaml"
## exporting object.default is item. all is <trigger,item,trends>.
objects = "item"
## update items and interface data.
## like this: All data is updated at 2 o'clock every day.
crontab = "0 2 * * *"
# [inputs.zabbix_exporter.tags]
# key1 = "value1"
# key2 = "value2"
# ...
## mysql database:zabbix , tables: items,interface.
[inputs.zabbix_exporter.mysql]
db_host = "127.0.0.1"
db_port = "3306"
user = "zabbix"
pw = "xxxxx" # zabbix 用户密码
# Zabbix server version 5.x.
[inputs.zabbix_exporter.export_v5]
# zabbix realTime exportDir path
export_dir = "/data/zbx/datakit/"
配置 item_type 的规范文件
由于 Zabbix 原始指标名主要以解释性说明为主,观测云根据 Zabbix 不同 Item_type 中的 Item_key 作为指标,Item_key 中的 param 作为标签,更多 Item_type 详情可查看Zabbix 官方文档 。
如 zabbix agent 下 Processesitem 组的 proc.mem 为例:
proc.mem[<name>,<user>,<mode>,<cmdline>,<memtype>]
- measurement: Processes
metric: proc_mem
key: proc.mem
params:
- name
- user
- mode
- cmdline
- memtype
values:
- ''
- ''
- sum
- ''
- ''
序号 | 字段 | 格式 | 说明 |
---|---|---|---|
1 | measurement | string | 观测云显示的指标集名称 |
2 | metric | string | 观测云显示的指标名 |
3 | key | string | zabbix原生的itemkey |
4 | params | []string | 观测云指标tagkey |
5 | values | []string | 观测云指标tagvalues默认值 |
将上述 yaml 文件放置在 zabbix_exporter.conf
里 measurement_config_dir
配置的文件目录中,这里应是 /data/zbx/yaml
。
配置好后,重启 DataKit。
datakit service -R
效果展示
接入 Zabbix 指标后,可以在「观测云」-「指标」-「指标管理」,管理 Zabbix 相关指标。
在「观测云」-「场景」-「仪表板」,可以创建 Zabbix 指标相关的仪表板。
在「观测云」-「监控」-「监控器」,可以创建 Zabbix 相关的监控告警。