我创建了一个名为dev002-All-Series
的主机,向其添加了tapper item,其中包含密钥test.ping.count
添加主机和ip地址到允许的主机。然后我尝试使用zabbix-metrics library发送包含以下代码的数据:
private MetricRegistry metricRegistry;
private Meter pingMeter;
private void init() {
metricRegistry = new MetricRegistry();
metricRegistry.register("jvm.attribute.guage.set", new JvmAttributeGaugeSet());
ZabbixSender zabbixSender = new ZabbixSender("zabbixHost", 10051);
ZabbixReporter zabbixReporter = ZabbixReporter.forRegistry(metricRegistry)
.hostName(HostUtil.getHostName()).prefix("test.").build(zabbixSender);
//FIXME us right time unit and amount
zabbixReporter.start(10, TimeUnit.SECONDS);
pingMeter = metricRegistry.meter("ping");
}
请注意,zabbix-metrics库使用ping
前缀和test.
后缀{sur} .count
米。
那么为什么我收到我未能发送数据的原因呢?答复是:
{"response":"success","info":"processed: 0; failed: 8; total: 8; seconds spent: 0.000013"}
另外在zabbix中发送数据需要什么?还有一种方法可以解释为什么zabbix不接收数据 - 是否记录了这样的请求?
答案 0 :(得分:0)
可能的热门原因:
一般情况下,暂时忘记您的申请并使用zabbix_sender进行测试。如果可行,请检查您的应用程序执行的操作有何不同。如果失败,请检查上面的所有项目。
至于日志记录,目前Zabbix不会记录失败或原因。
答案 1 :(得分:0)
我发现了一个问题。它转变为指标zabbix库不能很好地转换数据(对于版本0.0.1)。它以毫秒为单位发送时钟值long
,而zabbix需要在秒中接收它。手动转换后,我得到了:
{"response":"success","info":"processed: 2; failed: 0; total: 2; seconds spent: 0.000016"}
我非常有趣,即使我有2个成功的处理元素,zabbix也不会在图形上显示任何值。
<强>已更新强>
要完成所有工作,您不仅应该检查数据对象中的时钟,还应该检查时钟。默认情况下,metrics zabbix
使用zabbix-sedner
版本0.0.1
,以毫秒为单位发送时钟。要使指标适用于zabbix 3.0,它需要以秒为单位的时钟时间,您应该将zabbix-sedner
版本更改为0.0.3。这是一个maven样本:
<dependency>
<groupId>io.github.hengyunabc</groupId>
<artifactId>metrics-zabbix</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>io.github.hengyunabc</groupId>
<artifactId>zabbix-sender</artifactId>
<version>0.0.3</version>
</dependency>