Тариф успешно добавлен в корзину
В корзину
url image

Мониторинг инфраструктуры с Prometheus и Grafana: установка, визуализация, алерты

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

Грамотно настроенный мониторинг помогает предотвращать появление таких проблем и существенно сокращать время на их устранение. И здесь на помощь приходят Prometheus и Grafana — популярные инструменты для мониторинга.

Что такое Prometheus

Prometheus — система мониторинга, которая опрашивает серверы по HTTP и собирает метрики: например, показатели скорости загрузки CPU, памяти, количестве запросов, времени ответа и др. Данные сервис сохраняет в базе, чтобы анализировать динамику состояния системы.

Чтобы Prometheus мог собирать метрики, приложения должны отдавать данные в понятном сервису формате. Для этого сервис использует экспортеры (exporters) — специальные приложения-адаптеры, которые собирают данные с целевого сервиса, преобразуют их и отдают по HTTP. Существует большое количество готовых экспортеров, предназначенных для сбора метрик из определенного источника, например операционной системы, базы данных, веб-сервера. Их каталог представлен здесь

Prometheus собирает данные с экспортеров в единое хранилище, централизованно контролируя состояние всей инфраструктуры.

Схема сбора данных c помощью Prometheus

Основные преимущества Prometheus:

  • высокая производительность;
  • удобный язык запросов PromQL;
  • простая интеграция с различными сервисами (операционными системами, приложениями, базами данных и веб-серверами и т.д.);
  • развитая экосистема экспортеров;
  • поддержка алертов.

Что такое Grafana 

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

Итак, связка Prometheus и Grafana строится по достаточно простой схеме:

  1. Экспортеры собирают метрики с серверов и сервисов.
  2. Prometheus опрашивает экспортеры с установленной периодичностью.
  3. Метрики сохраняются во внутреннем хранилище Prometheus.
  4. Grafana подключается к Prometheus и отображает данные на дашбордах.
  5. Alertmanager отправляет уведомления при возникновении проблем.
Схема мониторинга на основе Prometheus

Установка Prometheus

Рассмотрим установку на Ubuntu Server. Инструкция также подходит и для других дистрибутивов Linux — отличия только в менеджере пакетов (например, yum или dnf вместо apt). Команды в статье предполагают выполнение с правами суперпользователя (sudo).

Создайте пользователя:

sudo useradd -r -M -s /usr/sbin/nologin prometheus

Скачайте актуальную версию Prometheus c официального сайта или с официального репозитория на Github. Распакуйте его:

cd /tmp
wget https://github.com/prometheus/prometheus/releases/download/v3.12.0/prometheus-3.12.0.linux-amd64.tar.gz
tar xzvf prometheus-*.tar.gz

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

sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
sudo mv prometheus-*/prometheus /usr/local/bin/
sudo mv prometheus-*/promtool /usr/local/bin/
sudo chown root:root /usr/local/bin/prometheus
sudo chown root:root /usr/local/bin/promtool
sudo chown -R prometheus:prometheus /var/lib/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus

Создайте конфигурационный файл Prometheus:

sudo nano /etc/prometheus/prometheus.yml

Вставьте:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: prometheus

    static_configs:
      - targets:
        - localhost:9090

Проверьте конфигурацию Prometheus:

promtool check config /etc/prometheus/prometheus.yml

Если все в порядке, проверка выведет SUCCESS. Если нет, возможно сбилась структура файла — каждый уровень структуры файла yml должен быть сдвинут на 2 пробела.

Проверка синтаксиса конфигурационного файла Prometheus

Создайте unit-файл сервиса в systemd:

sudo nano /etc/systemd/system/prometheus.service

Вставьте:

[Unit]
Description=Prometheus Monitoring
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple

ExecStart=/usr/local/bin/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/var/lib/prometheus

Restart=always

[Install]
WantedBy=multi-user.target

Включите сервис и проверьте его работу:

sudo systemctl daemon-reload
sudo systemctl enable --now prometheus
sudo systemctl status prometheus.service
Статус службы Prometheus

Prometheus запустится на порту 9090.

Затем проверьте доступность Prometheus в браузере:

http://server-ip:9090

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

Веб-интерфейс Prometheus

Основные разделы интерфейса Prometheus:

  • Expression — основной раздел, предназначенный для выполнения запросов к базе метрик с использованием языка PromQL.
  • Alerts — отображает список всех правил оповещений и их текущее состояние.
  • Status — содержит служебную информацию о работе Prometheus.
  • Targets — список всех целей мониторинга, их состояние, время последнего опроса и возможные ошибки.
  • Configuration — текущая конфигурация Prometheus.
  • Rules — список правил записи (Recording Rules) и правил оповещений (Alerting Rules).

Для получения метрик о состоянии сервера (загрузка CPU, использование оперативной памяти, дисковое пространство и др.) необходимо подключить экспортёр. Стандартное решение для этих задач — Node Exporter. 

Установка Node Exporter

Скачать актуальную версию Node Exporter можно c официального сайта Prometheus или из официального репозитория на Github.

Создайте пользователя node_exporter:

sudo useradd -r -M -s /usr/sbin/nologin node_exporter

Скачайте архив и распакуйте его:

cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.11.1/node_exporter-1.11.1.linux-amd64.tar.gz
tar xzvf node_exporter*.tar.gz

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

sudo mv node_exporter-*/node_exporter /usr/local/bin/
sudo chown root:root /usr/local/bin/node_exporter

Подключите node_exporter к Prometheus. Откройте конфигурационный файл Prometheus:

sudo nano /etc/prometheus/prometheus.yml

Добавьте:

- job_name: node

  scrape_interval: 5s  

  static_configs:
    - targets: ['localhost:9100']

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

Создайте unit-файл сервиса в systemd:

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

Вставьте:

[Unit]
Description=Prometheus Node Exporter
After=network.target

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

[Install]
WantedBy=multi-user.target

Включите сервис node_exporter и проверьте его работу:

sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
sudo systemctl status node_exporter

Проверьте конфигурацию Prometheus:

promtool check config /etc/prometheus/prometheus.yml

Если проверка прошла успешно, перезагрузите службу Prometheus:

sudo systemctl restart prometheus

Сервис запустится на порту 9100.

Откройте страницу метрик node_exporter в браузере:

http://server-ip:9100/metrics

Структура метрик Prometheus

На странице http://server-ip:9100/metrics вы увидите все метрики, которые собирает Node Exporter.

Метрики Node Exporter

Каждая метрика сопровождается служебной информацией: # HELP — содержит краткое описание назначения метрики, # TYPE — указывает тип метрики (counter, gauge, histogram или summary), далее отображается текущее значение метрики.

Например:

# HELP node_cpu_seconds_total Seconds the CPUs spent in each mode.
# TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu="0",mode="idle"} 62431.48

В этом примере:

  • node_cpu_seconds_total — имя метрики;
  • cpu="0" и mode="idle" — метки (labels), которые уточняют, для какого логического процессора (ядра) и режима работы (idle — простой процессора) приведено значение метрики;
  • 62431.48 — текущее значение метрики.

Метрика показывает, что логический процессор #0 суммарно находился в состоянии простоя 62431.48 секунды с момента запуска системы.

Цели мониторинга и основные понятия

Один из наиболее полезных разделов в веб-интерфейсе Prometheus — Target health. В нём можно проверить состояние всех настроенных целей (targets), с которых Prometheus пытается собирать метрики.

Чтобы перейти в раздел, откройте Prometheus → Status → Target health.

Раздел  Target health

Тут следует немного раскрыть термины:

  • Job (задание мониторинга) — логическая группа целей мониторинга (targets), объединённых общими параметрами сбора метрик. Каждому заданию соответствует параметр job_name.
  • Target (цель мониторинга) — это объект мониторинга, предоставляющий метрики по HTTP. Целью является, например, экспортер, приложение, которое само отдает метрики или даже сам Prometheus. При подключении нового объекта в конфигурации  Prometheus в его интерфейсе появляется соответствующая цель.
  • Target health — состояние (здоровье) целей.
  • Scrape (сбор метрик) — процесс, при котором Prometheus отправляет HTTP-запрос к endpoint цели мониторинга, получает метрики и сохраняет их в своей базе данных.
  • Scrape interval (интервал сбора) — периодичность, с которой Prometheus выполняет сбор метрик.
  • Instance (экземпляр) — метка, которая позволяет отличать одну цель мониторинга от другой. По умолчанию содержит адрес host:port, но может быть переопределена. Используется для фильтрации и выбора метрик при построении запросов.

На скриншоте мы видим две цели мониторинга (targets), сгруппированные по заданиям мониторинга (jobs)node и prometheus.

  • node — сбор метрик с Node Exporter (http://localhost:9100/metrics).
  • prometheus — сбор собственных метрик Prometheus (http://localhost:9090/metrics). Используется для мониторинга самого сервера Prometheus.

Обе цели мониторинга находятся в рабочем состоянии (UP).

Установка и настройка Grafana

Получить ссылку на deb-пакет актуальной версии Grafana можно на официальном сайте.

sudo apt-get install -y adduser libfontconfig1 musl
wget https://dl.grafana.com/grafana-enterprise/release/13.1.0/grafana-enterprise_13.1.0_28013217238_linux_amd64.deb
sudo dpkg -i grafana-enterprise_13.1.0_28013217238_linux_amd64.deb

Веб-интерфейс Grafana доступен по URL:

http://server-ip:3000

Учетные данные: login — admin, password — admin.

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

Теперь подключим Prometheus к Grafana.

Зайдите в Connections → Data Sources и нажмите Add datasource.

Подключение Prometheus к Grafana

Выберите Prometheus.

Подключение Prometheus как источника данных в Grafana

В поле Connection введите http://localhost:9090 и нажмите Save & test внизу страницы.

Должно отобразиться сообщение об удачном подключении:

Prometheus успешно подключен

Теперь Grafana может использовать метрики, собираемые Prometheus. 

Основным элементом интерфейса Grafana являются дашборды (Dashboards) — панели мониторинга, с визуальным представлением метрик. Можно использовать готовые дашборды или создавать собственные. На официальном сайте Grafana представлен раздел с тысячами готовых дашбордов.

Настроим популярный дашборд Node Exporter Full, который представляет графическое отображение почти всех метрик, собираемых Node exporter.

Зайдите в Dashboards и выберите NewImport dashboard.

Новый дашборд

Введите ID дашборда — 1860.

поиск готового дашборда в библиотеке дашбордов GrafanaИмпорт дашборда

Загрузится панель с графиками основных параметров сервера.

Дашборд с основными метриками сервера

Настройка алертов

Чтобы получать уведомления, когда сервер недоступен, высокая нагрузка на сервере или заканчивается свободное место на диске, нужно настроить Alertmanager. Он поддерживает отправку оповещений во множество внешних систем:

  • электронная почта;
  • телеграм; 
  • Slack;
  • Discord и др.

Alertmanager также умеет отправлять запросу через вебхуки в любые системы, которые могут принимать HTTP-запросы.

Установка Alertmanager

Скачать актуальную версию Alertmanager можно c официального сайта Prometheus или из репозитория  GitHub.

Создайте пользователя alertmanager:

sudo useradd -r -M -s /usr/sbin/nologin alertmanager

Скачайте архив и распакуйте его:

cd /tmp
wget https://github.com/prometheus/alertmanager/releases/download/v0.33.0/alertmanager-0.33.0.linux-amd64.tar.gz
tar xvfz alertmanager-0.33.0.linux-amd64.tar.gz

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

cd alertmanager-*.linux-amd64

sudo cp alertmanager /usr/local/bin/
sudo cp amtool /usr/local/bin/

sudo mkdir -p /etc/alertmanager
sudo mkdir -p /var/lib/alertmanager

sudo chown -R alertmanager:alertmanager /etc/alertmanager
sudo chown -R alertmanager:alertmanager /var/lib/alertmanager

Теперь в качестве примера настроим отправку алертов на email.

Создайте конфигурационный файл Alertmanager:

sudo nano /etc/alertmanager/alertmanager.yml

global:
  smtp_smarthost: 'smtp.gmail.com:587'
  smtp_from: 'monitor@example.com'
  smtp_auth_username: 'monitor@example.com'
  smtp_auth_password: 'APP_PASSWORD'

route:
  receiver: email
  group_wait: 10s
  group_interval: 30s
  repeat_interval: 1m

receivers:
  - name: email
    email_configs:
      - to: 'admin@example.com'
        send_resolved: true

Здесь:

  • group_wait — временной период перед первой отправкой.
  • group_interval — частота отправки новых алертов в группе.
  • repeat_interval — частота повторов активных алертов.  

Проверьте конфигурацию Alertmanager:

amtool check-config /etc/alertmanager/alertmanager.yml

Создайте unit-файл сервиса в systemd:

sudo nano /etc/systemd/system/alertmanager.service

Вставьте:

[Unit]
Description=Prometheus Alertmanager
After=network.target

[Service]
User=alertmanager
Group=alertmanager

ExecStart=/usr/local/bin/alertmanager \
  --config.file=/etc/alertmanager/alertmanager.yml \
  --storage.path=/var/lib/alertmanager \
  --cluster.listen-address=""

Restart=always

[Install]
WantedBy=multi-user.target

sudo systemctl daemon-reload
sudo systemctl enable --now alertmanager
sudo systemctl status alertmanager

Проверить работу Alertmanager можно, загрузив страницу:

http://server-ip:9093/#/alerts

Теперь подключите Alertmanager к Prometheus:

nano /etc/prometheus/prometheus.yml

Добавьте:

alerting:
alertmanagers:
  - static_configs:
      - targets:
        - localhost:9093

rule_files:
  - alerts.yml

Создайте файл правил:

nano /etc/prometheus/alerts.yml

Добавьте простейший алерт, который сработает, если сервер недоступен:

groups:

- name: nodes

  rules:
  - alert: NodeDown
    expr: up{job="node"} == 0
    for: 2m

    labels:
      severity: critical

    annotations:
      summary: "Сервер недоступен"
      description: "Хост {{ $labels.instance }} недоступен более 2 минут!" 

Проверьте синтаксис:

promtool check rules /etc/prometheus/alerts.yml

Перезагрузите Prometheus:

systemctl restart prometheus

На странице https://server-ip:9090/alerts вы сможете увидеть список алертов и их статус.

Раздел алертов в PrometheusАлерты в веб-интерфейсе Prometheus

Мониторинг ключевых метрик сервера и веб-сайта

Теперь настроим алерты на критически важные метрики:

  • загрузка CPU;
  • использование RAM;
  • I/O дисковой подсистемы;
  • свободное место на дисках.

Добавьте правила в файл /etc/prometheus/alerts.yml:

- alert: CPU

    expr: node_load1 > on(instance)(count by(instance) (node_cpu_seconds_total{mode="idle"}))
    for: 1m

    labels:
      severity: critical

    annotations:
      summary: "Высокий Load Average"
      description: "Load average на сервере {{ $labels.instance }} составляет {{ printf \"%.2f\" $value }} более 1 минуты!"

  - alert: RAM

    expr: ((1 - (node_memory_MemAvailable_bytes{job="node"} / node_memory_MemTotal_bytes{job="node"})) * 100)>90
    for: 1m

    labels:
      severity: critical

    annotations:
      summary: "Нагрузка на ОЗУ"
      description: "На сервере {{ $labels.instance }} занято {{ printf \"%.2f\" $value }}% оперативной памяти!"

  - alert: DiskCriticalUtilization

    expr: rate(node_disk_io_time_seconds_total[1m]) > 0.9
    for: 1m

    labels:
      severity: critical

    annotations:
      summary: "Критическая загрузка диска"
      description: "Утилизация диска {{ $labels.device }} более 90%!"

  - alert: DiskAvailableSpace

    expr: node_filesystem_avail_bytes{mountpoint="/"}/1024/1024/1024 < 10
    for: 1m

    labels:
      severity: critical

    annotations:
      summary: "Заканчивается свободное место"
      description: "На диске {{ $labels.device }} свободно {{ printf \"%.2f\" $value }} ГБ!"

Проверьте синтаксис:

promtool check rules /etc/prometheus/alerts.yml

Перезагрузите Prometheus:

systemctl restart prometheus

Введите ID дашборда — 1860.

Контроль доступности сайта

С мониторингом доступности веб-ресурса поможет Blackbox exporter — экспортер для Prometheus, который умеет проверять:

  • HTTP/HTTPS (сайты, API);
  • SSL/TLS сертификаты (срок действия, валидность);
  • ICMP (ping);
  • TCP-порты;
  • DNS.

Кроме того, Blackbox exporter может собрать, например такие метрики:

  • probe_success — доступность сайта;
  • probe_http_status_code — HTTP-код ответа (200, 301, 404, 500 и т.д.);
  • probe_duration_seconds — время проверки;
  • probe_ssl_earliest_cert_expiry — дата окончания действия SSL-сертификата;
  • probe_http_redirects — количество редиректов;
  • probe_tls_version_info — используемая версия TLS.

Скачать Blackbox exporter можно отсюда.

Если нужен простой сервис, который работает из коробки и не требует сложной настройки, попробуйте услугу мониторинга от FirstVDS. Сервис круглосуточно проверяет доступность сайта: если система обнаружит ошибки и сбои, пришлёт оповещение по удобному каналу.  Доступен бесплатный тариф. 

Установим Blackbox exporter по аналогии с Node exporter:

sudo useradd --no-create-home --shell /usr/sbin/nologin blackbox

cd /tmp

wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.28.0/blackbox_exporter-0.28.0.linux-amd64.tar.gz

tar xzvf blackbox_exporter*

sudo mkdir -p /etc/blackbox

sudo cp blackbox_exporter*/blackbox_exporter  /usr/local/bin/

sudo chown root:root /usr/local/bin/blackbox_exporter

sudo nano /etc/blackbox/blackbox.yml

modules:
  http_2xx:
    prober: http
    timeout: 5s
    http:
      preferred_ip_protocol: ip4
      valid_status_codes: []
      
nano /etc/systemd/system/blackbox_exporter.service

[Unit]
Description=Prometheus Blackbox Exporter

After=network.target

[Service]
User=blackbox
Group=blackbox
ExecStart=/usr/local/bin/blackbox_exporter \
  --config.file=/etc/blackbox/blackbox.yml

Restart=always

[Install]
WantedBy=multi-user.target


sudo systemctl daemon-reload
sudo systemctl enable --now blackbox_exporter
sudo systemctl status blackbox_exporter

Создайте файл со списком сайтов для проверки:

sudo mkdir -p /etc/prometheus/targets

sudo nano /etc/prometheus/targets/blackbox.yml

- targets:
    - https://google.com
    - https://ya.ru
    - https://example.com

Добавьте новое задание в Prometheus:

sudo nano /etc/prometheus/prometheus.yml

- job_name: blackbox-http
    metrics_path: /probe

    params:
      module:
        - http_2xx

    file_sd_configs:
      - files:
          - /etc/prometheus/targets/blackbox.yml

    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target

      - source_labels: [__param_target]
        target_label: instance

      - target_label: __address__
        replacement: localhost:9115

Проверьте конфигурацию и перезагрузите службу:

promtool check config /etc/prometheus/prometheus.yml

sudo systemctl restart prometheus

Blackbox Exporter запустится на порту 9115.

Blackbox ничего не знает про файл /etc/prometheus/targets/blackbox.yml. Он просто ждёт запросы вида: /probe?target=https://example.com&module=http_2xx.Когда Prometheus опрашивает Blackbox, он берёт цели из blackbox.yml и подставляет их в параметр target. Страница http://server-ip:9115/ показывает только результаты ручных запросов и debug-информацию.

Чтобы посмотреть метрики конкретного сайта откройте в браузере:

http://server-ip:9115/probe?target=https://example.com&module=http_2xx
Метрики Blackbox exporter

Чтобы понять, начал ли Prometheus мониторить ваши сайты, откройте Prometheus → Status → Target health. Вы увидете задания типа blackbox-http c целями (сайтами) для проверки:

Цель Blackbox exporter в веб интерфейсе Prometheus

Настроим алерты:

  • доступность сайта;
  • действиe SSL-сертификата.

Добавим новую группу алертов в /etc/prometheus/alerts.yml:

- name: website

  rules:

  - alert: WebsiteDown

    expr: probe_success == 0
    for: 30s

    labels:
      severity: critical

    annotations:
      summary: "Сайт недоступен"
      description: "{{ $labels.instance }} не отвечает"

  - alert: SSLCertificateExpire

    expr: (probe_ssl_earliest_cert_expiry - time()) / 86400 < 14
    for: 10m

    labels:
      severity: critical

    annotations:
      summary: "Срок действия сертификата заканчивается"
      description: "Срок действия сертификата для домена {{ $labels.instance }} заканчивается через {{ printf \"%.0f\" $value }} дней."

Оповещение придёт, если сайт недоступен в течении 30 секунд и/или SSL сертификат заканчивается менее чем через 14 дней. 

Создание дашборда в Grafana для мониторинга сайта

Для мониторинга сайта удобно иметь отдельный дашборд. Можно использовать готовое решение, но удобнее настроить дашборд под свои задачи.
Рассмотрим пример создания дашборда для мониторинга сайта. Зайдите в раздел Dashboards и выберите New dashboard:

Создание нового дашборда Grafana

Справа нажмите на плюс, чтобы добавить панель на наш дашборд:

Добавление панели на дашборд

На новой панели нажмите Configure visualisation. Откроется раздел настроек текущей панели. 

Настройка панели

Область предварительного просмотра (1) — отображает результат выполнения запроса. После выбора типа визуализации здесь будет показан график, таблица или другой элемент дашборда.

Редактор запросов (Query editor) (2) — предназначен для создания и настройки запросов к источнику данных (например, Prometheus). Здесь выбираются метрики, задаются фильтры, функции и условия отображения данных.

Выбор визуализации (3) — позволяет выбрать способ отображения полученных данных. В наличии различные виды диаграмм и графиков — Time series, Stat, Gauge, Bar gauge, Table, Pie chart и другие.

Настроим панель — индикатор доступности сайта.

В конструкторе редактора запросов выберите следующие параметры и нажмите Run queries:

настройка панели - запрос (query)

Справа в области выбора визуализации выберите вид — Stat.

Вид визуализации данных

Введите название панели — Title.

Panel styles:

Стиль панели

Задайте Value mappings (в столбце Color задайте цвет, когда сайт доступен\недоступен):

Значения панели

Вернитесь к дашборду — Back to dashboard. Добавим ещё несколько панелей. 

Панель для мониторинга доступности сайта во времени (timeline).

Запрос тот же.

Visualisation - State timeline

Title - Timeline
Show values - Never
Axis:
Width - 0
Value mappings - как в панели выше
Color scheme - Green-Yellow-Red

Панель — график времени ответа сервера.

Queries:

Metric - probe_duration_seconds
Label filters:
instance = https://testtest.fvds.ru (ваш сайт)

All visualisations - Time series
Title - Время ответа
Legend:
Visibility - Off

Остальные настройки —  по умолчанию.

Панель — количество дней до конца срока действия SSL-сертификата.

Queries:

Панель - срок действия сертификата - запрос
Title - SSL certificate
Panel styles - Background color from thresholds, no sparkline

Standart options:
Decimals - 0
Color scheme - From thresholds (by value)

Thresholds:

Thresholds

14 – порог в днях, ниже которого панель окрасится в красный цвет.

Не забудьте сохранить дашборд по кнопке Save. На странице дашборда вы можете изменить размер и положение панелей. В результате получим такой дашборд:

Готовый дашборд

Лучшие практики

  • Не стоит собирать сотни метрик без понимания их ценности — выбирайте только критически важные метрики. Перегруженные дашборды усложняют мониторинг: на них труднее заметить действительно важные изменения и оперативно отреагировать на проблему.
  • Разделяйте дашборды по назначению. Создавайте отдельные панели для разных задач: инфраструктура, базы данных, веб-сервисы, контейнеры. Один огромный дашборд быстро становится бесполезным — в нём сложно ориентироваться.
  • Настраивайте алерты с умом. Если уведомлений слишком много, и не все из них важные, администратор будет их игнорировать. Настраивайте оповещения только на критические события.
  • Храните метрики разумно. Prometheus не предназначен для долгосрочного хранения данных. Для этой задачи используют другие системы (например, Thanos или VictoriaMetrics).

Заключение

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

Этот материал был полезен?

Скидка новым клиентам
Закажите сервер сегодня и получите скидку на первый месяц аренды!
Наш сайт использует cookies Вы можете отключить их в настройках браузера, но это может ограничить функционал. Оставаясь на сайте, вы соглашаетесь с использованием cookies.