Назад | Перейти на главную страницу

Как настроить Zabbix item на чтение данных из порта и создание графиков?

Я новичок в Zabbix. Я отправляю данные от клиента fluentd на порт 10050 сервера zabbix. Мой вопрос: как мне настроить элемент Zabbix для чтения этих данных из порта и создания для него графика.

Мои данные похожи на

.{"request":"agent.data","clock":1501499361,"data":
[
{"key":"Type"      ,"value":"INFIO"      ,"host":"flunet1","time":1501499361},
{"key":"Action"    ,"value":"RESET"      ,"host":"flunet1","time":1501499361},
{"key":"RandNumber","value":"47820"      ,"host":"flunet1","time":1501499361},
{"key":"Message"   ,"value":"aavwafkfxwa","host":"flunet1","time":1501499361},
{"key":"Indexer"   ,"value":"10891"      ,"host":"flunet1","time":1501499361}
]}

Я полагаю, есть два основных подхода к тому, что вы хотите.

Один из них - настроить (по шаблону или явно - предпочтительно шаблон), какие элементы вы будете отправлять обратно, конкретно и явно (то есть вы точно знаете, сколько и каковы будут их имена). Это самый простой, но не всегда возможный.

Другой - динамическая настройка элемента с помощью «Низкоуровневого обнаружения», то есть LLD. Это позволяет вам использовать элемент (ы) прототипа и контролировать во время выполнения, сколько их и как они называются (в некоторых пределах). Это полезно для таких вещей, как интерфейсы коммутатора, где вы не обязательно знаете, сколько будет существовать (и действительно, с виртуальными портами это может измениться).

Из вашего сообщения неясно, что вам нужно, но как только вы это определите, есть множество примеров. Люди часто путаются в том, чтобы относиться к двум этапам одинаково. Если вам нужен LLD, все, что он делает, это создает определения элементов; после этого вам все равно придется загружать в них данные либо вытягиванием (опрос некоторого агента для получения данных), либо нажатием (zabbix trapper, возможно snmp trapper).

Нормальный (но не обязательный) процесс состоит в том, что LLD выполняется нечасто (и обычно требует больше ресурсов процессора), а опрос для заполнения данных происходит чаще. В этом случае используются отдельные процедуры. Также можно использовать одну процедуру, которая возвращает два набора данных - данные JSON для создания элементов через LLD (они возвращаются в STDOUT) и данные элемента через Zabbix Sender (на порт сервера zabbix) для заполнения созданных Предметы. Обратите внимание, что если вы сделаете это в первый раз (или два), элементы не будут заполнены данными, так как для полного определения и готовности элементов требуется немного времени, но последующие вызовы для отправки обоих будут работать, поскольку создание LLD элемент, который уже существует, в основном не используется (я говорю «в основном потому, что если вы НЕ УДАЕТЕ создать элемент во время LLD, он становится подходящим для автоматического удаления, поэтому вам нужно отправлять JSON для всех элементов каждый раз, когда вы выполняете LLD).

Опять же, не совсем ясно, что вам нужен LLD из вашего вопроса; если не просто создавать элементы для каждого из них и возвращать их как отдельные элементы либо из опроса агенту, либо снова как отправитель zabbix (преимущество элементов "zabbix trapper", заполненных отправителем zabbix, заключается в том, что вы можете с помощью одной удаленной операции вычислить и отправлять данные для множества элементов одновременно, в отличие от того, чтобы каждый элемент проводил свой собственный отдельный опрос).

Похоже, вы хотите передать в Zabbix пользовательские данные. Вы не можете отправлять случайные данные на порт сервера Zabbix (также обратите внимание, что порт сервера - 10051, а не 10050), вы должны использовать правильный формат.

Обратите внимание, что для работы любого из вышеперечисленных методов элементы траппера должны существовать.