Pull to refresh

Comments 21

Главное — не попасть в системную ошибку выжившего, когда мониторинг не покрыл юзеров, с порога выкинувших поделие, сожравшее четыре гига на полупрозрачные окошки и потребовавшее аккаунта в трёх облачных сервисах…

При этом всё перечисленное на удивление мало кушает

Зависит от того, с какой точки зрения посмотреть. Каждый процесс в отдельности кушает действительно мало, но если просуммировать весь стек мониторинга, то лично у меня набежало под 300 мегабайт занятой оперативки — если у вас мажорская стойка из 128-гиговых дедиков, вы такую мелочь конечно не заметите, но если, например, для пет-проекта брать дешёвый гиговый VPS по акции на сэкономленные с обедов деньги, то эти 300 мегабайт начинают очень сильно ощущаться

Я сравнивал с традиционным ELK, где только один эластик выжирает крайне много по сравнению с 300 мб. Плюс весь стек мониторинга не надо дублировать на каждом инстансе, так что всё-равно получаем на выходе достаточно не жрущее

Создать /etc/systemd/system/node-exporter.service

Простите, а зачем запускать node-exporter в докере, если он состоит из одного-единственного бинарника, способного запускаться в любой среде, и если вы всё равно ломаете изоляцию контейнера пачкой volume?

Разумеется, запускать node-exporter (равно как и все остальные компоненты) в контейнере вовсе не обязательно. Это лишь пример, иллюстрация одного из вариантов :)

Изоляция процессов в контейнерах осуществляется благодаря двумя механизмами ядра Linux – пространствам имен (namespaces) и контрольным группам (cgroups). Мы частично нарушили изоляцию файловой системы, но остальные пространства все еще работают, как и контрольные группы.

Еще один плюс (возможно очень субъективный) – все программное обеспечение распространяется через образы. Это банально удобно

Стоит иметь в виду, что systemd тоже умеет изоляцию процессов через те же самые namespaces и cgroups, так что использование докера ради изоляции может быть оверкиллом

А учитывая, что задачей node-exporter является мониторинг хоста, а не контейнера - изоляция его в контейнере может сломать часть метрик (я по этой причине специально выключил у себя всю изоляцию, чтобы node-exporter не вопил, что rootfs внезапно read-only бида-бида, и всё в таком духе - я осознаю, что это менее безопасно, но зато метрики более качественные)

Спасибо за важное замечание! Мне остается только добавить, что разработчик действительно не рекомендует запускать node_exporter в контейнере:

The node_exporter is designed to monitor the host system. It's not recommended to deploy it as a Docker container because it requires access to the host system.

«Во Франции незаконно называть свинью Наполеоном, но меня не остановить» :)

затем же, зачем и устанавливать кучу различных систем мониторинга, а потом их дебажить и искать проблемные места в самом мониторинге =)

А можете объяснить дилетанту, чем внедряют Vicoria Metrics в дополнении к Prometheus? Зачем плодить лишние хранилища? В интернетах пишут что Vicoria Metrics якобы нужна для создания долгосрочного хранилища данных, но почему этого нельзя сделать в Prometheus я так и не уловил

Как минимум благодаря дедубликации данных можно хранить меньшее число точек во временных рядах. Например, Prometheus собирает значения от экспортера каждые 15 секунд и на отрезке последних нескольких недель это оправданно. Однако на глубине в год такая точность уже не требуется – и VictoriaMetrics позволяет хранить только значения за каждые 60 секунд с помощью опции -dedup.minScrapeInterval=60s. Тогда горячие данные можно смотреть от источника данных Prometheus, а холодные – от VM.

Также есть интересная статья Бенчмарк Prometheus vs VictoriaMetrics на метриках node_exporter, которая наглядно сравнивает потребление ресурсов

На практике это может это может выглядеть так (набор экспортеров очень пестрый, от того же node до mongodb и кастомных):

  • Prometheus – хранение данных 21 день, БД ~90 ГБ

  • VictoriaMetrics – хранение данных 365 дней, БД ~270 ГБ

Prometheus тоже позволяет хранить только значения за каждые 60 секунд, ровно как и любой другой интервал. Если 15 секунд не требуется вообще никогда — просто поменять scrape_interval: 15s на нужный. Если требуется одновременно хранить разреженные метрики для истории и подробные для оперативного анализа — можно запустить два инстанса прометеуса (если экспортеров много) или просто в prometheus.yml указать две цели с разным интервалом.

Все верно. VM в контексте вопроса как раз и есть аналог второго экземпляра Prometheus в вашем сценарии, который с точки зрения потребления ресурсов эффективнее

Очень хорошая обзорная статья без воды и ответы с конкретикой, у меня 90% вопросов снялось, спасибо.

Еще рассматриваю связку Prometheus + VictoriaMetrics, для использования экземпляров Prometheus в изолированных сегментах сети, а VictoriaMetrics в тойже что и Grafana источником данных для которой будет VictoriaMetrics. Ну и экономия места подкупает при долгосрочном хранении, на экземплярах Prometheus метрики будут какое то ограниченное количество часов храниться.

  1. Где "основы мониторинга", обещанные в заголовке?

  2. Где сравнение систем мониторинга и обоснование выбора в пользу прометеуса?

  3. Где пример того, как замониторить какую-нибудь программу, тот же nginx, например? Ага, скачайте и поставьте что-то там.

  4. Зачем ставить и запускать сразу три экспортёра, а не ограничиться одним? Или одним экспортёром нельзя собирать все нужные данные?

  5. Статья обрывается на моменте, как мы запустили сервисы графаны и прометеуса.

  6. Лучи ненависти в сторону автора, и минусы в статью и в карму за потраченное время.

Типичный shitops подход - понадёргать отдельных команд и файлов из интернета, получить какую-то херню на выходе с модным интерфейсом и считать себя крутым специалистом.

  1. Основы мониторинга в понимании разных людей должны содержать разную информацию. Необходимость, понятие и краткий обзор существующих систем – вот что является основами по-моему субъективному мнению (которое не обязательно должно совпадать с Вашим)

  2. Статья изначально не подавалась как сравнительная. Различные системы мониторинга перечислены для понимания общей картины. Нет и не может быть универсального обоснования в вакууме в пользу Prometheus (как и в пользу любой другой системы)

  3. Это забавно, но в концепции Prometheus «замониторить какую-нибудь программу» действительно означает развернуть экспортер :) В статье есть упоминание, где подобный экспортер найти, дальше достаточно открыть ReadMe. Можно написать и свой экспортер, что совсем не сложно по официальной документации

  4. Зачем делать репозиторий для каждого проекта, неужели нельзя сложить все в один? Иногда реализовать экспортер, который будет отдавать метрики по разным подсистемам, все же можно и даже разумно, но объединять метрики по хосту, контейнерам и проверке доступности точек входа по tcp/http – странное предложение. Возможно я не понял сарказм :(

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

  6. Эмоции – двигатель прогресса

Мне больше импонирует термин monkeyops. И все же команды и файлы не понадерганы из Интернета, не стоит настолько упрощать. Крутым специалистом себя не считаю :)

Раз уж взялись за историю, то MRTG был и кактус Cacti.

MRTG в статье был изначально. По поводу Cacti были сомнения, добавил сейчас

Странно что не была упомянута netdata...

У себя мы используем для "долгосрочной истории" zabbix, а для среднесрочного и мониторинга в реальном времени используем связку
netdata -> netdata-registry -> prometheus <- grafana.
Ну а alertmanager заменяет собственно netdata-registry, которая и занимается рассылкой уведомлений. Да, не такая гибкая как alertmanager, но вполне себе хватает.

Отличная статья! Большое спасибо автору, жаль, что не наткнулся раньше и методом проб и ошибок (офф. документация не очень помогла), в итоге, пришёл к похожему решению, но, по итогу, не осилил написание конфиг-файлов для data sources и дэшбордов, но благодаря вам решение найдено за, что я очень вам благодарен!

Sign up to leave a comment.

Articles