Мониторинг сервера CentOS 7 с помощью Prometheus

Prometheus – это система мониторинга, разработанная SoundCloud. Как и другие системы мониторинга (например, InfluxDB или Graphite), Prometheus хранит данные в темпоральной базе данных. Кроме того, Prometheus предоставляет многомерную модель данных и мощный язык запросов, позволяющий системным администраторам быстро выполнить тонкую настройку метрик.

Также Prometheus включает PromDash (браузерный инструмент для разработки пользовательских панелей мониторинга), AlertManager (инструмент, отправляющий извещения и предупреждения на электронную почту), Flowdock, Slack, HipChat и т.п.

Данное руководство поможет установить Prometheus Server, Node Exporter и PromDash, настроить их и запустить мониторинг сервера.

Требования

  • Сервер CentOS 7 с 64-битной архитектурой.
  • Пользователь с доступом к sudo.

1: Установка сервера Prometheus

Создайте новый каталог для хранения файлов Prometheus и откройте его:

mkdir ~/Downloads
cd ~/Downloads

Загрузите последний пакет сервера Prometheus и темпоральной БД с GitHub:

curl -LO "https://github.com/prometheus/prometheus/releases/download/0.16.0/prometheus-0.16.0.linux-amd64.tar.gz"

Система мониторинга Prometheus состоит из нескольких компонентов, каждый из которых нужно установить отдельно. Рекомендуется хранить все компоненты в одном родительском каталоге; создайте такой каталог.

mkdir ~/Prometheus

Откройте его:

cd ~/Prometheus

Распакуйте архив:

tar -xvzf ~/Downloads/prometheus-0.16.0.linux-amd64.tar.gz

Установка Prometheus завершена, теперь убедитесь, что она прошла успешно. Запросите версию пакета:

~/Prometheus/prometheus-0.16.0.linux-amd64/prometheus -version

На экране появится:

prometheus, version 0.16.0 (branch: HEAD, revision: dcb8ba4)
build user:       julius@desktop
build date:       20151009-23:51:17
go version:       1.5.1

2: Установка Node Exporter

Prometheus предназначен для мониторинга веб-сервисов. Чтобы отслеживать метрики сервера Ubuntu, нужно установить инструмент под названием Node Exporter. Node Exporter экспортирует различные метрики (например, статистику I/O, нагрузку CPU, использование памяти, сетевую статистику и многое другое) в формате, понятном программе Prometheus.

Создайте новый каталог node_exporter в каталоге Prometheus и откройте его:

Откройте каталог Downloads и загрузите последнюю сборку Node Exporter с GitHub.

cd ~/Downloads && curl -LO "https://github.com/prometheus/node_exporter/releases/download/0.11.0/node_exporter-0.11.0.linux-amd64.tar.gz"

Создайте новый каталог node_exporter в каталоге Prometheus и откройте его:

mkdir ~/Prometheus/node_exporter
cd ~/Prometheus/node_exporter

Распакуйте node_exporter-0.11.0.linux-amd64.tar.gz:

tar -xvzf ~/Downloads/node_exporter-0.11.0.linux-amd64.tar.gz

3: Node Exporter как сервис

Теперь нужно включить Node Exporter как сервис.

Создайте конфигурационный файл node_exporter.service.

sudo vi /etc/systemd/system/node_exporter.service

В этот файл нужно поместить путь к файлу node_exporter и указать пользователя, который должен его запускать.

[Unit] Description=Node Exporter
[Service] User=prometheus
ExecStart=/home/prometheus/Prometheus/node_exporter/node_exporter
[Install] WantedBy=default.target

Сохраните и закройте файл.

Перезапустите systemd:

sudo systemctl daemon-reload

На данном этапе инструмент Node Exporter доступен как сервис, его можно запускать с помощью команды systemctl. Включите его, и он будет автоматически запускаться во время запуска сервера.

sudo systemctl enable node_exporter.service

Теперь можно перезагрузить сервер или запустить сервис вручную при помощи команды:

sudo systemctl start node_exporter.service

Запустив Node Exporter, используйте браузер, чтобы просмотреть веб-интерфейс по ссылке:

http://your_server_ip:9100/metrics

На экране появится страница с объёмным выводом:

# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0.00023853100000000002
go_gc_duration_seconds{quantile="0.25"} 0.00023998700000000002
go_gc_duration_seconds{quantile="0.5"} 0.00028122
. . .

4: Запуск сервера Prometheus

Откройте каталог, в котором хранится установка Prometheus:

cd ~/Prometheus/prometheus-0.16.0.linux-amd64

Прежде чем запустить Prometheus, создайте конфигурационный файл prometheus.yml.

vi ~/Prometheus/prometheus-0.16.0.linux-amd64/prometheus.yml

Скопируйте и вставьте в файл:

scrape_configs:
- job_name: "node"
scrape_interval: "15s"
target_groups:
- targets: ['localhost:9100']

Этот код создаёт раздел scrape_configs и определяет job. Строка targets содержит адрес веб-интерфейса Node Exporter. Параметр scrape_interval задаёт интервал, по истечении которого Prometheus будет собирать данные (в данном случае – каждые 15 секунд).

Примечание: Выбрать имя для job можно любое, однако если job называется node, вы можете использовать стандартные шаблоны консоли Node Exporter.

Сохраните файл и закройте его.

Запустите сервер Prometheus в фоновом режиме:

nohup ./prometheus > prometheus.log 2>&1 &

Вывод Prometheus переадресован в файл prometheus.log. Чтобы просмотреть несколько последних строк, используйте tail:

tail ~/Prometheus/prometheus-0.16.0.linux-amd64/prometheus.log

Когда сервер будет готов, в файле появятся следующие строки:

INFO[0000] Starting target manager...         file=targetmanager.go line=75
INFO[0000] Listening on :9090                 file=web.go line=118

Откройте домашнюю страницу Prometheus в браузере:

http://your_server_ip:9090

Чтобы убедиться в том, что Prometheus собирает данные Node Exporter, откройте вкладку Graph в верхней панели. На появившейся странице в поле Expression нужно указать название метрики (к примеру, node_procs_running). После этого нажмите Execute. Кликните Graph (рядом с Console). На экране появится график для заданной метрики.

Prometheus предоставляет шаблоны консоли, которые позволяют просматривать графики нескольких наиболее часто используемых метрик. Эти шаблоны консоли доступны только если в job_name вы указали node.

Чтобы получить доступ к Node Console и просмотреть метрику сервера, перейдите по ссылке:

http://your_server_ip:9090/consoles/node.html

и кликните localhost:9100.

5: Установка PromDash

Сервер Prometheus позволяет просматривать графики и настраивать выражения, но, как правило, он используется только для отладки или для запуска одноразовых запросов. Для визуализации данных Prometheus  рекомендуется использовать PromDash, инструмент, который позволяет создавать собственные информационные панели, которые можно настраивать согласно вашим требованиям.

Откройте каталог Prometheus:

cd ~/Prometheus

PromDash – это приложение Ruby on Rails, исходные файлы можно найти на GitHub. Чтобы запустить это приложение, нужно установить ряд зависимостей: Git, Ruby и инструменты сборки. Для этого используйте пакетный менеджер системы:

sudo yum install git ruby ruby-devel sqlite-devel zlib-devel gcc gcc-c++ automake patch

Чтобы загрузить файлы, используйте git:

git clone https://github.com/prometheus/promdash.git

Откройте каталог promdash:

cd ~/Prometheus/promdash

PromDash зависит от нескольких gem-ов Ruby. Чтобы автоматизировать их установку, установите сначала bundler:

gem install bundler

Теперь при помощи bundle установите все необходимые PromDash gem-ы Ruby. В данном руководстве PromDash будет работать с SQLite3, потому нужно исключить gem-ы для MySQL и PostgreSQL при помощи параметра –without.

bundle install --without mysql postgresql

На выполнение команды уйдёт несколько минут. После завершения вы увидите:

. . .
Your bundle is complete!
Gems in the groups mysql and postgresql were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

6: Настройка окружения Rails

Создайте каталог для хранения баз данных SQLite3, предназначенных для PromDash:

mkdir ~/Prometheus/databases

PromDash определяет имя базы данных при помощи переменной среды DATABASE_URL. Чтобы создать базу данных SQLite3 для PromDash под названием mydb.sqlite3 в каталоге databases, введите:

echo "export DATABASE_URL=sqlite3:$HOME/Prometheus/databases/mydb.sqlite3" >> ~/.bashrc

В этом руководстве PromDash находится в рабочем режиме, потому нужно установить переменную окружения RAILS_ENV со значением production.

echo "export RAILS_ENV=production" >> ~/.bashrc

Чтобы активировать изменения, введите:

. ~/.bashrc

Создайте таблицы PromDash в БД SQLite3 при помощи инструмента rake:

rake db:migrate

PromDash использует Rails Asset Pipeline, потому все ресурсы проекта PromDash (CSS-файлы, изображения, файлы Javascript) должны быть предварительно скомпилированы. Для этого наберите:

rake assets:precompile

7: Запуск и настройка PromDash

PromDash работает на легковесном сервере Thin. Запустите сервер как демон:

bundle exec thin start -d

Подождите несколько секунд, пока сервер запустится, и посетите домашнюю страницу PromDash:

http://your_server_ip:3000/

Прежде чем приступить к созданию панели инструментов, нужно предоставить PromDash URL-адрес сервера Prometheus. Для этого кликните Servers → New Server и введите имя сервера Prometheus. В поле Url укажите:

http://your_server_ip:9090

В Server type укажите Prometheus.

Нажмите Create Server, чтобы скомпилировать настройки. На странице появится сообщение:

Server was successfully created.

8: Создание дашборда

Дашборды Promdash должны храниться в каталоге Promdash. Чтобы создать новый каталог, нажмите New Directory. На экране появится форма, в которой нужно указать имя каталога (например, My Dashboards) и нажать Create Directory.

После этого программа вернёт вас на домашнюю страницу. Нажмите New Dashboard, в появившейся форме укажите название дашборд (например, Simple Dashboard) и выберите только что созданный каталог в выпадающем меню.

После этого у вас появится новый дашборд.

В нем уже есть один график, но его нужно настроить. Наведите курсор на название графика (по умолчанию Title), и вы увидите различные иконки, которые позволяют настроить график. Чтобы переименовать график, выберите Graph and Axis Settings и введите новое имя в поле Graph Title.

Параметр Datasources позволяет добавить в график новые выражения. Нажмите Add Expression и в поле Enter Expression введите node_procs_running.

Нажмите Refresh (последняя иконка слева), чтобы обновить график. Теперь у вас есть один полностью настроенный график. Чтобы добавить новые графики, нажмите Add Graph.

Изменив настройки, нажмите кнопку Save Changes (справа). Теперь на домашней странице PromDash появится ссылка на дашборд.

Заключение

Теперь на сервере CentOS 7 есть полностью готовая экосистема Prometheus. Также вы можете использовать PromDash для создания пользовательских дашбордов.

Даже если все компоненты установлены на одной машине Ubuntu, вы можете мониторить другие машины; для этого нужно установить Node Exporter на каждую такую машину, а затем добавить URL-адреса установок Node Exporter в массив targets в файле prometheus.yml

Больше информации о Prometheus можно получить в документации проекта.

Tags: ,

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