Канал: https://t.me/metrics_ru
Всё сказанное ниже, сказано с целью уберечь инженера от неправильного или плохого выбора. Каждая из описанных систем обсуждалась на канале неоднократно и тут сделана попытка сделать выжимку частых вопросов.
Про Zabbix
В церкви запрещено использовать сравнительные эпитеты к заббиксу. По нашему опыту это рождает холивары в которых нет не правых, но и истины тоже не много.
Если очень хочется поговорить про заббикс - https://t.me/ZabbixPro
Q: Почему Zabbix говно? Я вот пользуюсь и мне норм
A: По множеству причин:
- Реляционные базы данных не подходят для time-series. Когда даже плохие системы тянут сотни тысяч точек в секунду, заббиксу становится уже плохо.
- Zabbix отвратительно мастштабируется.
- Он не вписывается в современные концепции мониторинга (многомерные метрики, точнее теги, мониторинг по метрикам в первую очередь).
- Он не подходит для работы с короткоживущими метриками, например из докера.
- См. его bugtracker и список Feature Request'ов. Все важное из него давно реализуется другими системами мониторинга, но не заббиксом.
- Как вишенка на торте - особо отвратительный интерфейс в духе "привет 90ые"
Q: Что использовать вместо InfluxDB и Zabbix?
A: Graphite + Moira/Bosun/баш скрипты или Prometheus
Про InfluxDB
Q: Я хочу взять InfluxDB чтобы запилить X
A: Не надо.
Q: Но он же такой хороший, вот про него сколько сказано крутого
A: Это маркетинг. Не ведитесь.
Q: А какие у него проблемы? Вот я в него начал отправлять 20 метрик в секунду и он отлично работает!
A: Вот краткий и неполный список проблем на момент версии 1.4 (применимо и к более младшим):
- Стабильность. Периодически падает и теряет данные.
- Скорость. Заявленное в маркетинговых бумажках касается не постоянного рейта, а спайков. "Show tag keys from all" на средней базе может положить все.
- Потребление ресурсов . Сожрать 256ГБ RAM, закусить 320GB свопа и все равно упасть по OOMу - легко (в момент 6и часового запуска).
- Платная кластеризация.
- Частые breaking changes. За 3 года сменили 5+ движков, периодически выкатывают фичи непонятно зачем сделанные, например сделали ifql.
- Безалаберность при подготовке релизов. Например как они ломали поддержку Прометея в телеграфе 1.3.2 (замена символов не попадающих под [a-z], influxdata/telegraf#2937). В целом недостаточное тестирование релизов.
- Не самосогласованные утилиты экспорта и импорта из базы - если вы что-то экспортировали через cli, то импортировать обратно файлик не прокатит. restore из backup полностью заменяет всю метаинформацию о базах. Селективности и merge не завезли.
Про Graphite
Q: Раз Graphite такой клевый, почему его все не используют?
A: Потому что он тоже говно. А все потому что:
- Он очень любит I/O, делает много мелких IOPS при работе с диском.
- Он не очень приспособлен под мониторинг короткоживущих сущностностей (нет адекватной поддержки тегов), нет метаданных.
- Тяжел в плане администрирования (single-server решение с кластеризацией где-то сбоку и набором странных скриптов для управления всем)
- Оригинальный написан на питоне, поэтому еще и адски медленный (пользуйтесь по возможности https://github.com/go-graphite и https://github.com/lomik/go-carbon или https://github.com/lomik/carbon-clickhouse)
- Слишком многое есть в альтернативной реализации, включая несколько видов совместимых хранилищ, но из которых почти все работает не очень хорошо.
Про Prometheus
Q: Может тогда Prometheus - серебряная пуля?
A: И тоже нет. У него несколько существенных недостатков:
- Нет возможность вешать Action на Alarm'ы.
- Из коробки нет долговременного хранилища. Есть множественные попытки сделать их через remote read/write.
- Плохо подходит для новичков. Предполагает, что git и merge request являются большей ценностью чем возможность управлять системой через веб интерфейс.
Про Cacti
Q: Почему Cacti говно?
A: Краткий список собственно почему:
- rrd под капотом
- как следствие первого пункта, невозможность самому, внятно, управлять аггрегацией метрик
- нулевая масштабируемость
- pooler модель сбора метрик
- околонулевая возможность автоматизации (т.е. она есть, но чтобы ее настроить до вменяемого состояния нужно потратить уйму времени)
- прожорливость до iops, даже со всякими boost плагинами
- нет вменяемых дашбордов
- заточен в основном под сетевые девайсы - мониторить им сервера клауды и прочие контейнеры мазохизм
Q: Почему тогда ее еще не закопали?
A: Потому что все еще торт! Ну а на самом деле все-таки неплохо мониторит сетевые девайсы, многое для сети есть из коробки, логика отображения устройств в виде дерева хорошо ложиться в голову менеджеров и прочего руководящего состава и они ее любят.