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.confmeasurement_config_dir 配置的文件目录中,这里应是 /data/zbx/yaml

    配置好后,重启 DataKit。

    datakit service -R
    

    效果展示

    接入 Zabbix 指标后,可以在「观测云」-「指标」-「指标管理」,管理 Zabbix 相关指标。

    在「观测云」-「场景」-「仪表板」,可以创建 Zabbix 指标相关的仪表板。

    在「观测云」-「监控」-「监控器」,可以创建 Zabbix 相关的监控告警。

    联系我们

    加入社区

    微信扫码
    加入官方交流群

    立即体验

    在线开通,按量计费,真正的云服务!

    免费开启

    支持私有云环境部署

    代码托管平台