2016-07-16 2 views
2

Я создал хост с именем dev002-All-Series, добавленный tapper item к нему с ключом test.ping.count добавить хост и ip addres для разрешенных хостов. Тогда я пытаюсь отправить данные с zabbix-metrics library с кодом так:Как настроить zabbix для получения данных?

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-метрики библиотеки surrond ping метр с test. префиксом и .count posyfix. Так почему я получаю, что мне не удалось отправить свои данные? Ответ:

{"response":"success","info":"processed: 0; failed: 8; total: 8; seconds spent: 0.000013"} 

Что нужно дополнительно настроить в zabbix для отправки данных? Также есть путь к причине, почему zabbix не получает данные - есть ли журналы таких запросов?

ответ

0

Возможные причины: популярные

  • неправильное имя хоста; убедитесь, что оно соответствует полю «Имя хоста» (не «Видимое имя», а не IP, а не DNS ...); обратите внимание, что он чувствителен к регистру
  • неверный ключ элемента; убедитесь, что он соответствует таковому в свойствах ключа элемента точно - также чувствителен к регистру
  • неправильное допустимое содержимое поля хоста или данные, поступающие с другого хоста, чем ожидалось - проверьте это поле на наличие ошибок синтаксиса, помните, что в более старых версиях Zabbix пробелы не поддерживаются в этом поле и tcpdump ваше входящее соединение - оно поступает с хоста, которого вы ожидали?
  • хост/элемент не входит в конфигурационный кеш - если вы только что добавили или изменили узел/элемент, возможно, он еще не находится в кэше конфигурации. Кэш конфигурации обновляются каждые 60 секунд по умолчанию
  • если хост контролируется прокси Zabbix, вы должны отправить данные на этот прокси-сервер

В общем, забудьте заявку на минуту и ​​испытание с zabbix_sender. Если это работает, проверьте, что делает ваше приложение по-другому. Если это не удается, проверьте все вышеперечисленные элементы.

Что касается ведения журнала, в настоящее время Zabbix не регистрирует сбои или их причины.

+0

Спасибо за быстрый ответ детали очень полезно, но проблема была в библиотеке Java. Кстати, знаете ли вы ответ на [другой] (http://stackoverflow.com/questions/38414872/why-zabbix-do-not-show) вопрос о zabbix? – Cherry

0

Я нашел проблему. Похоже, что metrics zabbix library не хорошо конвертирует данные (для версии 0.0.1). Он посылает значение часов как long в миллисекундах, тогда как zabbix необходимо получить его в секунд. После ручного преобразования я получил:

{"response":"success","info":"processed: 2; failed: 0; total: 2; seconds spent: 0.000016"} 

Я очень Весёлый, что даже когда я получил 2 успешных обработанные элементы, Zabbix не показывают значения на графике.

ОБНОВЛЕНО

Чтобы получить все работает, вы должны проверить не только часы в объекте данных, но часы в reqeust тоже. По умолчанию 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> 

See also

Смежные вопросы