Войти

Общая информация и пример настройки мониторинга

Дата публикации: 01.08.2025

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

Для типового ПО СМЭВ4 реализована возможность настройки мониторинга:

  Примечание

 В Витрине данных конфигурации Лайт средства мониторинга уже предустановлены

В данной статье описаны два инструмента мониторинга:

  1.   Grafana.
  2.   Prometheus.

Данные инструменты предоставляют комплексное решение для визуализации и анализа данных мониторинга.

  Примечание

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

Grafana

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

Для успешного освоения Grafana особое внимание следует уделить следующим ключевым понятиям:

  • Дашборды (Dashboards) – это основная единица визуализации в Grafana, которая позволяет собирать и отображать данные из различных источников данных в режиме реального времени;
  • Панели (Panels) – это неотъемлемая часть любых дашбордов для визуализации данных, отображающие конкретные метрики в различных форматах (графики, гистограммы, таблицы и др.);
  • Источники данных (Data source) – это набор систем сбора данных, которые поддерживаются Grafana, такие как Prometheus, InfluxDB, MySQL, PostgreSQL и другие;
  • Система оповещений (Alerts) позволяет настраивать уведомления пользователя для отслеживания определенных условий и событий;
  • Шаблоны (Templating) дают возможность создания собственных переменных для повышения интерактивности дашбардов;
  • Плагины (Plugins) расширяют функциональность Grafana, это могут быть новые источники данных (Prometheus, ClickHouse, PostgreSQL и др.), расширение возможностей дашборда (Clock, Geomap, Canvas и др.), плагины сбора данных о состояния различных систем (Node exporter, Elastiksearch exporter и др.).

Prometheus

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

Метрики в Prometheus представляют количественные показатели. Каждая метрика имеет уникальное имя и может содержать набор дополнительных меток (labels), которые помогают идентифицировать и классифицировать данные. Метрики могут отражать различные аспекты работы системы, такие как производительность, доступность и утилизация ресурсов.

Prometheus поддерживает несколько типов метрик:

  • Counter – метрика, которая только увеличивается и никогда не уменьшается;
  • Gauge – метрика, которая может как увеличиваться, так и уменьшаться;
  • Histogram – метрика, делит значения на интервалы и подсчитывает количество наблюдений в каждом интервале;
  • Summary – метрика, которая похожа на гистограмму, но предоставляет более детализированную информацию о квантилях и общей сумме значений.

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

Другие альтернативные инструменты мониторинга:

Хотя Grafana и Prometheus предоставляют решение для мониторинга, существуют и другие инструменты, которые могут быть полезны в зависимости от конкретных потребностей:

  • Datadog – облачная платформа мониторинга, которая объединяет метрики, трассировку и логи. Datadog предлагает широкий спектр интеграций и инструментов визуализации;
  • Zabbix –  открытое программное обеспечение для мониторинга сетей и приложений. Zabbix предоставляет собственные инструменты визуализации и широкие возможности для настройки оповещений;
  • Nagios – классическая система мониторинга с открытым исходным кодом, хотя ее интерфейс может показаться устаревшим по сравнению с современными альтернативами;
  • Splunk – Платформа для анализа машинных данных, которая особенно эффективна для работы с большими объемами неструктурированных данных.

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

Установка Grafana и Prometheus

В данном разделе рассмотрим, как установить и настроить инструменты мониторинга.

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


  • Через оркестратор Datamart Studio:

Данный способ разворачивания компонентов упрощен тем, что Datamart Studio автоматически создаёт и запускает Docker-контейнер приложения. Процесс установки приложений (инсталляций) мониторинга описан в статье – Установка витрины в конфигурации стандарт. Дополнительные компоненты.


  • Установкой вручную (создание Docker-контейнеров):

В качестве основного ПО по разворачиванию Docker-приложений будет выступать плагин Docker Compose.

  Примечание

 Перед установкой инструментов мониторинга необходимо установить плагин Docker-compose

Использование Docker Compose упрощает развертывание многоконтейнерных приложений. Он позволяет определить все необходимые сервисы, их зависимости и конфигурацию в едином YAML-файле, что делает процесс развертывания более управляемым и воспроизводимым. Кроме того, Docker Compose автоматизирует создание сетей, томов и других ресурсов, необходимых для работы приложения, что значительно ускоряет и упрощает процесс развертывания.

Всю установку инструментов можно разбить на следующие шаги:

  1.   Подготовка конфигурационных файлов.
  2.   Запуск Docker-образов.
  3.   Отслеживание ошибок.
  4.   Добавление источника данных и тест соединения.

Подготовка конфигурационных файлов

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

Следующие команды выполняется под пользователем user:

mkdir /home/user/monitoring

mkdir /home/user/monitoring/prometheus

Эти команды создают две директории moitoring и вложенную в нее директорию prometheus.

          2)     В директории prometheus будет храниться основной файл конфигурации, который будет описывать все целевые системы или источники, поставляющие метрики для мониторинга. 

Создайте файл prometheus.yml следующей командой:

touch /home/user/monitoring/prometheus/prometheus.yml

          3)     Для настройки Prometheus необходимо открыть конфигурационный файл prometheus.yml с помощью любого текстового редактора:

nano /home/user/monitoring/prometheus/prometheus.yml

          4)     Необходимо заполнить основные блоки конфигурации: global и scrape_configs. Скопируйте содержимое конфигурационного файла prometheus.yml и вставьте содержимое в открывшемся редакторе:

global:

  scrape_interval: 15s

scrape_configs:

  - job_name: '{JOB_NAME}'

    static_configs:

      - targets:

        - '{IP_ADDRESS}:{METRICS_PORT}'

В секции global находится параметр scrape_interval, который определяет периодичность сбора метрик с целевых систем. В данном случае он установлен на 15 секунд.

В секции scrape_configs задается список задач, которые будут поставлять метрики в Prometheus. Для каждой задачи указывается уникальное имя {JOB_NAME} в пункте job_name и список статических целевых систем, с которых будут собираться метрики. По умолчанию путь для сбора метрик – /metrics, поэтому его не требуется указывать явно.

При заполнении необходимо заменить {IP_ADDRESS} на внешний адрес виртуальной машины и {METRICS_PORT} на порт, по которому выгружаются метрики системы. Если необходимый сервис также развернут в Docker-контейнере и находится в общей внутренней сети с Prometheus, то можно указать имя этого контейнера вместо IP-адреса. Это позволит Prometheus автоматически обнаруживать и собирать метрики из сервиса, развернутого в контейнере, без необходимости указывать его IP-адрес.

          5)     По умолчанию в Prometheus отсутствует механизм аутентификации пользователей, что обеспечивает свободный доступ к системе. Для реализации дополнительной авторизации в среде Prometheus. Создайте конфигурационный файл web.yml следующей командой:

touch /home/user/monitoring/prometheus/web.yml

          6)     Откройте созданный файл в режиме редактирования следующей командой:

nano /home/user/monitoring/prometheus/web.yml

          7)     В качестве примера конфигурации для пользователя с именем admin и паролем admin:

basic_auth_users:

  admin: $2y$06$vKugURQgcAmO/nunEGu.X.ITAZVZ/kAs0xQe7KlkkoyI/RLejFo22

В конфигурационном файле web.yml, помимо прочих настроек, определяются правила для базовой аутентификации в секции basic_auth_users. В этой секции ключом является имя пользователя, а значением – хеш-строка пароля в формате bcrypt. Для получения пароля в формате bcrypt можно использовать онлайн-сервис, например, bcrypt.online.

  Примечание

 Файл web.yml можно оставить пустым, если дополнительная авторизация не требуется

Запуск docker-образов

Далее рассмотрим пример файла docker-compose.yml, который будет использоваться для развертывания Grafana и Prometheus. Этот файл будет содержать определения всех необходимых сервисов, их конфигурацию и зависимости, что позволит нам легко и быстро развернуть весь стек мониторинга в контейнерах Docker.

          1)     Для начала в корневой директории конфигураций monitoring создадим этот файл и заполним его следующей командой на редактирование:

nano /home/user/monitoring/docker-compose.yml

          2)     Скопируйте содержимое ниже в созданный файл. Данное содержимое описывает конфигурацию двух контейнеров для мониторинга с дополнительной настройкой каждого из них:

version: '3'

services:

  prometheus:

    image: prom/prometheus

    container_name: prometheus

    ports:

      - 9090:9090

    volumes:

      - ./prometheus/:/etc/prometheus/

      - prometheus_data:/prometheus

    command:

      - --config.file=/etc/prometheus/prometheus.yml

      - --web.config.file=/etc/prometheus/web.yml

      - --storage.tsdb.retention.time=30d

      - --storage.tsdb.retention.size=10GB

    networks:

      - monitoring

    restart: unless-stopped

  grafana:

    image: grafana/grafana:11.2.0

    container_name: grafana

    ports:

      - 3030:3000

    volumes:

      - grafana_data:/var/lib/grafana

    environment:

      - GF_SECURITY_ADMIN_USER=admin

      - GF_SECURITY_ADMIN_PASSWORD=passwd

      - GF_USERS_ALLOW_SIGN_UP=false

    networks:

      - monitoring

    restart: unless-stopped

networks:

  monitoring:

volumes:

  prometheus_data:

  grafana_data:

          3)     После внесения изменений – сохраните файл.

Рассмотрим подробно каждый блок конфигурации docker-compose.yml:

Начнем с разбора конфигурации контейнера Prometheus в блоке описания сервисов services. Контейнер Prometheus основан на образе "prom/prometheus" и имеет имя "prometheus". Он прослушивает порт 9090 на хосте, который отображается на тот же порт внутри контейнера, обеспечивая доступ к веб-интерфейсу Prometheus. При необходимости, например, пересечении локальных портов 9090, можно изменить первое значение в строке ports на другой порт, например, 9091:9090.

Для хранения данных метрик используется volume "prometheus_data", который позволяет сохранять данные даже при перезапуске контейнера. Конфигурационные файлы Prometheus монтируются из локальной_директории/prometheus/. Это позволяет легко управлять и настраивать конфигурацию Prometheus без необходимости модификации самого контейнера.

Важно отметить, что в конфигурации Prometheus задаются параметры "--storage.tsdb.retention.time" и "--storage.tsdb.retention.size", которые определяют время хранения данных (30 дней) и максимальный размер хранилища данных временных рядов (10 ГБ) соответственно. Если для этих параметров указать нулевые значения, время и место хранения данных будут не ограничены.

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

Для легкого нахождения и управления этого контейнера задается имя "grafana". Далее настраивается порт 3030 на хост-машине будет отображаться на порт 3000 внутри контейнера, который даст возможность получать доступ к веб-интерфейсу Grafana.

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

В разделе "environment" задаются переменные окружения для контейнера Grafana. Здесь устанавливаются имя (GF_SECURITY_ADMIN_USER) и пароль (GF_SECURITY_ADMIN_PASSWORD) администратора, а также отключается возможность регистрации новых пользователей (GF_USERS_ALLOW_SIGN_UP). Это обеспечивает дополнительную безопасность и контроль доступа.

Контейнеры Prometheus и Grafana подключаются к сети с именем "monitoring", что позволит взаимодействовать им в общей внутренней сети. Параметр "restart" определяет, что контейнеры будут автоматически перезапускаться, если он остановится, за исключением случаев, когда контейнер был остановлен вручную.

          4)     Теперь, когда мы настроили все необходимые компоненты и разобрали каждый раздел в docker-compose.yml файле, осталось только запустить эти контейнеры. Для этого выполним следующую команду, которую также можно использовать после изменения конфигураций yml.

cd /home/user/monitoring/docker-compose.yml

docker compose up -d --force-recreate

Команда запустит все контейнеры, определенные в docker-compose.yml, в фоновом режиме (-d). Параметр --force-recreate гарантирует, что все контейнеры будут пересозданы, даже если их конфигурация не изменилась.

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

docker ps | grep grafana

docker ps | grep prometheus

curl –X GET http://localhost:3030 -I

curl –X GET http://localhost:9090 -I

Отслеживание ошибок

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

Для остановки работающего Docker-контейнера с использованием плагина Docker Compose применяется следующая команда: {container_id} - это уникальный идентификатор или имя контейнера:

docker compose down {container_id}

где:

  • {container_id} - это уникальный идентификатор или имя контейнера.

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

docker logs {container_id} > logs.txt

Данная команда выводит все логи контейнера в файл logs.txt, который можно затем изучить. Таким образом, основные операции с Docker-compose включают в себя остановку, удаление и получение логов всех или отдельных контейнеров.

Добавление источника данных и тест соединения

Добавление Prometheus как источника данных в Grafana и создание первого дашборда – это важные шаги для начала визуализации метрик. Для этого необходимо запустить веб-бразуер и пройти по адресу, на котором развернута Grafana. В конкретном случае это будет адрес http://localhost:3030. Используя учетные данные по умолчанию admin/admin, ввести в форму авторизации логин и пароль.

  1.   Для добавления нового источника данных в левом боковом меню страницы Grafana перейти в раздел Configuration (Настройки конфигурации), затем выбрать пункт Data sources (Источника данных). Найти кнопу Add data source (Добавить источник данных):

Рисунок 1 Grafana. Окно с настройками конфигурации.png

Рисунок 1 – Grafana. Окно с настройками конфигурации

  2.   В списке доступных источников данных найти и выбрать Prometheus. Нажмите на него:

Рисунок 2 Grafana. Окно добавления нового источника данных.png

Рисунок 2 – Grafana. Окно добавления нового источника данных

  3.   После нажатия на Prometheus источник данных появится в настройках конфигурации. Перейдите в него нажав на него:

Рисунок 3 Grafana. Окно с настройками конфигурации.png

Рисунок 3 – Grafana. Окно с настройками конфигурации

  4.   Из важных к заполнению пунктов будет параметр настройки подключения, в котором необходимо указать адрес Prometheus. Если Prometheus работает на локальной машине рядом с Grafana, то можно ввести локальны адрес http://localhost:9090. В иных случая необходимо ввести IP-адрес или доменное имя:

Рисунок 4 Grafana. Настройки Prometheus.png

Рисунок 4 – Grafana. Настройки Prometheus

В случае указания дополнительной авторизации при установке Prometheus в разделе Auth (Авторизация) необходимо выбрать вариант Basic auth и ввести логин и пароль, указанные при конфигурировании Prometheus в файле web.yml.

  5.   После чего необходимо в самом низу формы проверить настройки Prometheus по кнопке «Save & Test» (Сохранить и тестировать):

Рисунок 5 Grafana. Применение настроек Prometheus.png

Рисунок 5 – Grafana. Применение настроек Prometheus

В случае успешной проверки появится уведомление:

Рисунок 6 Успешный тест коннекта с Prometheus.png

Рисунок 6 – Успешный тест коннекта с Prometheus

Заключение

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

Авторизуйтесь, чтобы оставить комментарий к статье