В этой серии мы создали клиентские приложения с REST API и использовали Spring Boot Actuators для мониторинга работоспособности приложений, показателей для REST API, подключений и состояния базы данных, Tomcat и Hikari Connections, управления кешем, запланированных задач, среды приложение и многое другое. Чтобы визуализировать и контролировать приложения, нам нужен пользовательский интерфейс, для этого мы создали Spring Boot Admin, который действует как серверное приложение и использует информацию JSON от Actuators и обеспечивает визуализацию в виде графиков и таблиц.

Прометей

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

Архитектура

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

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

Давайте загрузим Прометей с ОС, такой как Windows, и архитектурой, например, amd64. Здесь я использовал prometheus-2.16.0.windows-amd64. Распакуйте его в подходящее место, и вы увидите prometheus.yml, где мы можем настроить Prometheus, указав интервалы отката, диспетчеры предупреждений, правила и т. д. Мы также можем указать, какой файл конфигурации загружать. , используя флаг --config.file .

Прежде чем продолжить, убедитесь, что мы выполнили необходимые настройки в нашем приложении.

  • Включите пружину-загрузку-пускатель-привод , микрометр-реестр-Прометей в наш pom.xml
  • Конечная точка / prometheus отображается в свойствах приложения
  • Мы можем использовать конфигурации enable и expose с Spring Security для предотвращения несанкционированного доступа к конфиденциальной информации.
  • metrics_path и scrape_interval настроены правильно в prometheus.yml
pom.xml
<dependency>
   <groupId>io.micrometer</groupId>
   <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
application-properties
#Include end-points
management.endpoint.metrics.enabled = true
management.endpoints.web.exposure.include = *
management.endpoint.metrics.show-details = always
management.endpoint.health.show-details=always

Графана

Grafana - самый популярный проект с открытым исходным кодом, который позволяет запрашивать, визуализировать и предупреждать о показателях и журналах независимо от того, где они хранятся. Для запросов он использует базы данных временных рядов, такие как Graphite, Prometheus, Elasticsearch, OpenTSDB и InfluxDB. Мы также можем интегрировать Grafana с Splunk, AppDynamics, DataDog и поддерживать настраиваемую проверку подлинности (LDAP, OAuth и другие), SSL и настраиваемые домены (корпоративная версия). Для визуализации мы можем использовать готовые дашборды, предоставляемые им. Вы можете скачать последнюю версию здесь.

Добавить Прометея как источник данных

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

Давай запускаем и отслеживаем

  • Доступ к Prometheus можно получить на localhost: 9090
  • Доступ к Grafana можно получить на localhost: 3000

Выберите показатель, выполните и проанализируйте

Основная статистика

REST API

Статистика JVM

Связи Хикари

Журналы

Правила и механизм оповещения

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

Определение правил и предупреждений в Prometheus

# Rule files specifies a list of globs. Rules and alerts are read from all matching files.
rule_files:
  [ - <filepath_glob> ... ]
# Alerting specifies settings related to the Alertmanager.
alerting:
  alert_relabel_configs:
    [ - <relabel_config> ... ]
  alertmanagers:
    [ - <alertmanager_config> ... ]

Настройка оповещений и каналов уведомлений в Grafana

В Grafana мы можем легко настроить оповещения и каналы с помощью пользовательского интерфейса и протестировать соединение.