Сообщения

Показаны сообщения с ярлыком "Spring Boot Actuator"

Spring Boot Actuator: поддержка Cloud Foundry

Изображение
Модуль actuator Spring Boot включает дополнительную поддержку, которая активируется при развертывании на совместимый экземпляр Cloud Foundry. Путь /cloudfoundryapplication обеспечивает альтернативный безопасный маршрут ко всем компонентам @Endpoint. Расширенная поддержка позволяет дополнить пользовательские интерфейсы управления Cloud Foundry (например, веб-приложение, которое вы можете использовать для просмотра развернутых приложений) информацией об actuator Spring Boot. Например, страница состояния приложения может содержать полную информацию о работоспособности вместо типичного состояния “running” или “stopped”. Путь к /cloudfoundryapplication недоступен для обычных пользователей. Чтобы использовать конечную точку, с запросом должен быть передан действительный токен UAA. Отключение расширенной поддержки Cloud Foundry Actuator Если вы хотите полностью отключить конечные точки /cloudfoundryapplication, вы можете добавить следующий параметр в файл application.properties: manag...

Spring Boot Actuator: мониторинг процессов

Изображение
В модуле spring-boot вы можете найти два класса для создания файлов, которые часто полезны для мониторинга процессов: ApplicationPidFileWriter создает файл, содержащий PID приложения (по умолчанию в каталоге приложения с именем файла application.pid). WebServerPortFileWriter создает файл (или файлы), содержащий порты работающего веб-сервера (по умолчанию в каталоге приложения с именем файла application.port). По умолчанию эти писатели не активированы, но вы можете включить: Расширяя конфигурацию Программно Расширение конфигурации В файле META-INF/spring.factories вы можете активировать прослушиватели, которые записывают файл PID, как показано в следующем примере: org.springframework.context.ApplicationListener=\ org.springframework.boot.context.ApplicationPidFileWriter,\ org.springframework.boot.web.context.WebServerPortFileWriter Программно Вы также можете активировать прослушиватель, вызвав метод SpringApplication.addListeners(…) и передав соответствующий объект Wr...

Spring Boot Actuator: HTTP-трассировка

Изображение
HTTP-трассировку можно включить, предоставив компонент типа HttpTraceRepository в конфигурации вашего приложения. Для удобства Spring Boot предлагает InMemoryHttpTraceRepository, в котором по умолчанию хранятся трассировки для последних 100 обменов запрос-ответ. InMemoryHttpTraceRepository ограничен по сравнению с другими решениями трассировки, и рекомендуется использовать его только для сред разработки. Для производственных сред рекомендуется использовать готовое к работе решение для отслеживания или наблюдения, такое как Zipkin или Spring Cloud Sleuth. Или создайте свой собственный HttpTraceRepository, который соответствует вашим потребностям. Конечная точка httptrace может использоваться для получения информации об обменах запросом-ответом, которые хранятся в HttpTraceRepository. Пользовательская трассировка HTTP Чтобы настроить элементы, включенные в каждую трассировку, используйте свойство конфигурации management.trace.http.include. Для расширенной настройки рассмотрите возможн...

Spring Boot Actuator: аудиторская проверка

Изображение
Когда Spring Security вступает в игру, Spring Boot Actuator имеет гибкую среду аудита, которая публикует события (по умолчанию “authentication success”, “failure” и “access denied” исключения). Эта функция может быть очень полезна для создания отчетов и для реализации политики блокировки на основе ошибок аутентификации. Аудит можно включить, предоставив компонент типа AuditEventRepository в конфигурации вашего приложения. Для удобства Spring Boot предлагает InMemoryAuditEventRepository. InMemoryAuditEventRepository имеет ограниченные возможности, и он рекомендован для использования только в средах разработки. Для производственных сред рассмотрите возможность создания собственной альтернативной реализации AuditEventRepository. Пользовательский аудит Чтобы настроить опубликованные события безопасности, вы можете предоставить свои собственные реализации AbstractAuthenticationAuditListener и AbstractAuthorizationAuditListener. Вы также можете использовать аудиторские услуги для ваших с...

Spring Boot Actuator: конечная точка metrics (metrics endpoint)

Изображение
Spring Boot предоставляет конечную точку metrics, которую можно использовать для диагностики, чтобы проверить метрики, собранные приложением. Конечная точка по умолчанию недоступна и должна быть открыта. При переходе к /actuator/metrics отображается список доступных имен метрик. Вы можете перейти к просмотру информации о конкретной метрике, указав ее имя в качестве селектора, например, /actuator/metrics/jvm.memory.max. Используемое здесь имя должно соответствовать имени, используемому в коде, а не имени после того, как оно было нормализовано для системы мониторинга, в которую оно отправлено. Другими словами, если jvm.memory.max отображается как jvm_memory_max в Prometheus из-за его соглашения об именовании (snake case naming convention), вы все равно должны использовать jvm.memory.max в качестве селектора при проверке счетчика в конечной точке metrics. Вы также можете добавить любое количество параметров запроса tag=KEY:VALUE в конец URL-адреса для детальной размерности по метрике, ...

Spring Boot Actuator: настройка индивидуальных метрик

Изображение
Если вам нужно применить настройки к конкретным экземплярам Meter, вы можете использовать интерфейс io.micrometer.core.instrument.config.MeterFilter. По умолчанию все компоненты MeterFilter будут автоматически применяться к micrometer MeterRegistry.Config. Например, если вы хотите переименовать тег mytag.region в mytag.area для всех идентификаторов метрик, начиная с com.example, вы можете сделать следующее: @Bean public MeterFilter renameRegionTagMeterFilter() { return MeterFilter.renameTag("com.example", "mytag.region", "mytag.area"); } Общие теги Общие теги обычно используются для детализации измерений в операционной среде, такой как host, instance, region, stack и т. д. Общие теги применяются ко всем метрикам и могут быть настроены, как показано в следующем примере: management.metrics.tags.region=us-east-1 management.metrics.tags.stack=prod В приведенном выше примере теги region и stack добавляются ко всем метрикам со значениями us-e...

Spring Boot Actuator: регистрация пользовательских метрик

Изображение
Чтобы зарегистрировать пользовательские метрики, добавьте MeterRegistry в свой компонент, как показано в следующем примере: class Dictionary { private final List words = new CopyOnWriteArrayList (); Dictionary(MeterRegistry registry) { registry.gaugeCollectionSize("dictionary.size", Tags.empty(), this.words); } // … } Если вы обнаружите, что неоднократно применяете набор метрик для компонентов или приложений, вы можете инкапсулировать этот набор в реализацию MeterBinder. По умолчанию метрики всех компонентов MeterBinder будут автоматически привязаны к управляемому Spring MeterRegistry. Читайте также: Spring Boot Actuator: метрики Spring Boot Actuator: поддерживаемые метрики Spring Boot Actuator: Spring MVC метрики

Spring Boot Actuator: Cache, DataSource, Hibernate, RabbitMQ метрики

Изображение
Метрики кэша Автоконфигурация включает инструментарий всех доступных кэшей при запуске с метриками с префиксом cache. Инструментарий кэширования стандартизирован для базового набора показателей. Дополнительные, специфичные для кэша метрики также доступны. Поддерживаются следующие библиотеки кэша: Caffeine EhCache 2 Hazelcast Любая совместимая реализация JCache (JSR-107) Метрики помечаются именем кэша и именем CacheManager, которое получено из имени компонента. Только кэши, настроенные при запуске, привязаны к реестру. Для кэшей, не определенных в конфигурации кэша, например кэши, созданные на лету или программно после фазы запуска, требуют явной регистрации. Для облегчения этого процесса доступен компонент CacheMetricsRegistrar. DataSource метрики Автоконфигурирование обеспечивает инструментирование всех доступных объектов DataSource с метриками с префиксом jdbc.connections. Инструментарий источника данных приводит к тому, что датчики представляют текущие, незанятые, максим...

Spring Boot Actuator: метрики HTTP клиента

Изображение
Spring Boot Actuator управляет инструментарием как RestTemplate, так и WebClient. Для этого вам нужно внедрить автоматически настроенный компоновщик (builder) и использовать его для создания экземпляров: RestTemplateBuilder для RestTemplate WebClient.Builder для WebClient Также можно вручную применить настройщики, отвечающие за эту инструментацию, а именно MetricsRestTemplateCustomizer и MetricsWebClientCustomizer. По умолчанию метрики создаются с именем http.client.requests. Имя можно настроить, установив свойство management.metrics.web.client.request.metric-name. По умолчанию метрики, генерируемые инструментированным клиентом, помечаются следующей информацией: Тег Описание exception Простое имя класса любого исключения, которое было сгенерировано при обработке запроса. method Метод запроса (например, GET или POST) outcome Результат запроса на основе кода состояния ответа. 1xx - INFORMATIONAL, 2xx - SUCCESS, 3xx - REDIRECTION, 4xx CLIENT_ERROR и 5xx - SERVER_ER...

Spring Boot Actuator: метрики сервера Jersey

Изображение
Когда модуль Micrometer micrometer-jersey2 находится на пути к классам, автоконфигурация позволяет обрабатывать запросы, обрабатываемые реализацией Jersey JAX-RS. Если для параметра management.metrics.web.server.request.autotime.enabled задано значение true, этот инструментарий выполняется для всех запросов. В качестве альтернативы, если установлено значение false, вы можете включить инструментарий, добавив @Timed к методу обработки запросов: @Component @Path("/api/people") @Timed // 1 public class Endpoint { @GET @Timed(extraTags = { "region", "us-east-1" }) // 2 @Timed(value = "all.people", longTask = true) // 3 public List listPeople() { ... } } 1 - Для класса ресурса, чтобы включить тайминги для каждого обработчика запросов в ресурсе. 2 - На метод, чтобы включить для отдельной конечной точки. В этом нет необходимости, если он есть в классе, но его можно использовать для дальнейшей настройки таймера для этой конкр...

Spring Boot Actuator: Spring WebFlux метрики

Изображение
Автоконфигурирование позволяет инструментировать запросы, обрабатываемые WebFlux контроллерами и функциональными обработчиками. По умолчанию метрики создаются с именем http.server.requests. Имя можно настроить, установив свойство management.metrics.web.server.request.metric-name. По умолчанию метрики, связанные с Spring WebFlux, помечены следующей информацией: Тег Описание exception Простое имя класса любого исключения, которое было сгенерировано при обработке запроса. method Метод запроса (например, GET или POST) outcome Результат запроса на основе кода состояния ответа. 1xx - INFORMATIONAL, 2xx - SUCCESS, 3xx - REDIRECTION, 4xx CLIENT_ERROR и 5xx - SERVER_ERROR. status HTTP-код статуса ответа (например, 200 или 500) uri Если возможно, шаблон URI запроса до замены переменной (например, /api/person/{id}) Чтобы настроить теги, предоставьте @Bean, который реализует WebFluxTagsProvider. Читайте также: Spring Boot Actuator: метрики Spring Boot Actuator: п...

Spring Boot Actuator: Spring MVC метрики

Изображение
Автоконфигурирование позволяет инструментировать запросы, обрабатываемые Spring MVC. Если для параметра management.metrics.web.server.request.autotime.enabled задано значение true, этот инструментарий выполняется для всех запросов. В качестве альтернативы, если установлено значение false, вы можете включить инструментарий, добавив @Timed к методу обработки запросов: @RestController @Timed // 1 public class MyController { @GetMapping("/api/people") @Timed(extraTags = { "region", "us-east-1" }) // 2 @Timed(value = "all.people", longTask = true) // 3 public List listPeople() { ... } } 1 - Класс контроллера для включения таймингов на каждом обработчике запросов в контроллере. 2 - Метод для включения для отдельной конечной точки. В этом нет необходимости, если он есть в классе, но его можно использовать для дальнейшей настройки таймера для этой конкретной конечной точки. 3 - Метод с longTask = true, чтобы включить тай...

Spring Boot Actuator: поддерживаемые метрики

Изображение
Spring Boot регистрирует следующие основные метрики, когда это применимо: Метрики JVM, отчеты использования: Различной памяти и буферных пулов Статистика, связанная со сборкой мусора Использование потоков Количество загруженных/выгруженных классов Метрика процессора Метрики дескриптора файла Метрики потребителей Kafka (поддержка JMX должна быть включена) Метрики Log4j2: записывает количество событий, зарегистрированных в Log4j2 на каждом уровне Метрики Logback: записывает количество событий, зарегистрированных в Logback на каждом уровне Метрики времени безотказной работы: указание показателя времени безотказной работы и фиксированного показателя, отображающего абсолютное время запуска приложения Метрики Tomcat (server.tomcat.mbeanregistry.enabled должен иметь значение true для всех регистрируемых метрик Tomcat) Метрики Spring Integration Читайте также: Spring Boot Actuator: метрики Spring Boot Actuator: мониторинг и управление по HTTP Spring Boot Actuator: монит...

Spring Boot Actuator: поддерживаемые системы мониторинга

Изображение
AppOptics По умолчанию реестр AppOptics периодически отправляет метрики в api.appoptics.com/v1/measurements. Чтобы экспортировать метрики в SaaS AppOptics, необходимо предоставить свой токен API: management.metrics.export.appoptics.api-token=YOUR_TOKEN Atlas По умолчанию метрики экспортируются в Atlas, работающий на вашем локальном компьютере. Расположение сервера Atlas для использования может быть предоставлено с помощью: management.metrics.export.atlas.uri=https://atlas.example.com:7101/api/v1/publish Datadog Реестр Datadog периодически передает метрики в datadoghq. Чтобы экспортировать метрики в Datadog, необходимо предоставить ваш ключ API: management.metrics.export.datadog.api-key=YOUR_KEY Вы также можете изменить интервал отправки метрик в Datadog: management.metrics.export.datadog.step=30s Dynatrace Реестр Dynatrace периодически передает метрики в настроенный URI. Для экспорта метрик в Dynatrace необходимо предоставить свой токен API, идентификат...

Spring Boot Actuator: метрики

Изображение
Spring Boot Actuator обеспечивает управление зависимостями и автоматическую настройку для Micrometer, фасада метрик приложения, который поддерживает многочисленные системы мониторинга, включая: AppOptics Atlas Datadog Dynatrace Elastic Ganglia Graphite Humio Influx JMX KairosDB New Relic Prometheus SignalFx Simple (простые, хранящиеся в памяти) StatsD Wavefront Spring Boot автоматически настраивает составной MeterRegistry и добавляет реестр в составной для каждой из поддерживаемых реализаций, которые он находит в пути к классам. Зависимость от micrometer-registry-{system} в вашем пути к классам среды выполнения достаточна для Spring Boot для настройки реестра. Большинство реестров имеют общие черты. Например, вы можете отключить определенный реестр, даже если реализация реестра Micrometer находится на пути к классам. Например, чтобы отключить Datadog: management.metrics.export.datadog.enabled=false Spring Boot также добавит все автоматически настроенные реес...

Spring Boot Actuator: логгеры

Изображение
Spring Boot Actuator включает в себя возможность просматривать и настраивать уровни логов вашего приложения во время выполнения. Вы можете просмотреть либо весь список, либо конфигурацию отдельного логгера, которая состоит как из явно настроенного уровня ведения логов, так и из эффективного уровня ведения логов, заданного ему фреймворком логирования. Эти уровни могут быть одним из: TRACE DEBUG INFO WARN ERROR FATAL OFF null null указывает, что нет явной конфигурации. Настроить логгер Чтобы настроить данный логгер, отправьте POST запросом частичную сущность в URI ресурса, как показано в следующем примере: { "configuredLevel": "DEBUG" } Чтобы "сбросить" определенный уровень логгера (и использовать вместо этого конфигурацию по умолчанию), вы можете передать значение null как configuredLevel. Читайте также: Spring Boot Actuator: информация о работоспособности (health endpoint) Spring Boot Actuator: информация о приложении (info end...

Spring Boot Actuator: мониторинг и управление через JMX

Изображение
Расширения управления Java (JMX, Java Management Extensions) предоставляют стандартный механизм для мониторинга и управления приложениями. По умолчанию эта функция не включена и ее можно включить, установив для свойства конфигурации spring.jmx.enabled значение true. Spring Boot по умолчанию предоставляет конечные точки управления в виде MBean-компонентов JMX в домене org.springframework.boot. Настройка имен MBean Имя MBean обычно генерируется из идентификатора конечной точки. Например, конечная точка health отображается как org.springframework.boot:type=Endpoint,name=Health. Если ваше приложение содержит более одного Spring ApplicationContext, вы можете обнаружить, что имена конфликтуют. Чтобы решить эту проблему, вы можете установить для свойства spring.jmx.unique-names значение true, чтобы имена MBean всегда были уникальными. Вы также можете настроить домен JMX, в котором отображаются конечные точки. Следующие настройки показывают пример этого в application.properties: spring...

Spring Boot Actuator: мониторинг и управление по HTTP

Изображение
Если вы разрабатываете веб-приложение, Spring Boot Actuator автоматически настраивает все включенные конечные точки для показа через HTTP. Соглашение по умолчанию заключается в использовании идентификатора конечной точки с префиксом /actuator в качестве пути URL. Например, health показывается как /actuator/health. Actuator изначально поддерживается Spring MVC, Spring WebFlux и Jersey. Если доступны как Jersey, так и Spring MVC, будет использоваться Spring MVC. Jackson является обязательной зависимостью для получения правильных ответов JSON. Настройка путей конечных точек управления Иногда полезно настроить префикс для конечных точек управления (management endpoints). Например, ваше приложение может уже использовать /actuator для других целей. Вы можете использовать свойство management.endpoints.web.base-path, чтобы изменить префикс для конечной точки management, как показано в следующем примере: management.endpoints.web.base-path=/manage В предыдущем примере application.prop...

Spring Boot Actuator: информация о приложении (info endpoint)

Изображение
Информация о приложении предоставляет различную информацию, собранную из всех компонентов InfoContributor, определенных в вашем ApplicationContext. Spring Boot включает в себя несколько автоматически настраиваемых компонентов InfoContributor, и вы можете написать свой собственный. Автоконфигурированные InfoContributors Следующие компоненты InfoContributor автоматически настраиваются Spring Boot, когда это необходимо: Название Описание EnvironmentInfoContributor Предоставляет любой ключ из Environment под info ключом. GitInfoContributor Предоставляет информацию о git, если файл git.properties доступен. BuildInfoContributor Предоставляет информацию о сборке, если доступен файл META-INF/build-info.properties. Их можно отключить, установив свойство management.info.defaults.enabled. Настраиваемая информация о приложении Вы можете настроить данные, предоставляемые конечной точкой info, установив info.* свойства Spring. Все свойства среды под info ключом выставляются а...

Spring Boot Actuator: health группы

Изображение
Иногда полезно разбить показатели работоспособности на группы, которые можно использовать для разных целей. Например, если вы развертываете свое приложение в Kubernetes, вам может потребоваться разные набор индикаторов работоспособности для ваших проб “liveness” и “readiness”. Для создания группы индикаторов работоспособности вы можете использовать свойство management.endpoint.health.group.<name> и указать список идентификаторов индикаторов работоспособности, которые нужно включить или исключить. Например, чтобы создать группу, включающую только индикаторы базы данных, вы можете определить следующее: management.endpoint.health.group.custom.include=db Затем вы можете проверить результат, сделав запрос по localhost:8080/actuator/health/custom. По умолчанию группы наследуют те же параметры StatusAggregator и HttpCodeStatusMapper, что и health системы, однако они также могут быть определены для каждой группы. Также возможно переопределить свойства show-details и roles, если ...