Как настроить элемент Zabbix для чтения данных из порта и создания графиков?
Я новичок в 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}
]}
2 ответа
Я верю, что есть два основных подхода к тому, что вы хотите.
Один из них - настроить (по шаблону или явно - предпочтительно шаблон), какие элементы вы будете отправлять обратно, конкретно и явно (т.е. вы точно знаете, сколько и как будут называться их имена). Это самое простое, но не всегда возможно.
Другой заключается в динамической настройке элемента с помощью "Обнаружения низкого уровня", т. Е. 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), вы должны использовать правильный формат.
- вы можете реализовать протокол отправителя самостоятельно, основываясь на примерах по адресу https://www.zabbix.org/wiki/Docs/protocols/zabbix_sender/3.0
- Вы можете использовать существующий модуль, такой как Zabbix::Sender
- Вы можете использовать zabbix_sender
Обратите внимание, что элементы ловушки должны существовать, чтобы любой из перечисленных методов работал.