Zabbix trapper
概述
Trapper 监控项接收传入的数据,而不是主动查询数据。 这对于任何你想发送到 Zabbix 的数据都很有用。
配置
要配置 trapper 监控项:
- 转到 数据采集 > 主机。
- 点击该主机所在行中的 监控项。
- 点击 创建监控项。
- 在配置表单中输入监控项参数。

所有必填输入字段都用红色星号标记。
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 sender 实用程序或 Zabbix sender 协议 将数据发送到 Zabbix 服务器或 proxy。
也可以使用 history.push API 方法将数据发送到 Zabbix 服务器。
Zabbix sender
要使用 Zabbix sender 实用程序向 Zabbix 服务器或 proxy 发送数据,可以运行以下命令发送 “test value”:
zabbix_sender -z <server IP address> -p 10051 -s "New host" -k trap -o "test value"
要发送 “test value”,使用以下命令选项:
-z用于指定 Zabbix 服务器 IP 地址-p用于指定 Zabbix 服务器端口号(默认是 10051)-s用于指定主机(请确保使用技术名称,而不是可见的 host name)-k用于指定在 trapper 监控项中 配置 的监控项键值-o用于指定要发送的值
Zabbix trapper 进程不会展开监控项键值中使用的宏,因此不会为目标主机检查相应的监控项键值是否存在。
有关 Zabbix sender 与 Zabbix 服务器或 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 查看结果:

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