Ставим мониторинг Prometheus + Grafana::Журнал СА 5.2017
www.samag.ru
Журнал «БИТ. Бизнес&Информационные технологии»      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Работа с Debian  

О Linux с любовью или Debian: через знание к любви

Конечно, одним лишь перечислением замечательных качеств любовь к Linux не возникнет. Для

 Читать далее...

Опрос  

Защита личных и клиентских данных: как мошенники используют ИИ и как защититься?

По данным RED Security, общее число кибератак на российские компании в 2024

 Читать далее...

Опрос  

Облачные инструменты для разработчиков

Эксперты ИТ-отрасли отвечают на вопросы «Системного администратора» > Как с помощью облака сделать

 Читать далее...

Опрос  

Рынок мобильных приложений: что будет актуальным в 2025 году?

Эксперты ИТ-отрасли отвечают на вопросы «Системного администратора» > Ваши прогнозы: чего ожидать от

 Читать далее...

Рынок труда  

Как успешно пройти все этапы собеседования на ИТ-должность?

По оценкам государства, дефицит ИТ-специалистов составляет от 740 тысяч до 1 миллиона

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 7466
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 7731
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 5097
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3291
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 4088
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 4090
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6592
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3440
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3709
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7581
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10952
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12671
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14431
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9390
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7350
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5638
Комментарии: 4
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4853
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3707
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3390
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3611
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

 Читать далее...

Друзья сайта  

 Ставим мониторинг Prometheus + Grafana

Архив номеров / 2017 / Выпуск №5 (174) / Ставим мониторинг Prometheus + Grafana

Рубрика: Администрирование /  Мониторинг

Сергей Яремчук СЕРГЕЙ ЯРЕМЧУК, автор более 1000 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС, yaremchuk@samag.ru

Ставим мониторинг Prometheus + Grafana

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

Ставим мониторинг Prometheus + GrafanaСложно представить современную сеть без системы мониторинга, позволяющего получить статистику о работе систем и выдать предупреждение в случае превышения значения параметра или недоступности сервиса. Этим теперь удивить кого-то сложно, но сегодня на одном физическом сервере может быть запущено несколько виртуальных машин и сотни контейнеров, а приложения уже не являются монолитными и используют десятки сервисов в своей работе. В итоге классической информации о загрузке процессора, потреблении памяти, свободном месте на диске и сетевой нагрузке явно недостаточно. Они могут быть свободными, а вот приложение явно подтормаживает. Предоставляемых метрик очень не хватает, и часто требуется большая гибкость в возможностях их отбора.

Еще проблема. Обычно системы мониторинга для сбора статистики используют агентов, которые отправляют данные на сервер. Это очень неудобно в случае, когда виртуальные машины и контейнеры находятся фактически в постоянном движении – стартуют, останавливаются, создают реплики, перемещаются на другой сервер. В новых системах мониторинга используется другой подход к сбору информации, они дают больше данных и «знают» о многих сервисах сразу после установки.

Проект Prometheus

Примерно с такой проблемой столкнулись разработчики музыкальной социальной сети SoundCloud, использовавшей микросервисы. Так, собственно, и стартовал проект Prometheus [1], выпущенный со временем под свободной лицензией Apache 2 License и хорошо зарекомендовавший себя благодаря гибкости и функциональности. Prometheus входит в Cloud Native Computing Foundation и его поддерживают разработчики Docker и Kubernetes.

В Prometheus используется так называемая децентрализованная самоуправляемая архитектура, позволяющая легко добавлять сервисы и серверы, которые контролируются с одной консоли. Запущенные на узле сервисы обнаруживаются автоматически, при помощи заранее подготовленных установок. Это очень упрощает администрирование, так как все запускается буквально несколькими командами. Основой является prometheus server, умеющий самостоятельно собирать, хранить метрики с локального сервера, а при помощи агентов и с удаленных.

Поддерживается оповещение и простые графики, которые, правда, больше подходят для быстрого визуального представления собранных метрик или при отладке. Для отбора событий из полученного набора, построения графиков иустановки оповещений используется гибкий язык запросов [2]. Доступно API, которое может быть использовано для визуализации собранных данных в сторонних приложениях, шаблоны консоли для визуализации нужных данных иконсольный клиент prometheus-cli.

Некоторое время проект разрабатывал собственный дашборд PromDash, но теперь он объявлен как deprecated, а сами разработчики рекомендуют для вывода графиков данных использовать систему анализа, визуализации и мониторинга Grafana [3], имеющую встроенную поддержку Prometheus (и не только).

Данные в Prometheus представляются в виде временных рядов c 64-битной точностью. Каждая метрика сохраняется в отдельный файл в виде имени и атрибутов:

<metric name>{<label name>=<label value>, ...}

Например:

per_cpu_pct_user{device="cpu9",host="Stage"} 2.56

Такое представление позволяет легко отбирать, обрабатывать данные и формировать отчеты. Метрики по умолчанию собираются с интервалом 10 минут, это снимает нагрузку с клиента, а так как не используется интерполяция данных (вычисляется случайная величина – квантиль), некоторые графики выглядят прямолинейными, хотя значения, в общем-то, чуть «гуляют». При необходимости это можно подстроить.

Информация от агентов передается при помощи HTTP. По умолчанию используется порт 9126, хотя в разных плагинах свой номер. То есть всегда можно просмотреть метрики при помощи curl (см. рис. 1):

$ curl http://localhost:9126/metrics

Рисунок 1. Метрики Prometheus

Рисунок 1. Метрики Prometheus

Кроме этого, проект предоставляет еще несколько элементов, в частности exporter, предназначенные для сбора метрик с хоста или определенных сервисов. Доступны для узла (node_exporter), MySQL, Memcached, HAProxy, Graphite, Consul, Blackbox, SNMP и других. Поддерживается агрегатор метрик StatsD, умеющий собирать метрики и хранить их в нужном формате. Компонент Alertmanager предназначен для оправки сообщений (email, PagerDuty, OpsGenie), кроме этого, есть плагин для Nagios. Еще один полезный компонент – Pushgateway является, по сути, прокси и позволяет собирать информацию от систем, включающихся в сеть периодически.

Написан на Go, доступны клиентские библиотеки, написанные на Go, Java, Python и Ruby и других языках. В сети очень легко найти клиентов сторонних разработчиков. Наверное, самым популярным из них является Telegraf [4] – приложение, позволяющее собирать данные с удаленного хоста и поддерживающее около 80 плагинов [5] для ввода метрик (Varnish, СУБД, Apache, nginx Docker, Kubernetes, logparser...). Изначально поддерживает метрики InfluxDB, которому передает их в корректном формате, но в комплекте 23 плагина вывода для самых разнообразных приложений (Prometheus, Elasticsearch, Graphite, OpenTSDB, файл...). И главное – плагины уже входят в состав Telegraf, т.е. нужно просто включить.

Большой плюс, что для подключения к Prometheus используется всего один порт, в который выводится информация со всех плагинов. Поэтому Telegraf проще в развертывании. К тому же он работает не только под Linux, но и подFree/Open/NetBSD, Windows, DragonFly и Darwin. Хотя некоторые плагины Telegraf (мне попался logparser, предназначенный для парсинга журналов) умеют отдавать данные только в стандарте InfluxDB, и, чтобы их видел Prometheus, выход необходимо доработать. Или как вариант использовать grok_exporter [7], который также умеет парсить журнал и формирует правильный для Prometheus вывод. Единственный его недостаток: он умеет парсить только один файл. Поэтому, если нужно проверять несколько журналов, придется использовать несколько процессов.

Статью целиком читайте в журнале «Системный администратор», №5 за 2017 г. на страницах 36-44.

PDF-версию данного номера можно приобрести в нашем магазине.


  1. Сайт Prometheus – http://prometheus.io.
  2. Язык запросов Prometheus – http://prometheus.io/docs/querying/basics.
  3. Проект Grafana – https://grafana.com.
  4. Документация Telegraf – https://docs.influxdata.com/telegraf/latest/introduction/getting_started.
  5. Плагины Telegraf – https://github.com/influxdata/telegraf/tree/master/plugins.
  6. Ссылка на GitHub Prometheus – https://github.com/prometheus.
  7. Плагин grok_exporter – https://github.com/fstab/grok_exporter.
  8. Плагины Grafana – https://grafana.com/plugins.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru