Вебинар, 03.08 в 19:00 free
Учим создавать сайт, который увеличит продажи в 5 раз

Как установить Prometheus на Ubuntu 16.04. Часть 2

Обсудить

 Prometheus на Ubuntu Ссылка на 1 часть.

Шаг 5: загрузка Node Exporter

Для того чтобы Prometheus показывал больше метрик, чем задумано изначально, необходимо установить экспортер Node Exporter. Он показывает детальную информацию о системе, включая данные о процессоре и использовании памяти.

Для начала скачайте текущую стабильную версию Node Exporter в вашу домашнюю директорию. Последнюю версию (вместе с контрольной суммой) вы можете найти на странице загрузки.

$ cd ~
$ curl -LO https://github.com/prometheus/node_exporter/releases/download/v0.14.0/node_exporter-0.15.0.linux-amd64.tar.gz

Используйте команду sha256sum для того, чтобы сгенерировать контрольную сумму для загруженного файла:

$ sha256sum node_exporter-0.15.0.linux-amd64.tar.gz

Убедитесь, что контрольная сумма совпадает с той, которая указана на странице загрузки.

9413b3c94dbe9d4341ce85ea7e3f0e20abb8804135b8c236c4440c2c841551d7 node_exporter-0.15.0.linux-amd64.tar.gz

Если суммы не совпадают, удалите загруженный файл и повторите загрузку заново.

Теперь распакуйте загруженный архив.

$ tar xvf node_exporter-0.15.0.linux-amd64.tar.gz

У вас появится директория под названием node_exporter-0.15.0.linux-amd64, в которой будет находиться бинарный файл node_exporter и некоторые другие файлы.

Скопируйте бинарный файл в директорию /usr/local/bin и передайте права пользователю node_exporter, который был создан в 1 шаге 1 части статьи.

$ sudo cp node_exporter-0.15.0.linux-amd64/node_exporter /usr/local/bin
$ sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

Наконец, удалите оставшиеся файлы из домашней директории, так как больше они не понадобятся.

$ rm -rf node_exporter-0.15.0.linux-amd64.tar.gz node_exporter-0.15.0.linux-amd64

Теперь у вас есть установленный экспортер Node Exporter, далее нужно будет протестировать и запустить его.

Шаг 6: запуск Node Exporter

Действия, которые нужно выполнить для запуска Node Exporter, похожи на те, которые необходимо выполнить для того, чтобы запустить Prometheus. Начните с создания служебного файла Systemd для Node Exporter.

$ sudo nano /etc/systemd/system/node_exporter.service

Этот файл сообщит системе, что Node Exporter нужно запускать с пользователем node_exporter и установленным по умолчанию количеством коллекторов.

Скопируйте следующую информацию в служебный файл:

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

Коллекторы определяют, какие метрики Node Exporter будет собирать. В README файле Node Exporter вы можете посмотреть полный список коллекторов, как тех, которые включены по умолчанию, так и тех, которые выключены.

Для того, чтобы переписать установленный список коллекторов, нужно использовать ключ --collectors.enabled:

...
ExecStart=/usr/local/bin/node_exporter --collectors.enabled meminfo,loadavg,filesystem
...

В примере выше Node Exporter будет собирать метрики, используя только коллекторы meminfo, loadavg and filesystem. Вы можете добавлять или убирать из списка то количество коллекторов, которое вам нужно, но обратите внимание, что ни перед, ни после запятых не должно быть пробелов.

Сохраните и закройте текстовый редактор.

Перезагрузите systemd для того, чтобы использовать только что созданную службу.

$ sudo systemctl daemon-reload

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

$ sudo systemctl start node_exporter

Убедитесь, что экспортер работает корректно, используя команду status:

$ sudo systemctl status node_exporter

В выводе вы увидите статус Node Exporter, идентификатор процесса (PID), использование памяти и другие данные.

Если статус службы не active, следуйте инструкциям на экране для того, чтобы исправить ошибку перед тем, как двигаться дальше.

● node_exporter.service - Node Exporter
 Loaded: loaded (/etc/systemd/system/node_exporter.service; disabled; vendor preset: enabled)
 Active: active (running) since Fri 2017-07-21 11:44:46 UTC; 5s ago
Main PID: 2161 (node_exporter)
 Tasks: 3
 Memory: 1.4M
 CPU: 11ms
 CGroup: /system.slice/node_exporter.service

Наконец, нужно сделать так, чтобы служба запускалась сразу после запуска системы.

$ sudo systemctl enable node_exporter

Теперь, когда Node Exporter полностью настроен и работает так, как предполагается, перейдем к тому, как настроить Prometheus для сбора новых данных.

Шаг 7: настройка Prometheus для использования Node Exporter

Так как Prometheus собирает данные только тех экспортеров, которые указаны в scrape_configs в конфигурационном файле, то необходимо добавить туда Node Exporter (точно так же, как был добавлен сам Prometheus ранее).

Откройте конфигурационный файл:

$ sudo nano /etc/prometheus/prometheus.yml

В конце блока scrape_configs добавьте новую запись под названием node_exporter:

...
 - job_name: 'node_exporter'
 scrape_interval: 5s
 static_configs:
 - targets: ['localhost:9100']

Так как этот экспортер работает на том же сервере, где и сам Prometheus, вместо IP-адреса можно использовать localhost с портом 9100, который Node Exporter имеет по умолчанию.

Ваш конфигурационный файл будет выглядеть следующим образом:

global:
 scrape_interval: 15s

scrape_configs:
 - job_name: 'prometheus'
 scrape_interval: 5s
 static_configs:
 - targets: ['localhost:9090']
 - job_name: 'node_exporter'
 scrape_interval: 5s
 static_configs:
 - targets: ['localhost:9100'] 

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

Теперь перезапустите Prometheus для того, чтобы изменения вступили в силу.

$ sudo systemctl restart prometheus

Еще раз убедитесь, что все работает корректно, используя команду status:

$ sudo systemctl status prometheus

Вывод должен быть примерно таким:

● prometheus.service - Prometheus
 Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: enabled)
 Active: active (running) since Fri 2017-07-21 11:46:39 UTC; 6s ago
 Main PID: 2219 (prometheus)
 Tasks: 6
 Memory: 19.9M
 CPU: 433ms
 CGroup: /system.slice/prometheus.service

Теперь у вас есть установленные, настроенные и работающие Prometheus и Node Exporter. Следующий шаг – настройка безопасности для того, чтобы несанкционированные пользователи не могли получить доступ к вашим данным.

Шаг 8: защита Prometheus

Prometheus не имеет встроенной системы защиты. С одной стороны, это говорит о том, что это гибкая система, которая имеет совсем немного ограничений; с другой стороны, это значит, что вам нужно убедиться, что ваши данные (и установленная служба в целом) достаточно защищены.

Далее вы узнаете, как при помощи Nginx добавить базовую HTTP-авторизацию, которую полностью поддерживают Prometheus и предпочтительная графическая оболочка Grafana.

Начните с установки apache2-utils; это даст доступ к утилите htpasswd для генерации файлов паролей.

$ sudo apt-get update
$ sudo apt-get install apache2-utils

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

Примечание. htpasswd попросит ввести и подтвердить пароль, который вы будете использовать с этим пользователем. Обязательно запомните имя пользователя и пароль, которые вы введете на этом этапе, так как они понадобятся для авторизации в Prometheus в следующем шаге.

$ sudo htpasswd -c /etc/nginx/.htpasswd username

В результате у вас появится файл .htpasswd, расположенный в директории /etc/nginx. В нем будут записаны имя пользователя и хэшированная версия заданного пароля.

Теперь надо настроить Nginx для использования только что созданных паролей.

Сначала сделайте копию конфигурационного файла Nginx, которая будет использоваться специально для Prometheus. Это нужно для того, чтобы вернуться к первоначальным настройкам при возникновении проблемы.

$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/prometheus

Теперь откройте новый конфигурационный файл.

sudo nano /etc/nginx/sites-available/prometheus
Найдите блок location / (он расположен под блоком server). Он должен выглядеть вот так:
...
 location / {
 try_files $uri $uri/ =404;
 }
...

Так как весь трафик будет перенаправлен в Prometheus, вставьте вместо директивы try_files следующее:

...
 location / {
 auth_basic "Prometheus server authentication";
 auth_basic_user_file /etc/nginx/.htpasswd;
 proxy_pass http://localhost:9090;
 proxy_http_version 1.1;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection 'upgrade';
 proxy_set_header Host $host;
 proxy_cache_bypass $http_upgrade;
 }
...

Эти настройки означают, что теперь пользователям нужно будет авторизовываться перед началом каждой новой сессии. А обратный прокси будет направлять все запросы этого блока в Prometheus.
После изменений сохраните и закройте текстовый редактор.

Теперь нужно деактивировать изначальный конфигурационный файл Nginx и активировать новый конфигурационный файл:

$ sudo rm /etc/nginx/sites-enabled/default
$ sudo ln -s /etc/nginx/sites-available/prometheus /etc/nginx/sites-enabled/

Перед перезагрузкой Nginx проверьте, нет ли каких-нибудь ошибок в конфигурационном файле:

$ sudo nginx -t

В выводе вы должны увидеть, что syntax is ok и test is successful. Если вы увидите сообщение об ошибке, следуйте инструкции на экране для того, чтобы исправить ее до того, как перейти к дальнейшим действиям.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Теперь перезагрузите Nginx для того, чтобы все изменения вступили в силу.

$ sudo systemctl reload nginx

Убедитесь, что Nginx запущен и работает.

$ sudo systemctl status nginx

Вывод должен быть примерно таким:

● nginx.service - A high performance web server and a reverse proxy server
 Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
 Active: active (running) since Mon 2017-07-31 21:20:57 UTC; 12min ago
 Process: 4302 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s r
 Main PID: 3053 (nginx)
 Tasks: 2
 Memory: 3.6M
 CPU: 56ms
 CGroup: /system.slice/nginx.service

Теперь у вас есть работающий и защищенный Prometheus сервер, поэтому остается только подключиться к веб-интерфейсу и посмотреть данные.

Шаг 9: тестирование Prometheus

У Prometheus есть базовый веб-интерфейс для отслеживания его статуса и статуса экспортеров. Однако так как этот интерфейс очень простой, команда Prometheus рекомендует установить и использовать Grafana для любых действий, которые сложнее тестирования и отладки программы.

Однако в данном руководстве я буду использовать изначальный веб-интерфейс.

Начните с ввода в браузере IP-адреса вашего сервера: http://IP-адрес сервера.

В окне авторизации введите имя пользователя и пароль, которые вы задали ранее в шаге 8. Авторизация в Prometheus на Ubuntu 16.04

После того, как вы авторизуетесь, вы увидите страницу, где вы можете выполнять и визуализировать различные запросы. Prometheus на Ubuntu 16.04 Execute

Перед выполнением выражения проверьте статус Prometheus и Node Explorer, выбрав Status в меню наверху экрана и затем Targets. Так как вы настроили ранее, чтобы данные собирались и с Prometheus, и с Node Exporter, вы должны увидеть обе цели в статусе UP.Цели  Prometheus

Если один из экспортеров отсутствует, или у него сообщение об ошибке, проверьте статусы следующими командами:

$ sudo systemctl status prometheus
$ sudo systemctl status node_exporter

В выводе вы должны увидеть статус Active: active (running). Если это не так, обязательно исправьте ошибку перед тем, как двигаться дальше.

Теперь нужно выполнить несколько выражений, касающихся Node Exporter.

Нажмите на Graph в верхнем меню для того, чтобы вернуться на начальную страницу.Graph Prometheus

В поле Expression введите node_memory_MemAvailable и нажмите кнопку Execute для того, чтобы обновить вкладку Console и увидеть доступное количество памяти.Expression node_memory_MemAvailable

По умолчанию Node Exporter показывает количество в байтах. Для того, чтобы конвертировать их в мегабайты, необходимо два раза использовать деление на 1024.

Поэтому в поле Expression введите node_memory_MemAvailable/1024/1024 и снова нажмите кнопку Execute.node_memory_MemAvailable/1024/1024

Теперь вы увидите результат в мегабайтах.

Если вы хотите проверить результат, выполните команду free в своем терминале (флаг –h выведет результат в мегабайтах).

$ free -h

В выводе вы увидите информацию об использовании памяти, в том числе о доступной памяти в колонке available:

total used free shared buff/cache available
Mem: 488M 144M 17M 3.7M 326M 324M
Swap: 0B 0B 0B

В дополнение к базовым операциям язык запросов Prometheus также дает возможность использовать множество функций для работы с результатами.

В поле Expression введите avg_over_time(node_memory_MemAvailable[5m])/1024/1024 и нажмите кнопку Execute. Вы увидите среднее количество доступной памяти в последние 5 минут в мегабайтах.avg_over_time(node_memory_MemAvailable[5m])

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

Если навести мышку на определенную точку, то вы увидите дополнительную информацию.

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

Заключение

Из двух частей этого руководства вы узнали, как загрузить, установить, настроить, защитить и протестировать Prometheus с одним дополнительным экспортером.

Для того, чтобы узнать, что еще может делать Prometheus, читайте официальную документацию.

Также советую посмотреть список доступных экспортеров и официальный сайт Grafana.

VDS Timeweb

Комментарии

С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
С помощью соцсетей
У меня уже есть аккаунт Войти
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта