无法将Lambda日志发送至Zabbix:发送成功但未注册值求助
解决Lambda日志无法被Zabbix正确处理的问题
看到你的问题了——虽然Zabbix返回了成功响应,但数据没被实际处理(processed:0/1),这种情况我之前也碰到过,大概率是数据匹配或者配置细节的问题,咱们一步步排查:
1. 确认主机名完全匹配
Zabbix对主机名的匹配是严格大小写、完全一致的,你发送的主机名是ip-10-5-1-56_ip-10-5-1-56,务必去Zabbix前端检查:
- 主机是否存在(在「配置」→「主机」里搜索)
- 主机名的拼写、下划线、大小写和发送的完全一致,哪怕差一个字符都会导致数据被直接忽略
2. 检查监控项的Key和类型是否正确
你发送的Key是httpd_access_log2,需要确认:
- 对应主机下已经创建了这个Key的监控项
- 监控项的类型要选字符型(Character)——因为你发送的是完整的Apache访问日志文本,如果设置成数值型,Zabbix无法解析文本值,会直接跳过这条数据
- 监控项的「类型」要选「Zabbix trapper」,这样才能接收来自sender的数据
3. 排查时间戳问题
从日志里看到:
log_client_timediff(): timestamp from json 1592557276 seconds, delta time from json 1 seconds
Zabbix对接收的历史数据时间戳有范围限制,如果发送的时间和服务器时间差过大(比如超过默认1天的HistoryCacheTimeout设置),数据会被丢弃:
- 检查Lambda环境和Zabbix服务器的时间是否同步(尽量统一用UTC时间或同一时区)
- 尝试把发送的
clock字段改成整数时间戳(比如去掉.064,用1592557275),有些旧版本的Zabbix不支持带小数的时间戳
4. 验证发送的数据格式
再仔细核对你发送的JSON结构,确保没有格式错误:
{"request":"sender data","data":[{"host":"ip-10-5-1-56_ip-10-5-1-56","key":"httpd_access_log2","value":"150.31.74.47 - - [18/Jun/2020:17:24:02 +0900] \"GET / HTTP/1.1\" 403 3839 \"-\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36\"","clock":1592557275}],"clock":1592557276}
注意value里的双引号已经转义了,这部分是对的,但可以尝试用一段短文本测试,排除长文本导致的解析问题
5. 检查Zabbix服务器的相关配置
- 确认
zabbix_server.conf里的StartTrappers参数值大于0(默认是5),确保有足够的进程处理trapper请求 - 检查
AllowUnsupportedTime参数,如果设置为0(默认),Zabbix会拒绝时间戳不在合理范围内的数据,可以临时改成1测试是否是时间问题
我之前碰到过类似的情况,就是主机名多打了一个下划线,导致数据一直不被处理,改完就正常了。按这几步排查应该能找到问题根源。
内容的提问来源于stack exchange,提问作者Snow
相关产品推荐
相关产品推荐

