BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс Современная архитектура хранилища данных » Spring Boot c Prometheus и Grafana. Локальная установка и настройка

Spring Boot c Prometheus и Grafana. Локальная установка и настройка

Как только приложение запущено в производство, мы должны убедиться в том, что оно работает безперебойно. Хорошо, что у нас для этого есть полезные и действенные инструменты: Prometheus и Grafana, которые помогают нам выявить проблемы на ранней стадии и избежать катастроф в будущем. В этом руководстве мы покажем Вам, как включить метрики в приложении Spring Boot так, чтобы они могли собираться Prometheus и отображаться в Grafana. Настройка будет локальной с использованием Docker и Docker Compose, ее можно создать с помощью всего одной команды.

 

Приложение

В качестве примера я использую простое приложение Spring Boot, которое обрабатывает информацию о клиентах. Оно сохраняет информацию в базе данных SQL. Для простоты в приложении используется база данных H2. Она предоставляет REST API, позволяющий выполнять базовые CRUD-операции. В приложении есть класс загрузчика данных, который при запуске загружает в базу «фальшивые» данные, так что мы можем легко протестировать его. Полный код можно найти здесь: GitHub - polovyivan/spring-with-prometheus-grafana

 

 

Включение метрик Spring Boot

Сначала нам нужно включить метрики в нашем приложении Spring Boot. Для этого нам нужно добавить следующие зависимости, одну для Prometheus и другую для исполнительного механизма:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency>
  <dependency>
   <groupId>io.micrometer</groupId>
   <artifactId>micrometer-registry-prometheus</artifactId>
   <scope>runtime</scope>
  </dependency>

 

В YAML-файл приложения нужно добавить следующую конфигурацию для открытия доступа к метрикам через конечную точку REST:

spring:
  application:
    name: spring-with-prometheus-grafana
management:
  endpoints:
    web:
      exposure:
        include: health, metrics, prometheus
  metrics:
    tags:
      application: ${spring.application.name}

 

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

Когда мы запускаем приложение и выполняем запрос по URL:

htt​p://localhost:8001/spring-with-prometheus-grafana/actuator/prometheus

 

Мы получаем широкий список метрик, собранных библиотекой Prometheus.

 

Конфигурация Prometheus

Теперь нам нужно дать команду на сканирование метрик. Для этого нам нужно создать файл следующего вида:

global:
  scrape_interval: 15s
scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'spring-with-prometheus-grafana'
    metrics_path: '/spring-with-prometheus-grafana/actuator/prometheus'
    scrape_interval: 2s
    static_configs:
      - targets: [ 'host.docker.internal:8001' ]
        labels:
          app: 'spring-with-prometheus-grafana'

 

Этот файл определяет два конфига для сбора метрик. Один из них будет указывать Prometheus получать метрики из самого себя. Этот конфиг необязателен, просто мы хотели показать, что это возможно, и это хорошая метрика для обучения. Другой будет указывать Prometheus на получение метрик из приложения Spring Boot.

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

 

Конфигурация Grafana

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

apiVersion: 1
datasources:
  - name: Prometheus
    type: prometheus
    access: proxy
    url: http://prometheus:9090
    jsonData:
      httpMethod: POST
      manageAlerts: true
      prometheusType: Prometheus
      prometheusVersion: 2.44.0
      cacheLevel: 'High'

 

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

 

Собираем все вместе

Приложение Spring Boot будет запускаться из IntelliJ. Экземпляры Prometheus и Grafana будут размещены в контейнерах Docker. Чтобы упростить создание конфигурации, я использую Docker Compose, поскольку он позволяет создать файл определения docker-compose.yaml, а затем запустить его с помощью всего одной командой. Файл определения приведен ниже:

version: "3.8"
services:
  grafana:
    container_name: grafana
    image: grafana/grafana:9.3.8
    restart: always
    ports:
      - "3000:3000"
    volumes:
     - ./grafana:/etc/grafana/provisioning/datasources
    environment:
      - GF_AUTH_ANONYMOUS_ENABLED=true
      - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
    networks:
      - prometheus-network
  prometheus:
    container_name: prometheus
    image: prom/prometheus:v2.44.0
    user: root
    volumes:
      - ./prometheus:/etc/prometheus
    command:
      - --config.file=/etc/prometheus/prometheus-config.yaml
      - --log.level=debug
    ports:
      - "9090:9090"
    extra_hosts:
      - "host.docker.internal:host-gateway"
    networks:
      - prometheus-network
networks:
 prometheus-network:

 

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

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

Файл определения docker-compose определяет сеть, к которой подключаются оба контейнера. Docker compose имеет внутреннюю DNS, поэтому контейнер Grafana может вызывать контейнер Prometheus, используя его имя службы. Поэтому в файле конфигурации Grafana URL имеет следующий вид:

http://prometheus:9090

 

Приложение Spring Boot запущено внутри IntelliJ и доступно с локального хоста. Если мы настроим Prometheus на использование localhost для связи с приложением Spring Boot, это не сработает, потому что контейнер Prometheus имеет свой собственный localhost. Когда он попытается связаться со своим локальным хостом, то получит ошибку, потому что приложение Spring boot запущено не внутри контейнера Prometheus, а на ПК. Поэтому для того, чтобы предоставить Prometheus доступ к портам ПК, определение контейнера должно быть следующим:

extra_hosts:
      - "host.docker.internal:host-gateway"

 

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

 

Установка

Из директории, где находится файл docker-compose.yaml, выполните следующую команду:

$docker compose up

 

В зависимости от установки Docker compose Вам может понадобиться использовать тире «-» между docker и compose. Через несколько секунд все контейнеры будут созданы.

 

Prometheus начнет собирать метрики сразу же. Если приложение Spring Boot не работает, в журналах Prometheus Вы увидите следующие ошибки:

 

Как только вы запустите его, эти ошибки исчезнут.

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

http://localhost:9090

 

Чтобы проверить список метрик, полученных с помощью Prometheus, нажмите на кнопку с изображением глобуса, как показано ниже:

Теперь метрика доступна для запросов. 

Пользовательский интерфейс Prometheus ограничен, и здесь на помощь приходит Grafana. В браузере введите следующий адрес:

http://localhost:3000

 

Перейдите на вкладку Explore и в качестве источника данных выберите Prometheus, а затем браузер Metrics (чтобы просмотреть метрики прямо из приложения).

 

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

 

Заключение

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

 

Узнать стоимость решенияЗапросить видео презентацию

← Предыдущая статья
Подробное руководство по мониторингу в DevOps: Grafana, Prometheus и др.
Следующая статья →
Метрики Docker с помощью Prometheus и Grafana

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • В «Пивоваренной компании «Балтика» аналитическая платформа Loginom применяется для моделирования процессов или построения отчетов, в том числе для формирования рекомендаций по корректировке плана промоактивностей.
     
  • АО «Новосибирскэнергосбыт» является единственным гарантирующим поставщиком электроэнергии на территории г. Новосибирска и Новосибирской области. Предприятие отвечает за электроснабжение клиентов, закупая электроэнергию на оптовом рынке, регулируя поставку электроэнергии через договорные отношения с сетевыми организациями.

  • ООО «Ай Пи Ти Групп» (IPT Group) — многопрофильный консалтинговый холдинг, специализирующийся на юридическом и финансовом сопровождении бизнеса. IPT Group занимает высокие позиции в профессиональных рейтингах, входит в ТОП-30 лучших юридических компаний России по версии «Право.ru-300», Global Law Experts и др.

  • ПАО АНК «Башнефть» — российская вертикально-интегрированная нефтяная компания, с 2016 года входит в ПАО НК «Роснефть». Главный офис расположен в городе Уфе (Башкортостан). Добыча углеводородов – более 21 млн тонн нефти в год. Объем переработки – более 18 млн тонн нефти в год. Число сотрудников – более 33 тыс. человек.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

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