Get Rewarded! We will reward you with up to €50 credit on your account for every tutorial that you write and we publish!

Установка и настройка стека метриков Prometherus

profile picture
Author
Florian Bauer
Published
2021-08-11
Time to read
6 minutes reading time

Введение

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

Этот туториал покрывает базывае шаги для запроса данных о производительности узла и отображения их на панели инструментов с помощью Grafana.

Требования к установке

  • 2x Сервера с Debian 10
  • Необходимо разрешить трафик через 9100 порт в iptables firewall или на облачном фаерволе для входящего трафика (INPUT chain) с узла с которого будут считываться метрики.
  • Необходимо разрешить трафик через 3000 порт в iptables firewall или на облачном фаерволе для входящего трафика (INPUT chain) на узле который будет считываться метрики.

Тестовая установка

2001:db8::1 node1.example.com
2001:db8::2 prometheus.example.com

Шаг 1 - Установка Node Exporter на наблюдаемый узел.

Стек Prometheus состоит из нескольких компонентов. Хранилище метрик - это сам Prometheus, который периодически собирает метрики с конечных точек http. Эти конечные точки могут быть предоставлены любым программным обеспечением. Вы можете ознакомиться со списком экспортеров и интеграцией здесь.

Для этого туториала, мы будем использовать node_exporter, чтобы получить основные системные показатели, такие как загрузка процессора, пропускная способность сети или показатели ввода-вывода с диска. Следующие команды устанавливают и настраивают цель (наблюдаемый узел).

apt update
apt install prometheus-node-exporter

Следующие команды используются для автоматического запуска и включения службы node_exporter после перезагрузки.

systemctl enable prometheus-node-exporter.service
systemctl start prometheus-node-exporter.service

Теперь конечная точка http экспортера должна прослушивать tcp-порт 9100. Любой http-клиент, такой как curl, может собирать метрики:

root@node1.example.com:~# curl [2001:db8::1]:9100/metrics

# HELP apt_upgrades_pending Apt package pending updates by origin.
# TYPE apt_upgrades_pending gauge
apt_upgrades_pending{arch="amd64",origin="Debian-Security:10/stable"} 8
# HELP node_filesystem_size_bytes Filesystem size in bytes.
# TYPE node_filesystem_size_bytes gauge
node_filesystem_size_bytes{device="/dev/sda1",fstype="ext4",mountpoint="/"} 1.9970912256e+10
node_filesystem_size_bytes{device="/dev/sda15",fstype="vfat",mountpoint="/boot/efi"} 1.2594176e+08
# HELP node_forks_total Total number of forks.
# TYPE node_forks_total counter
node_forks_total 90780
# HELP node_intr_total Total number of interrupts serviced.
# TYPE node_intr_total counter
node_intr_total 1.6144664e+07
# HELP node_load1 1m load average.
# TYPE node_load1 gauge
node_load1 0.09
# HELP node_arp_entries ARP entries by device
# TYPE node_arp_entries gauge
node_arp_entries{device="eth0"} 3

Шаг 2 - Установка сервера Prometheus на считывающий узел

Prometheus сервер используется для сбора метриков из Node Exporter(-ов) в временную базу данных называемой OpenTSDB. Его можно установить следуя командам:

apt update
apt install prometheus jq

Сервер Prometheus должен быть настроен так, чтобы знать адрес наблюдаемого узла для получения Node Exporter метриков. Добавьте следующее описание задачи в разделе scrape_configs в файле /etc/prometheus/prometheus.yml.

scrape_configs:
  - job_name: 'node_exporter at node1'
    static_configs:
      - targets: ['node1.example.com:9100']
  • job_name читаемое название для задачи
  • static_configs содержит настройки для узла с статичными IPs адресами
  • targets в содержит массив <host>:<port> для подключения к наблюдаемым серверам

Наконец перезагрузите сервис Prometheus чтобы принять новые настройки.

systemctl reload prometheus.service

Команда systemctl status prometheus подтверждает успешную перезагрузку сервиса.

Чтобы просмотреть статус целей мониторинга, вы можете выполнить следующую команду:

root@prometheus.example.com:~# curl --silent 127.0.0.1:9090/api/v1/targets | jq -r '.data.activeTargets[]|.scrapeUrl,.health,.lastError'

Результат должен выглядеть следующим образом:

http://node1.example.com:9100/metrics
up

Шаг 3 - Установка панели Grafana на считывающий узел

Prometheus сервер продолжает собирать метрики для нашего сетевого узла, данные храняться 15 дней. Есть несколько способов отображать метрики. Широко используемый способ - настроить Grafana, который представляет собой сервер информационной панели для нескольких источников данных.

Включите репозиторий Grafana и установите Grafana на prometheus.example.com с помощью следующих команд:

apt install apt-transport-https software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | apt-key add -
echo "deb https://apt.grafana.com stable main" > /etc/apt/sources.list.d/grafana.list

apt update
apt install grafana

Наконец, включите и запустите службу Grafana:

systemctl enable grafana-server.service
systemctl start grafana-server.service

Шаг 4 - Настройка источника данных и панели мониторинга в Grafana

Grafana предоставляем веб интерфейс. Пожалуйста, обратите внимание, что наша настройка Grafana на данном этапе небезопасна. Поэтому будьте осторожны, чтобы использовать только учетные данные для тестирования, пока соединение между вашим браузером и сервером панели мониторинга не является безопасным.

Вы можете получить доступ к интерфейсу, перейдя по ссылке:

http://prometheus.example.com:3000/

Данные для входа по умолчанию следующие:

  • Username: admin
  • Password: admin

После входа, вас попросят сменить пароль.

В этом состоянии источник данных или панель мониторинга не настроены. Сначала добавьте источник данных.

Grafana: "Configuration" menu with selected "Data sources" menuitem

Выберите тип источника данных Prometheus и введите http://localhost:9090 в поле URL. После этого нажмите кнопку Save & test, чтобы создать источник данных.

Есть два варианта создания информационных панелей. Вы можете создать каждую панель индивидуально или импортировать заданную панель из сообщества. Хорошую панель для отображения метриков node_exporter вы можете найти тут.

Скопируйте ID для импорта в Grafana.

Grafana: "Dashboards" menu with selected "+ Import" menuitem

Нажмите кнопку + Import и вставьте заранее скопированный ID и нажмите Load. Вам необходимо выбрать источник данных Prometheus для панели мониторинга:

Grafana: Import dashboard "Node Exporter Full"

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

Grafana: "Node Exporter Full" dashboard with data

Вывод

Теперь вы настроили стек Prometheus и можете отслеживать один узел. Эта настройка позволяет отслеживать большее количество узлов/служб.

Пожалуйста, рассмотрите возможность применения обратного прокси-сервера с поддержкой SSL перед интерфейсом Grafana, как описано в этой статье в разделе "Шаг 5 - Установка Nginx".

Когда вы редактируете prometheus.yml чтобы добавить новое задание в раздел scrape_configs, вы можете не только использовать параметр static_configs для получения информации с определенного хоста. Вместо этого вы также могли бы использовать один из официальных механизмов обнаружения служб доступно для Prometheus. С помощью этого метода Prometheus динамически обнаружит все доступные хосты и автоматически добавит их в качестве целевых. Чтобы узнать, как динамически добавлять целевые объекты выделенного и облачного серверов Hetzner из вашей учетной записи Hetzner, обратитесь к нашей статье Prometheus Service Discovery.

License: MIT
Want to contribute?

Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!

Report Issue
Try Hetzner Cloud

Get €20/$20 free credit!

Valid until: 31 December 2024 Valid for: 3 months and only for new customers
Get started
Want to contribute?

Get Rewarded: Get up to €50 credit on your account for every tutorial you write and we publish!

Find out more