Мониторинг ваших узлов с помощью Prometheus
Мониторинг системы и приложений - актуальная тема в наше время, и не зря. Те небольшие числа, которые вы собираете с вашей системы и приложений, могут долго объяснять причины многих проблем. Существует множество инструментов, которые помогают нам достичь наших целей по мониторингу системы и сбору метрик с них. Когда у вас есть так много вариантов, становится сложно выбрать, какой инструмент выбрать.
Во время работы в команде по инженерии производительности и масштабированию в Red Hat, мы много экспериментировали с различными инструментами, доступными для мониторинга систем и приложений и сбора собранных метрик с них. Этот пост направлен на то, чтобы документировать, как мы можем использовать Prometheus для мониторинга наших систем.
Преимущества выбора пути Prometheus
Использование Prometheus в качестве системы мониторинга предоставляет несколько преимуществ, некоторые из них:
- Prometheus предоставляет полный пакет для хранения, анализа и оповещения о собранных метриках.
- Модель данных Prometheus позволяет углубиться до отдельных экземпляров.
- Он оказывается полезным для хранения данных, собранных в нерегулярные промежутки времени.
- Позволяет настроить высокодоступную архитектуру с использованием Prometheus.
Prometheus также предоставляет встроенную панель инструментов, которая может использоваться для просмотра собранных метрик и их графического представления. Добавление простого языка запросов придает этому дополнительное преимущество.
Итак, не тратя много времени, давайте посмотрим, как мы можем развернуть Prometheus и использовать его для мониторинга наших узлов.
Развертывание Prometheus
Для RHEL и любого другого дистрибутива на основе RPM, я рекомендую установить Prometheus из tar-архива, предоставленного на официальном сайте Prometheus. В этом посте мы развернем Prometheus 2.1.
Для настройки Prometheus сначала нам нужно получить пакет Prometheus. Для этого посетите страницу Загрузки Prometheus и получите пакет, который вы хотите установить.
Предположим, что вы загрузили tar-архив пакета Prometheus 2.1.0, следующим шагом будет извлечение файлов из tar-архива и помещение их в одну директорию:
tar -xvzf prometheus-2.1.0.linux-amd64.tar.gz
После извлечения файлов у вас будет исполняемый файл prometheus, а также файл конфигурации и несколько других директорий.
Теперь следующее, что нам нужно сделать, это настроить Prometheus. По умолчанию Prometheus поставляется с файлом конфигурации по умолчанию с именем prometheus.yml. Как следует из расширения, файл конфигурации использует формат YAML для указания настроек.
Быстро просмотрев настройки, вот несколько настроек, которые нас интересуют прямо сейчас:
- scrape_interval: Это значение определяет, с какой частотой Prometheus должен собирать метрики с целей. В зависимости от количества узлов и типа собираемых метрик, вам может потребоваться настроить это значение.
- scrape_configs: Этот раздел определяет настройки для целей, которые должны быть собраны, и параметры, которые контролируют, как цели собираются.
Если вы просто хотите увидеть Prometheus в действии, раскомментируйте строки в разделе scrape_configs, чтобы он выглядел так:
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
Это настроит Prometheus для мониторинга очень важного (на самом деле нет :P) приложения (самого себя). Но прежде чем перейти к тому, как запустить Prometheus с этим файлом конфигурации, я хотел бы немного объяснить, что находится внутри раздела scrape_configs. Обычно раздел конфигурации сбора будет содержать как минимум следующее:
- job_name: Имя задания, по которому группируется сбор метрик целей.
- static_configs: Определяет параметры о целях, которые должны быть собраны статически. Prometheus также поддерживает динамическое обнаружение целей, но мы не фокусируемся на этом параметре в этом посте.
- targets: Это список пар hostname:port, которые определяют конечные точки, которые Prometheus будет собирать метрики.
Теперь, когда я рассмотрел основные термины, давайте посмотрим, как запустить Prometheus :D
Чтобы запустить Prometheus, выполните следующую команду из папки, в которой был извлечен Prometheus:
./prometheus --config.file=prometheus.yml
И... вы готовы. Теперь Prometheus запущен, и у вас есть веб-интерфейс.
Перейдите в браузере по адресу hostname:9090, чтобы увидеть простой интерфейс Prometheus.
Теперь, чтобы увидеть некоторые визуализации данных, которые собираются, выполните следующие шаги:
- Нажмите на "Graph"
- Выберите метрику из выпадающего списка
- Нажмите "Execute"
И вы готовы :)
Куда идти дальше
На данный момент мы уже развернули и настроили Prometheus для мониторинга... самого себя!!! Но Prometheus может выполнять гораздо более полезные задачи, кроме мониторинга самого себя. И вот здесь появляется концепция экспортеров, которые обеспечивают интеграцию с другими инструментами. Экспортеры обычно написаны с использованием клиентских библиотек Prometheus и работают независимо. Эти экспортеры предоставляют данные, собранные ими, через заранее настроенные конечные точки, с которых Prometheus может затем собирать эти данные.
Чтобы ознакомиться с тем, какие экспортеры уже существуют, перейдите по этой ссылке, где вы можете найти список уже разработанных экспортеров. Если на данный момент нет экспортера, который подходит для вашего случая использования, не стесняйтесь и разработайте свой собственный. Руководство по разработке можно найти по этой ссылке.
Счастливого мониторинга!
Оригинальная публикация на сайте Saurabh Badhwar._