Начало работы с Grafana и Prometheus

Prometheus — система мониторинга с открытым исходным кодом, для которой Grafana предоставляет поддержку из коробки. В этой теме описываются шаги по созданию серии дашбордов в Grafana для отображения системных метрик сервера, отслеживаемого Prometheus.

Tip

Ознакомьтесь с нашими Learning Journeys по Prometheus.

Grafana и Prometheus:

  1. Скачайте Prometheus и Node exporter
  2. Установите Prometheus Node exporter
  3. Установите и настройте Prometheus
  4. Настройте Prometheus для Grafana
  5. Проверьте метрики Prometheus в представлении Explore в Grafana
  6. Начните создавать дашборды

Скачайте Prometheus и Node exporter

Скачайте следующие компоненты:

Как и Grafana, Prometheus можно установить во многих разных операционных системах. Список стабильных версий компонентов Prometheus см. на странице загрузки Prometheus.

Установите Prometheus Node exporter

Установите Node exporter на всех хостах, которые вы хотите отслеживать. В этом руководстве показано, как установить его локально.

Prometheus Node exporter — широко используемый инструмент, предоставляющий системные метрики. Инструкции по установке Node exporter см. в разделе Installing and running the Node exporter документации Prometheus.

Когда вы запустите Node exporter локально, перейдите по адресу http://localhost:9100/metrics, чтобы проверить, что он экспортирует метрики.

Note

Инструкции в упомянутой теме предназначены для пользователей Linux. В зависимости от вашей операционной системы инструкции, возможно, придётся немного изменить. Например, если вы работаете в Windows, используйте вместо этого windows_exporter.

Установите и настройте Prometheus

  1. После загрузки Prometheus распакуйте его и перейдите в каталог.

    tar xvfz prometheus-*.tar.gz
    cd prometheus-*
  2. Найдите файл prometheus.yml в каталоге.

  3. Измените файл конфигурации Prometheus, чтобы отслеживать хосты, на которых вы установили Node exporter.

По умолчанию Prometheus ищет файл prometheus.yml в текущем рабочем каталоге. Это поведение можно изменить с помощью флага командной строки --config.file. Например, некоторые установщики Prometheus используют его, чтобы задать файл конфигурации в /etc/prometheus/prometheus.yml.

В следующем примере показан код, который следует добавить. Обратите внимание, что цели статических конфигураций установлены в ['localhost:9100'], чтобы указать на node-exporter при локальном запуске.

 # A scrape configuration containing exactly one endpoint to scrape from Node exporter running on a host:
 scrape_configs:
     # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
     - job_name: 'node'

     # metrics_path defaults to '/metrics'
     # scheme defaults to 'http'.

       static_configs:
       - targets: ['localhost:9100']
  1. Запустите службу Prometheus:

     ./prometheus --config.file=./prometheus.yml
  2. Убедитесь, что Prometheus работает, перейдя по адресу http://localhost:9090.

Видно, что метрики Node exporter были доставлены в Prometheus. Далее метрики будут отправлены в Grafana.

Настройте Prometheus для Grafana

При локальном запуске Prometheus есть два способа настроить Prometheus для Grafana. Вы можете использовать размещённый экземпляр Grafana в Grafana Cloud или запустить Grafana локально.

В этом руководстве описывается настройка Prometheus в размещённом экземпляре Grafana в Grafana Cloud.

  1. Зарегистрируйтесь на https://grafana.com/. Grafana даёт вам экземпляр Prometheus из коробки.

Prometheus details in Grafana.com

  1. Поскольку вы запускаете собственный экземпляр Prometheus локально, необходимо выполнить remote_write ваших метрик в экземпляр Prometheus Grafana.com. Grafana предоставляет код для добавления в ваш файл конфигурации prometheus.yml. Он включает конечную точку remote write, ваше имя пользователя и пароль.

Добавьте следующий код в свой файл prometheus.yml, чтобы начать отправлять метрики в ваш размещённый экземпляр Grafana.

remote_write:
- url: <https://your-remote-write-endpoint>
  basic_auth:
    username: <your user name>
    password: <Your Grafana.com API Key>

Note

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

Устранение неполадок

Ниже приведены некоторые шаги по устранению неполадок, которые можно попробовать, если Prometheus не запущен или работает не так, как ожидается. Предлагаемые шаги выбраны на основе Learning Journeys, которые мы предлагаем для Prometheus. Если хотите изучить больше, ознакомьтесь с Prometheus Learning Journey, если хотите визуализировать данные в Grafana Cloud без отправки или хранения данных в Grafana Cloud, например для локального хранения. Либо, если у вас уже есть настроенный Prometheus и вы хотите изучить Grafana Cloud без существенных изменений, посетите Prometheus remote write learning journey.

1. Проверка, работает ли Prometheus

Если веб-интерфейс Prometheus недоступен (например, ошибка «Connection refused» в браузере) или запросы Prometheus завершаются сбоем (например, ошибки в Grafana вида «Data source unavailable» или «No data points»), хорошее место для начала — убедиться, что процесс и служба Prometheus запущены.

Сделать это можно, проверив системный процесс или статус службы:

Linux

Bash
sudo systemctl status prometheus
  • Показывает, запущен ли процесс и активна ли служба.

MacOS

Bash
pgrep prometheus
  • Возвращает идентификатор процесса (PID), если Prometheus запущен.

Windows (PowerShell)

powershell
Get-Process -Name prometheus -ErrorAction SilentlyContinue
  • Проверяет, запущен ли процесс Prometheus по имени.

2. Если Prometheus не запущен

Начните с проверки распространённых причин:

Проверьте конфликты портов.

Prometheus по умолчанию работает на порту 9090. Если этот порт занят другим процессом, Prometheus может не запуститься. Проверить конфликты портов можно так:

Linux и MacOS

Bash
lsof -i :9090

Windows (PowerShell)

powershell
netstat -ano | findstr :9090
  • Показывает, использует ли другой процесс порт 9090.

Проверьте размещение бинарных файлов Prometheus: убедитесь, что бинарные файлы Prometheus (prometheus и promtool) установлены правильно.

Linux и MacOS

Bash
ls /usr/local/bin/prometheus /usr/local/bin/promtool
  • Если файлы отсутствуют, переместите их в /usr/local/bin или в каталог из системной переменной PATH.

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

Bash
which prometheus
which promtool
  • Если вывод отсутствует, бинарные файлы не находятся в системной переменной PATH.

Убедитесь, что файлы конфигурации и данных на месте.

Linux и MacOs

Bash
ls /etc/prometheus /var/lib/prometheus
ls /etc/prometheus/prometheus.yml
  • Убеждается, что у Prometheus есть необходимые каталоги конфигурации и хранения данных.

Проверьте разрешения: если Prometheus работает под выделенным пользователем, убедитесь в правильном владельце:

Bash
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus

(Необязательно) Защитите Prometheus, создав выделенного пользователя

Bash
sudo useradd --no-create-home --shell /bin/false prometheus
  • Рекомендуется в целях безопасности: запускает Prometheus под пользователем без входа в систему.

3. Проверка, работает ли Prometheus как служба

Если Prometheus работает как процесс, проверьте, правильно ли он настроен и управляется как служба, чтобы он автоматически перезапускался после перезагрузки или сбоев.

Проверьте статус службы Prometheus

Linux

Bash
systemctl status prometheus.service

Windows

powershell
sc query prometheus

MacOs

Bash
pgrep prometheus
  • Если служба неактивна (dead) или остановлена, перейдите к следующим шагам.

4. Если Prometheus не работает как служба

Если Prometheus не работает как управляемая служба, убедитесь, что он правильно настроен и может перезапускаться автоматически.

Проверьте конфигурацию службы (Linux и MacOs)

Проверьте файл юнита службы, чтобы убедиться в правильности путей:

Bash
sudo nano /etc/systemd/system/prometheus.service
  • Найдите строку ExecStart:
Bash
ExecStart=/usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus/
  • Убедитесь, что:
    • путь к бинарному файлу (/usr/local/bin/prometheus) верен.
    • файл конфигурации (/etc/prometheus/prometheus.yml) на месте.
    • путь хранения (/var/lib/prometheus/) существует.

Перезапустите и включите службу Prometheus (Linux и MacOs)

Bash
sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus
sudo systemctl status prometheus

Проверьте состояние работоспособности Prometheus

После перезапуска проверьте, отвечает ли Prometheus:

Bash
curl -s http://localhost:9090/-/ready
  • Если успешно, это подтверждает, что Prometheus готов обслуживать запросы.

Перезапустите службу Prometheus (Windows)

Если он работает как служба Windows, перезапустите её:

powershell
net stop prometheus
net start prometheus

5. Проверка, собирает ли Prometheus метрики

Если вы установили Node exporter для предоставления системных метрик, можно проверить, собирает ли Prometheus метрики, отправив запрос к конечной точке /metrics.

Bash
curl http://localhost:9090/metrics
  • Он должен вернуть ряд метрик и метаданные о предоставляемых метриках.

Проверьте метрики Prometheus в Grafana Metrics Drilldown

В вашем экземпляре Grafana перейдите в представление Drilldown и опробуйте просмотр метрик, совместимых с Prometheus, без запросов.

Начните создавать дашборды

Теперь, когда у вас есть подобранный список запросов, создайте дашборды, чтобы отображать системные метрики, отслеживаемые Prometheus. Установив Prometheus и Node exporter или windows_exporter, вы найдёте рекомендуемые дашборды для использования.

На следующем изображении показан дашборд с тремя панелями, отображающими некоторые системные метрики.

Prometheus dashboards

Чтобы узнать больше: