考虑一下java代码:
String host = "zabbixHost";
int port = 10051;
ZabbixSender zabbixSender = new ZabbixSender(host, port);
DataObject dataObject = new DataObject();
dataObject.setHost("testHost");
dataObject.setKey("test.ping.count");
dataObject.setValue("10");
// TimeUnit is SECONDS.
dataObject.setClock(System.currentTimeMillis()/1000);
SenderResult result = zabbixSender.send(dataObject);
System.out.println("result:" + result);
if (result.success()) {
System.out.println("send success.");
} else {
System.err.println("sned fail!");
}
结果为{"failed":0,"processed":1,"spentSeconds":0.001715,"total":1}
然后我从命令行发送zabbix_sender
工具的请求:
zabbix_sender -z zabbixHost -p 10051 -s testHost -k test.ping.count -o 8 -v
输出结果为:
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.002052"
sent: 1; skipped: 0; total: 1
目前已将2个值发送到Zabbix。但是当我到达test.ping.count
的监控图形时,只显示8
值。例如。即使响应成功,也未收到来自java代码的值。
发生了什么事?如何解决这种情况?
注意的
图书馆是 - io.github.hengyunabc:zabbix-sender:0.0.3
Zabbix版本是3.0
答案 0 :(得分:1)
问题在于时间戳,zabbix-sender与版本0.0.1
设置请求(非数据对象)时钟(以毫秒为单位),而版本0.0.3
以秒为单位。所以使用正确的版本修复问题。
maven示例(source):
<dependency>
<groupId>io.github.hengyunabc</groupId>
<artifactId>zabbix-sender</artifactId>
<version>0.0.3</version>
</dependency>