Автор оригинала: Michael Pratt.
1. введение
Одной из многих замечательных особенностей Spring Boot является набор встроенных приводов . Эти приводы обеспечивают простой способ мониторинга и управления практически всеми аспектами приложения Spring Boot.
В этом уроке мы рассмотрим использование привода metrics для создания автономного решения для мониторинга приложений Spring Boot.
2. База данных метрик
Первая часть мониторинга приложений Spring Boot-это выбор базы данных метрик . По умолчанию Spring Boot настроит реестр метрик Micrometer в каждом приложении.
Эта реализация по умолчанию собирает предопределенный набор метрик приложения, таких как использование памяти и процессора, HTTP-запросы и некоторые другие. Но эти метрики хранятся только в памяти , что означает, что они будут потеряны при каждом перезапуске приложения.
Чтобы создать автономное решение для мониторинга, мы должны сначала выбрать базу данных метрик, которая находится за пределами приложения Spring Boot. В следующих разделах будут рассмотрены лишь некоторые из доступных вариантов самостоятельного размещения.
Обратите внимание, что каждый раз, когда Spring Boot обнаруживает другую базу данных метрик в пути к классам, она автоматически отключает реестр в памяти.
2.1. InfluxDB
InfluxDB -это база данных временных рядов с открытым исходным кодом. Самый быстрый способ начать работу с InfluxDB-запустить его локально в качестве контейнера Docker:
docker run -p 8086:8086 -v /tmp:/var/lib/influxdb influxdb
Обратите внимание, что при этом метрики будут храниться в локальном разделе /tmp . Это прекрасно подходит для разработки и тестирования, но не будет хорошим выбором для производственных сред.
После запуска InfluxDB мы можем настроить наше приложение Spring Boot для публикации метрик в нем, добавив соответствующую зависимость от микрометра :
io.micrometer micrometer-registry-influx
Кроме того, нам нужно добавить новую запись в файл application.properties :
management.metrics.export.influx.uri=http://localhost:8086
Из коробки имя базы данных устанавливается в my db , в то время как имя пользователя и пароль остаются не заданными.
Однако мы можем переопределить значения по умолчанию с помощью специальных свойств:
management.metrics.export.influx.db=customDbName management.metrics.export.influx.user-name=myUserName management.metrics.export.influx.password=mySecret
InfluxDB не предоставляет собственный инструмент визуализации . Однако он предоставляет отдельный инструмент под названием Chronograph , который хорошо работает для визуализации данных InfluxDB.
2.2. Прометей
Prometheus -это инструментарий мониторинга и оповещения с открытым исходным кодом, первоначально созданный в SoundCloud. Он работает немного иначе, чем InfluxDB.
Вместо того, чтобы настраивать наше приложение для публикации метрик в Prometheus, мы настраиваем Prometheus для периодического опроса нашего приложения .
Во-первых, мы настраиваем наше приложение Spring Boot, чтобы открыть новую конечную точку привода Prometheus. Мы делаем это, включая микрометр-реестр-прометей зависимость:
io.micrometer micrometer-registry-prometheus
Это создаст новую конечную точку привода, которая будет генерировать данные метрик в специальном формате, понятном Prometheus.
Затем мы должны настроить Prometheus для опроса нашего приложения, добавив нужную конфигурацию в prometheus.файл yml .
Затем мы должны настроить Prometheus для опроса нашего приложения, добавив нужную конфигурацию в || prometheus.файл yml||.
scrape_configs: - job_name: 'spring-actuator' metrics_path: '/actuator/prometheus' scrape_interval: 5s static_configs: - targets: ['127.0.0.1:8080']
Затем мы должны настроить Prometheus для опроса нашего приложения, добавив нужную конфигурацию в prometheus.файл yml .
docker run -d \ --name=prometheus \ -p 9090:9090 \ -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus \ --config.file=/etc/prometheus/prometheus.yml
Затем мы должны настроить Prometheus для опроса нашего приложения, добавив нужную конфигурацию в prometheus.файл yml
Затем мы должны настроить Prometheus для опроса нашего приложения, добавив нужную конфигурацию в || prometheus.файл yml||.
Затем мы должны настроить Prometheus для опроса нашего приложения, добавив нужную конфигурацию в prometheus.файл yml
docker run -d \ --name graphite \ --restart=always \ -p 80:80 \ -p 2003-2004:2003-2004 \ -p 2023-2024:2023-2024 \ -p 8125:8125/udp \ -p 8126:8126 \ graphiteapp/graphite-statsd
Затем мы должны настроить Prometheus для опроса нашего приложения, добавив нужную конфигурацию в prometheus.файл yml .
io.micrometer micrometer-registry-graphite
Затем мы должны настроить Prometheus для опроса нашего приложения, добавив нужную конфигурацию в prometheus.файл yml .
management.metrics.export.graphite.host=127.0.0.1 management.metrics.export.graphite.port=2004
Затем мы должны настроить Prometheus для опроса нашего приложения, добавив нужную конфигурацию в prometheus.файл yml .
Затем мы должны настроить Prometheus для опроса нашего приложения, добавив нужную конфигурацию в || prometheus.файл yml||.
Затем мы должны настроить Prometheus для опроса нашего приложения, добавив нужную конфигурацию в prometheus.файл yml .
Затем мы должны настроить Prometheus для опроса нашего приложения, добавив нужную конфигурацию в || prometheus.файл yml||.
Затем мы должны настроить Prometheus для опроса нашего приложения, добавив нужную конфигурацию в || prometheus.файл yml||.
Затем мы должны настроить Prometheus для опроса нашего приложения, добавив нужную конфигурацию в prometheus.файл yml .
Grafana, как правило, обеспечивает лучшую конфигурацию и превосходное оповещение, чем большинство встроенных инструментов визуализации. Он может быть легко расширен с помощью плагинов, и существует множество готовых панелей мониторинга, которые можно импортировать для быстрого создания наших собственных визуализаций.
Чтобы запустить Grafana локально, мы можем запустить его с помощью Docker:
docker run -d -p 3000:3000 grafana/grafana
Теперь мы можем получить доступ к домашней странице Grafana по адресу http://localhost:3000/ .
На этом этапе нам нужно будет настроить один или несколько источников данных . Это может быть любая из баз данных метрик, рассмотренных ранее, или множество других поддерживаемых инструментов.
Как только источник данных настроен, мы можем создать новую панель мониторинга или импортировать ту, которая делает то, что мы хотим.
4. Заключение
В этой статье мы рассмотрели создание автономного решения для мониторинга приложений Spring Boot.
Мы рассмотрели три базы данных метрик, которые легко поддерживает Spring Boot, и увидели, как запустить их локально.
Мы также кратко рассмотрели Grafana, мощный инструмент визуализации, который может отображать данные метрик из различных источников.