Telegraf vs vmagent
Сравнение двух решений для мониторинга по snmp в пользу vmagent, но от telegraf совсем отказываться не нужно, т.к. он работает как с victoria-metrics, так и с clickhouse. Vmagent используется вместе с snmp_exporter'ом.
telegraf, snmp plugin | vmagent, snmp_exporter |
---|---|
Нет service discovery. Необходимо после изменения списка агентов делать reload telegraf'у. | Есть service discovery и file_sd в частности. Для каждого модуля можно создавать файл со списком хостов средствами автоматизации. |
Статус опрашиваемых устройств определить нельзя. Можно посмотреть логи об ошибках. | Есть ручка curl http://vmagent-host:8429/targets , метрики и официальный dashboard для них с кол-вом targets up/down. |
metric_buffer_limit в настройках telegraf определяет размер кэша для хранения метрик при опросе устройств. При недоступности базы метрики хранятся в кэше и при восстановлении связи записываются. При перезапуске telegraf'а, например из-за изменения адреса базы, данные будут потеряны. | remoteWrite.tmpDataPath у vmagent определяет каталог для хранения данных при недоступности базы. |
На хосте, который будет мониторинть сетевые устройства устанавливается snmp, мибы, telegraf. Указывается одна или две базы, куда будут записываться метрики. Так можно указать для части метрик influxdb, а для других - victoria-metrics, которая поддерживает influx-протокол по умолчанию. | На хосте устанавливается snmp_exporter, vmagent. Мибы нужны на хосте с генератором конфигурационного файла snmp.yml. |
Интервал опроса указывается в каждом конфигурационном файле, либо глобально. Имеет смысл делать множество файлов, т.к. если плагин не успеет завершить работу в указанный интервал, то данные обо всех устройствах будут потеряны. Когда начинается какая-то проблема, то потеря данных мониторинга делает бессмысленным мониторинг. Необходимо понимать, что устройства отвечают по snmp медленно и необходим компромис между количеством опрашиваемых данных и интервалом опроса. | Рекомендуется один интервал для всех метрик. 1 минута - интервал опроса всех устройств по snmp. Если есть что опрашивать за спутниковым каналом связи, то извините, надо ставить отдельный сервер мониторинга. Инициирует обращение vmagent через запрос к snmp_exporter'у с указанием адреса устройства и модуля. Недоступность устройства не влияет на получения результатов опроса от других устройств. |
Для каждого вендора или модели оборудования создается отдельный конфигурационный файл для snmp плагина в /etc/telegraf/telegraf.d/. | У snmp_exporter один конфигурационный файл, в котором для каждого вендора или модели оборудования описывается модуль. В vmagent'е для каждого модуля свой job. |
Добавление тегов влияет на производительность, но рекомендуется для индексации и поиска. | Метрика с другим набором лейблов - это другой временной ряд. |
В grafana есть конструктор запросов для influxdb, где в качестве условий указываются теги. | Необходимо знать функции promql для составления запросов в базу, указывать в запросе специфичные для метрики лейблы. |
Функции derivative() или non_negative_derivative() испольуются в grafana для отображения графиков загрузки интерфейсов. Интервал для использования в функциях может совпадать с интервалом опроса устройств. | Функции rate() и increase() для счетчиков (counters) 32 и 64 битных. В базе prometheus для rate() необходимо 2.3 точки на интервале. Т.е. при опросе раз в минуту можно задать rate(metric[5m]), но не rate(metric[1m]). В victoria-metrics такого ограничения нет. |
Запишет все полученные значения (value) текст, числа, неотфильтрованный мусор в базу influxdb как одну метрику (measurement) с множеством значений и индексов (tag). Есть мибы, например от polycom, где числа описаны как строки. Такое значение можно преобразовать через conversion = "int". | В victoria-metrics и prometheus можно записать только числовые значения, а текст только в индексы/лейблы. Одной метрике будет соотвествовать одно значение с набором лейблов. snmp_exporter умеет преобразовывать string через overrides. |
Лишние индексы в oid можно ограничить через oid_index_length в inputs.snmp.table.field. Можно настроить фильтрацию через fieldpass, tagexclude, inputs.snmp.tagdrop в конфигурации плагина. | В конфигурации vmagent'а необходимо настроить labeldrop в metric_relabel_configs. Есть drop_source_indexes в lookup и ignore overrides в snmp_exporter. |
В конфигурации можно использовать oid без мибов в случае inputs.snmp.field. | Создать конфигурацию без миба не получится, потому что все индексы - это лейблы. |
Необходимы мибы, т.к плагин выполняет snmptranslate при старте и делает проверку oid для таблиц inputs.snmp.table что это действительно таблица. | Мибы необходимы только для генератора конфигурации и не нужны на хосте где запущен exporter. |