6 Zabbix trapper

概述

Trapper 监控项接收传入的数据,而不是主动查询数据。 这对于任何你想发送到 Zabbix 的数据都很有用。

配置

要配置 trapper 监控项:

  1. 转到 数据采集 > 主机
  2. 点击该主机所在行中的 监控项
  3. 点击 创建监控项
  4. 在配置表单中输入监控项参数。

所有必填输入字段都用红色星号标记。

trapper 监控项需要填写的特定字段如下:

类型 选择 "Zabbix trapper"。
键值 输入一个键值,用于在向 Zabbix 服务器发送数据时识别该监控项。
信息类型 选择与将要发送的数据格式相对应的信息类型。
允许的主机 以逗号分隔的 IP 地址列表(可选使用 CIDR 表示法)或 DNS 名称。

默认值为 user macro {$TRAPPER.ALLOWED_HOSTS}。默认情况下,{$TRAPPER.ALLOWED_HOSTS}127.0.0.1,::1。您可以直接在字段中输入地址,也可以修改宏值。如果留空,将拒绝来自所有主机的传入连接。如果指定了该字段,则只接受来自此处列出的主机的传入连接。
如果启用了 IPv6 支持,则 '127.0.0.1'、'::127.0.0.1'、'::ffff:127.0.0.1' 会被视为相同,且 '::/0' 将允许任何 IPv4 或 IPv6 地址。'0.0.0.0/0' 可用于允许任何 IPv4 地址。

请注意,“IPv4-compatible IPv6 addresses”(0000::/96 前缀)虽受支持,但已被 RFC4291 弃用。

示例:127.0.0.1, 192.168.1.0/24, 192.168.3.1-255, 192.168.1-10.1-255, ::1,2001:db8::/32, mysqlserver1, zabbix.example.com, {HOST.HOST}

支持空格、用户宏以及主机宏 {HOST.HOST}、{HOST.NAME}、{HOST.IP}、{HOST.DNS}、{HOST.CONN}。

在发送值之前,您可能需要在保存监控项后等待最多 60 秒,直到 Zabbix 服务器从配置缓存更新中获取到更改。

发送数据

向Zabbix server 或 proxy发送数据可以使用Zabbix sender 程序或Zabbix sender protocol。 向Zabbix server发送数据还可以使用API方法 history.push

Zabbix sender

使用Zabbix sender程序向Zabbix server 或 proxy发送数据时,您可以运行以下命令来发送“测试值”:

zabbix_sender -z <server IP address> -p 10051 -s "New host" -k trap -o "test value"

发送“测试值”,可以使用以下命令选项:

  • -z 指定Zabbix server的IP地址
  • -p 指定Zabbix server的端口(默认为10051)
  • -s 指定主机(请确保在此使用“主机名称”,非“可见的名称” host name)
  • -k 要指定在监控项中配置trapper监控项键值configured
  • -o 指定要发送的实际值

Zabbix trapper进程不会扩展监控项键值中使用的宏,以检查目标主机对应的监控项键值是否存在。

10051了解更多关于Zabbix sender与 Zabbix server 或 proxy之间通信的信息。参见 Zabbix sender protocol.

history.push

使用 API 方法history.push 向 Zabbix server发送数据时,您可以发起以下包含一些测试值的 HTTP POST请求::

curl --request POST \
  --url 'https://example.com/zabbix/api_jsonrpc.php' \
  --header 'Authorization: Bearer 0424bd59b807674191e7d77572075f33' \
  --header 'Content-Type: application/json-rpc' \
  --data '{"jsonrpc":"2.0","method":"history.push","params":[{"itemid":10600,"value":"test value 1"},{"itemid":10601,"value":"test value 2"},{"itemid":99999,"value":"test value 3"}],"id":1}'

如果请求正确,API 返回的响应可能如下所示::

{
    "jsonrpc": "2.0",
    "result": {
        "response": "success",
        "data": [
            {
                "itemid": "10600"
            },
            {
                "itemid": "10601",
                "error": "Item is disabled."
            },
            {
                "error": "No permissions to referred object or it does not exist."
            }
        ]
    },
    "id": 1
}

响应数据中的错误表明,特定监控项的数据发送未能通过 Zabbix server的验证。 这种情况可能由以下原因导致:

  • 发送数据的用户没有对该监控项主机的“读取”权限;
  • 主机被禁用或处于维护期且没有数据采集;
  • 监控项不存在或尚未包含在服务器配置缓存中;
  • 监控项被禁用或其类型不是Zabbix trapper 或 HTTP agent (启用 trapping );
  • 用户的IP或DNS不在监控项的允许主机 列表中;
  • 另一个监控项有一个在纳秒级别上具有重复时间戳的值.

没有错误表明发送的值已被接受处理,这包括预处理(若配置预处理)、触发器处理以及保存到数据库中。 请注意,即使值已被接受处理,处理过程也可能会失败(例,在 预处理期间),导致该值被丢弃。 关于获取更多如何使用Zabbix API信息,请参见 API.

显示数据

数据发送后,您可以导航到 Monitoring > Latest data 查看结果:

如果发送的是单个数值,数据图形将在该值的时间点左右显示一条水平线。