Настройка Spring Boot Starter
Как подключить Axelix Spring Boot Starter к приложению Spring Boot, чтобы Axelix Master мог обнаружить его, считать его состояние и воздействовать на него.
На этой странице показано, как подключить Axelix Spring Boot Starter к сервису на Spring Boot, чтобы Axelix Master мог обнаруживать его, считывать его состояние и взаимодействовать с ним — как через пользовательский интерфейс, так и через встроенный в Master сервер MCP (Model Context Protocol), который предоставляет те же данные агентам искусственного интеллекта. Выберите модуль стартера, соответствующий мажорной версии Boot, предоставьте доступ к Axelix actuator-эндпоинтам (начиная с Axelix 1.2.0 это происходит автоматически), поделитесь с Master ключом для подписи JWT и укажите Master, где найти сервис.
Прежде чем вы начнёте
Несколько фактов, которые стоит запомнить, прежде чем вы скопируете любой из приведённых ниже фрагментов.
- Три модуля стартера, по одному для каждой мажорной версии Spring Boot. Выберите тот, который соответствует версии
Boot, которую уже использует ваш сервис:
com.axelixlabs:axelix-spring-boot-2-starter— Spring Boot 2.7.x (это жёсткий минимум, а не просто версия, на которой мы тестировали; собран и протестирован с использованием2.7.18, Spring Cloud2021.0.9, минимальная версия JDK 11).com.axelixlabs:axelix-spring-boot-3-starter— Spring Boot 3.x (собран и протестирован с использованием3.0.13, Spring Cloud2022.0.4, минимальная версия JDK 17).com.axelixlabs:axelix-spring-boot-4-starter— Spring Boot 4.x (собран и протестирован с использованием4.0.6, Spring Cloud2025.1.0, минимальная версия JDK 17).
- Что добавляет стартер: набор Axelix-специфичных actuator-эндпоинтов (
axelix-metadata,axelix-beans,axelix-loggers, …), JWT-фильтр авторизации, который ограничивает доступ к ним, и опциональный компонент саморегистрации, который объявляет сервис в Master. - Плагин сборки Axelix также обязателен: помимо зависимости стартера, подключите Gradle- или Maven-плагин сборки
Axelix. Он записывает координаты сборки (
groupId/artifactId/version) в артефакт, а Master идентифицирует каждое приложение именно по этим координатам — сервис, собранный без плагина, не сможет зарегистрироваться. См. Что такое плагин сборки Axelix? и Настройка плагина сборки. - Два потребителя одних и тех же данных: Master отдаёт пользовательский интерфейс Axelix по адресу
/и сервер MCP по адресу/api/mcp(управляетсяaxelix.master.mcp-server.enabled, по умолчанию включён). Оба считывают данные с тех же actuator-эндпоинтов, которые публикует стартер, — поэтому подключение стартера делает сервис видимым и для пользователей UI, и для MCP-клиентов без дополнительной настройки на стороне стартера. - Что нужно Master для взаимодействия с сервисом: HTTP-доступность к базовому пути актуатора сервиса (по умолчанию
/actuator), Axelix-эндпоинты, открытые черезmanagement.endpoints.web.exposure.include, и ключ для подписи JWT, идентичный тому, который настроен на Master — см. Аутентификация — JWT на стороне Master. - Master может найти сервис двумя способами:
- Автоматическое обнаружение на стороне Master — Master сканирует свою среду (в настоящее время — Kubernetes Services) и проверяет actuator-эндпоинт каждого из них. Стартеру нужно только предоставить доступ к эндпоинтам, ничего дополнительно настраивать не нужно.
- Самостоятельная регистрация — стартер отправляет в Master heartbeat через фиксированный интервал. Используйте этот метод, если Master не может просканировать среду сервиса (другая сеть, отсутствие интеграции с платформой, обычные виртуальные машины).
Реактивные приложения (WebFlux)
Начиная с Axelix 1.3.0, все три стартера работают в реактивных приложениях на Spring WebFlux, а не только в
servlet-приложениях (Spring MVC). Стартер сам определяет, на каком веб-стеке работает приложение, поэтому ничего
дополнительно добавлять или настраивать не нужно: зависимость, плагин сборки и свойства на этой странице одинаковы для
обоих стеков. Axelix-эндпоинты и JWT-авторизация перед ними работают так же, в том числе когда Actuator запущен на
отдельном management.server.port.
Одна функция по-прежнему работает только в servlet-приложениях. Мониторинг транзакций, а вместе с ним и страницы «Мониторинг транзакций» и «Карта сущностей», недоступны в WebFlux-приложениях.
Добавьте зависимость
Укажите координату стартера, соответствующую мажорной версии Boot.
Сниппеты ниже используют последний релиз — 1.2.2.
dependencies {
implementation("com.axelixlabs:axelix-spring-boot-4-starter:1.2.2")
}Стартер также зависит от Spring Boot
Actuator. Если в вашем сервисе ещё
нет spring-boot-starter-actuator, добавьте его рядом.
Плагин сборки — отдельный шаг
Подключение плагина сборки Axelix обязательно для каждого управляемого сервиса, но оно вынесено в отдельный раздел — см. Что такое плагин сборки Axelix? и Настройка плагина сборки.
Транзитивные зависимости
Стартер устроен так, чтобы добавлять в ваш classpath как можно меньше. Всё, с чем он интегрируется, — Spring Boot, Actuator, Spring Kafka, Micrometer, Caffeine, Jackson — используется только при компиляции стартера и не подтягивается вместе с ним: стартер работает с тем, что уже есть в вашем сервисе. Транзитивно он приносит только следующие библиотеки:
| Зависимость | Зачем она нужна |
|---|---|
org.slf4j:slf4j-api | Логирование. Уже есть в любом приложении на Spring Boot. |
io.jsonwebtoken:jjwt-api, jjwt-impl, jjwt-jackson | Проверка JWT, который Master отправляет с каждым запросом. |
Этот список будет сокращаться. Стартер — единственный компонент Axelix, который работает внутри ваших сервисов, и каждая библиотека, которую он приносит, — это ещё одна зависимость в вашем classpath, которую нужно сканировать на уязвимости, обновлять и поддерживать совместимой с остальным приложением. Позиция core-команды Axelix такова: у стартера не должно быть внешних зависимостей вообще, и мы шаг за шагом убираем оставшиеся — за ходом работы можно следить в axelixlabs/axelix#1748.
JsonPath больше не подключается
До Axelix 1.1.x включительно стартер также подтягивал com.jayway.jsonpath:json-path, хотя сам его не использовал.
Начиная с Axelix 1.2.0 эта зависимость удалена — это первый шаг к стартеру без внешних зависимостей, описанному в
axelixlabs/axelix#1748.
Если ваш сервис использует JsonPath в собственном коде и получал его только через стартер Axelix, при обновлении объявите зависимость явно. Версией управляет Spring Boot, поэтому указывать её не нужно:
dependencies {
implementation("com.jayway.jsonpath:json-path")
}Тесты это не затрагивает: spring-boot-starter-test подключает JsonPath самостоятельно.
JSpecify больше не подключается
До Axelix 1.2.x включительно стартер также подтягивал org.jspecify:jspecify. Стартер использует JSpecify только ради
аннотаций nullness, и нужны они ему только при компиляции. Начиная с Axelix 1.3.0 эта зависимость удалена — это
следующий шаг к стартеру без внешних зависимостей, описанному в
axelixlabs/axelix#1748.
Стартер продолжает работать без JSpecify в classpath, потому что JVM игнорирует аннотации, классы которых отсутствуют во время выполнения. На Spring Boot 4 ничего не меняется вовсе: Spring Framework 7 сам зависит от JSpecify.
Если ваш собственный код использует аннотации JSpecify и получал их только через стартер Axelix, при обновлении объявите зависимость явно. Spring Boot 2 и 3 не управляют её версией, поэтому укажите её:
dependencies {
implementation("org.jspecify:jspecify:1.0.0")
}Actuator-эндпоинты
Начиная с Axelix 1.2.0 ничего настраивать вручную не нужно: стартер сам добавляет свои actuator-эндпоинты в
management.endpoints.web.exposure.include при старте приложения, поэтому Master получает к ним доступ «из коробки».
На более старых версиях стартер этого не делает, и эндпоинты нужно перечислить вручную — см. Открытие эндпоинтов на
Axelix ниже 1.2.0.
Что открывает стартер
Стартер выставляет следующие эндпоинты:
| Эндпоинт | Назначение | С версии |
|---|---|---|
axelix-metadata обязательный | Метаданные сервиса; Master опрашивает его первым | 1.0.0 |
axelix-ping | Состояние, память и данные о транзакциях, которые Master опрашивает у уже известных ему экземпляров | 1.3.0 скоро |
axelix-details | Сводная информация об инстансе | 1.0.0 |
axelix-beans | Бины контекста | 1.0.0 |
axelix-caches | Кэши (при наличии CacheManager) | 1.0.0 |
axelix-conditions | Отчёт об условиях автоконфигурации | 1.0.0 |
axelix-configprops | @ConfigurationProperties | 1.0.0 |
axelix-env | Окружение и источники свойств | 1.0.0 |
axelix-feign устаревший | Feign-клиенты (при наличии Feign в classpath). Удалён в 1.3.0, см. ниже | 1.0.0 |
axelix-gc | Сборка мусора | 1.0.0 |
axelix-heap-dump | Heap dump | 1.0.0 |
axelix-loggers | Уровни логирования | 1.0.0 |
axelix-logs | Последние записи лога | 1.3.0 скоро |
axelix-metrics | Метрики | 1.0.0 |
axelix-scheduled-tasks | Запланированные задачи | 1.0.0 |
axelix-thread-dump | Thread dump | 1.0.0 |
axelix-dependencies | SBOM зависимостей | 1.2.0 |
В колонке С версии указан релиз стартера Axelix, в котором эндпоинт появился впервые. 1.0.0 — первый релиз Axelix,
то есть эндпоинт с такой отметкой существует с самого начала. Версия с пометкой скоро ещё не выпущена: эндпоинт
станет доступен в следующем релизе Axelix — минорном или мажорном, смотря какой выйдет раньше.
Эндпоинты, неприменимые к вашему сервису, остаются неактивными — стартер активирует каждый только при выполнении его
предусловий (например, axelix-caches без CacheManager не поднимается).
Начиная с Axelix 1.2.0 стандартные эндпоинты health и info больше не требуются, поэтому стартер сам их не
открывает (до 1.2.0 Axelix зависел от них, и стартер принудительно открывал оба). Открытыми будут только эндпоинты,
перечисленные вами в management.endpoints.web.exposure.include, плюс эндпоинты Axelix — добавьте health и info в
список сами, когда они вам нужны, в том числе health, который Spring Boot иначе открыл бы по умолчанию.
Эндпоинт axelix-feign удалён
До Axelix 1.2.x включительно стартеры для Spring Boot 3 и Spring Boot 4 добавляли ещё и эндпоинт axelix-feign,
который возвращал список клиентов Spring Cloud OpenFeign вашего сервиса. Axelix Master ни разу не использовал его для
отображения чего-либо, и эндпоинт оставался лишь наследием ранних дней проекта.
Начиная с Axelix 1.3.0 эндпоинт удалён из стартеров — вместе со всем, что в Master умело его вызывать.
При обновлении ничего делать не нужно. Единственное видимое отличие: /actuator/axelix-feign больше не существует на
сервисе со стартером 1.3.0 и новее, поэтому, если ваши собственные инструменты обращаются к этому URL напрямую, они
получат 404. Если вы перечисляете эндпоинты Axelix в management.endpoints.web.exposure.include вручную и
axelix-feign есть в этом списке, его можно убрать — оставить его там безвредно.
Добавление собственных эндпоинтов
Если вам нужны свои actuator-эндпоинты, просто перечислите только их — стартер смёржит ваш список со своим, а не заменит его.
management:
endpoints:
web:
exposure:
include:
- prometheusВ результате будет выставлен prometheus и все эндпоинты Axelix.
Значение * тоже поддерживается — тогда открывается всё, и стартер список не трогает.
Открытие эндпоинтов на Axelix ниже 1.2.0
Стартеры старше 1.2.0 не добавляют свои эндпоинты в список открытых самостоятельно, поэтому каждый эндпоинт Axelix,
который должен читать Master, нужно перечислить в management.endpoints.web.exposure.include вручную. Как минимум
откройте axelix-metadata — без него инстанс никогда не появится в Master, — а на практике весь набор, чтобы у
каждого раздела UI были данные. Эндпоинты health и info эти версии стартера открывают принудительно сами, так что
их перечислять не нужно:
management:
endpoints:
web:
exposure:
include:
- axelix-metadata
- axelix-beans
- axelix-caches
- axelix-conditions
- axelix-configprops
- axelix-details
- axelix-env
- axelix-gc
- axelix-heap-dump
- axelix-loggers
- axelix-metrics
- axelix-scheduled-tasks
- axelix-thread-dumpЭти версии стартера также добавляют устаревший эндпоинт axelix-feign. В список он не включён намеренно: Master его
никогда не читает, а в Axelix 1.3.0 эндпоинт удалён — см. раздел Что открывает стартер.
Экспорт метрик Axelix через Micrometer
Actuator-эндпоинт axelix-metrics нужен для пользовательского интерфейса Axelix. Кроме того, Axelix Spring Boot Starter
может публиковать небольшой набор Axelix-специфичных метрик в MeterRegistry вашего приложения.
Этот путь экспорта включается автоматически, когда в приложении есть бин MeterRegistry. Отдельного свойства Axelix
для включения данного функционала нет. Стартер регистрирует такие метрики:
| Метрика | Тип | Теги | Значение |
|---|---|---|---|
axelix_transaction_duration | Timer | class, method | Длительность каждого мониторируемого выполнения @Transactional. Таймер также публикует перцентили 0.5, 0.95 и 0.99. |
axelix_transaction_queries | Counter | class, method | Общее количество SQL-запросов, выполненных внутри мониторируемых транзакций. |
axelix_transaction_external_calls | Counter | class, method | Общее количество внешних вызовов (например, RestTemplate), сделанных внутри мониторируемых транзакций. |
axelix_cache_requests | Counter | cache, result | Общее количество обращений к кэшу, записанных Axelix-enhanced кэшами. |
axelix_cache_enabled | Gauge | cache | Текущее runtime-состояние каждого enhanced-кэша: 1, когда кэш включён, и 0, когда выключен. |
Эти метрики дополняют UI-ориентированные actuator-эндпоинты, а не заменяют их. Пользовательский интерфейс по-прежнему
читает axelix-metrics, axelix-caches и axelix-transactions-monitoring.
Поделитесь JWT-ключом подписи с Master
Каждый Axelix actuator-эндпоинт контролируется JwtAuthorizationFilter. Фильтр ожидает токен HS256, HS384 или HS512,
подписанный тем же ключом, который использует Master, поэтому обе стороны должны согласовать алгоритм и секретный ключ.
Используйте то же значение, которое вы указали для axelix.master.auth.jwt.signing-key на Master.
axelix:
sbs:
auth:
jwt:
algorithm: HMAC512
signing-key: ${AXELIX_JWT_SIGNING_KEY}
duration: 5mduration определяет, как долго действителен выпущенный стартером токен для heartbeat-сигналов саморегистрации, по
умолчанию он равен пяти минутам, после чего стартер автоматически его ротирует.
Ключ подписи, общий для Master и каждого мониторируемого сервиса, — конфиденциальный секрет. Инжектируйте его через переменную окружения, монтируемый файл или менеджер секретов, а не через YAML, закоммиченный в репозиторий.
Запуск без ключа подписи
Начиная с Axelix 1.2.0, algorithm и signing-key необязательны. Если они не заданы, стартер использует HMAC512 и
тот же встроенный ключ, что и Master по умолчанию, поэтому сервис подключается к Master с настройками по умолчанию без
настройки ключа. Пока используется встроенный ключ, стартер при старте пишет в лог предупреждение.
Встроенный ключ общеизвестен. Любой, у кого есть доступ к actuator-эндпоинтам сервиса, может подписать им токен и
вызвать эндпоинты Axelix, например прочитать окружение или снять heap dump. Задайте собственный
axelix.sbs.auth.jwt.signing-key, такой же, как в Master, прежде чем использовать Axelix не только для локального
знакомства.
Дайте Master найти сервис
Выберите один из двух предложенных ниже вариантов. На практике они исключают друг друга — саморегистрация только увеличивает задержку, если Master уже может просканировать среду.
Вариант A — автоматическое обнаружение на стороне Master
Если Master работает в кластере Kubernetes вместе с вашими сервисами, проще всего настроить его так, чтобы он сканировал
namespace в поисках Services и опрашивал /actuator/axelix-metadata каждого из них. На стороне стартера не требуется
никакой дополнительной настройки, помимо открытия actuator-эндпоинтов и общего JWT-ключа подписи. Настройте сканирование
на стороне Master через axelix.master.discovery.auto.* — см. Обнаружение —
автообнаружение на странице Master.
Что Master делает при каждом сканировании, описано на странице Как работает обнаружение.
Вариант B — Саморегистрация
Если Master не может просканировать среду сервиса — другой кластер, обычная виртуальная машина, изолированная сеть —
включите саморегистрацию в стартере. Сервис тогда отправляет в Master heartbeat со своим actuator URL через
фиксированный интервал. Master принимает запрос по адресу POST /api/internal/service/register — это же значение
указывается в axelix.sbs.discovery.master-url. Начиная с Axelix 1.3.0, стартер отправляет полную регистрацию только
один раз, а затем переходит на лёгкие heartbeat-сигналы, которые уходят на эндпоинт рядом с master-url. Весь цикл
описан на странице Как работает обнаружение.
axelix:
sbs:
discovery:
self-registration: true
master-url: http://master.internal:2935/api/internal/service/register
instance-actuator-url: http://my-app.internal:8080/actuator
instance-name: orders-service
heartbeat-interval: 15sНесколько деталей, на которых люди спотыкаются:
instance-actuator-url— это базовый URL-адрес сервиса, поскольку Master будет обращаться к нему из своей собственной сети — только по имени хоста и порту.master-url— это полный URL-адрес, включая/api/internal/service/register. Стартер отправляет его без изменений. Начиная с Axelix1.2.0Master по умолчанию слушает порт2935; до этого релиза портом по умолчанию был8080— см. Общие настройки.instance-name— это имя, которое Master показывает для этого сервиса в пользовательском интерфейсе и в MCP-ответах. Выбирайте имя, которое переживает рестарты и реплики, — как правило, имя сервиса, а не имя пода.- Саморегистрация принимается Master из коробки (
axelix.master.discovery.self-registration.enabledпо умолчаниюtrue), установите её вfalse, если хотите отказаться от heartbeat-сигналов. Master выселяет сервис послеaxelix.master.discovery.self-registration.eviction.heartbeat-timeoutмолчания (по умолчанию45s), поэтому держитеheartbeat-intervalс запасом меньше этого значения.
Маскирование чувствительных значений свойств
Эндпоинты Axelix axelix-env и axelix-configprops возвращают значения свойств в Master. Чтобы секреты не утекали при
обычных просмотрах, стартер маскирует значения, которые он возвращает вызывающим без соответствующего полномочия.
Механизм одинаков для обоих эндпоинтов и управляется одним свойством стартера:
axelix.sbs.endpoints.config.sanitized-properties
- Пустой список (по умолчанию) — каждое значение, возвращаемое
axelix-envиaxelix-configprops, заменяется на******для вызывающих без соответствующего полномочия. По умолчанию выбран намеренно консервативный вариант: чтобы быть в безопасности, ничего включать не нужно. - Непустой список — маскируются только перечисленные ключи, всё остальное возвращается вызывающему без изменений. Используйте этот режим, если консервативное поведение по умолчанию слишком агрессивное и вы хотите маскировать только конкретные ключи (пароли, токены, ключи подписи).
Полномочие проверяется по каждому эндпоинту отдельно:
axelix-env— полномочиеENV_VALUES_READпозволяет вызывающему видеть исходные значения.axelix-configprops— полномочиеCONFIG_PROPS_VALUES_READпозволяет вызывающему видеть исходные значения.
Оба полномочия выдаются встроенными в Master ролями ADMIN и SUPER_ADMIN. VIEWER и EDITOR всегда проходят через
функцию маскирования. Полную матрицу см. в Роли и
полномочия.
axelix:
sbs:
endpoints:
config:
sanitized-properties:
- database.password
- spring.datasource.password
- jwt.signing-keyСтандартные переключатели маскирования Spring Boot Actuator — management.endpoint.env.show-values,
management.endpoint.env.keys-to-sanitize и их эквиваленты для configprops — не учитываются.
Справочник по конфигурации
Все свойства стартера живут в пространстве имён axelix.sbs.*.
Отключение стартера
axelix.sbs.enabled — глобальный переключатель всего стартера. По умолчанию он равен true, то есть достаточно
добавить зависимость, чтобы активировать всё описанное на этой странице. Установите его в false — и каждая
автоконфигурация Axelix отключится: не будет ни Axelix actuator-эндпоинтов, ни фильтра JWT-авторизации, ни
heartbeat-сигналов саморегистрации, ни метрик Micrometer, ни мониторинга транзакций. Приложение запустится так, как
будто стартера нет в classpath, при этом сама зависимость остаётся в сборке.
Этот переключатель пригодится, когда нужно выключить Axelix в конкретном окружении — например, локально или в тестовом профиле — не поддерживая отдельный набор зависимостей. Кроме того, это быстрый способ исключить стартер из подозреваемых при диагностике проблем на старте приложения.
axelix:
sbs:
enabled: falseСвойство читается один раз — при старте. Поэтому, чтобы изменение вступило в силу, приложение нужно перезапустить.
При выключенном стартере Master теряет сервис из виду: запросы автоматического обнаружения к
/actuator/axelix-metadata перестают отвечать, heartbeat-сигналы саморегистрации прекращаются, и сервис исчезает из UI
и из ответов MCP.
| Свойство | По умолчанию | Описание |
|---|---|---|
axelix.sbs.enabled | true | Глобальный переключатель всего стартера. Установите в false, чтобы отключить каждую автоконфигурацию Axelix. Ведёт себя одинаково в стартерах для Spring Boot 2, 3 и 4. |
Аутентификация — JWT
| Свойство | По умолчанию | Описание |
|---|---|---|
axelix.sbs.auth.jwt.algorithm | HMAC512 (с 1.2.0, раньше обязательно) | Алгоритм подписи. Один из HMAC256, HMAC384 или HMAC512. Должен совпадать с axelix.master.auth.jwt.algorithm на Master. |
axelix.sbs.auth.jwt.signing-key | встроенный ключ (с 1.2.0, раньше обязательно) | Общий секрет, которым проверяются выпущенные Master токены и подписываются heartbeat-сигналы саморегистрации. Должен совпадать с ключом подписи Master. |
axelix.sbs.auth.jwt.duration | 5m | Срок действия токена саморегистрации, который стартер выпускает сам себе. Токены автоматически ротируются до истечения. |
Саморегистрация
Саморегистрация выключена по умолчанию (axelix.sbs.discovery.self-registration=false) — оставьте всё как есть, если Master
может найти сервис через автообнаружение на стороне Master.
Когда axelix.sbs.discovery.self-registration=true, следующие свойства становятся обязательными:
axelix.sbs.discovery.master-urlaxelix.sbs.discovery.instance-actuator-urlaxelix.sbs.discovery.instance-name
Приёмник этих heartbeat-сигналов на стороне Master — эндпоинт, таймаут выселения, расписание подметания выселений —
описан на странице Master в Обнаружение —
саморегистрация. JWT-ключ подписи, заданный в
axelix.sbs.auth.jwt.signing-key, должен совпадать с axelix.master.auth.jwt.signing-key на Master, иначе
heartbeat-сигналы будут отклоняться с 401.
| Свойство | По умолчанию | Описание |
|---|---|---|
axelix.sbs.discovery.self-registration | false | Главный переключатель. Установите true, чтобы включить саморегистрацию; оставьте false, чтобы полагаться на автообнаружение на стороне Master. |
axelix.sbs.discovery.master-url | (не задано) обязательное | Полный URL-адрес эндпоинта саморегистрации на Master, например http://master:2935/api/internal/service/register. Обязательно при self-registration=true. |
axelix.sbs.discovery.instance-actuator-url | (не задано) обязательное | Базовый URL-адрес этого сервиса, доступный из Master (необходимо указать постфикс /actuator). Обязательно при self-registration=true. |
axelix.sbs.discovery.instance-name | (не задано) обязательное | Отображаемое имя, показываемое в Axelix UI и в MCP-ответах. Обязательно при self-registration=true. |
axelix.sbs.discovery.heartbeat-interval | 15s | Интервал между heartbeat-сигналами. Должен быть меньше heartbeat-timeout выселения на Master. |
Маскирование значений в эндпоинтах
| Свойство | По умолчанию | Описание |
|---|---|---|
axelix.sbs.endpoints.config.sanitized-properties | (пустой список) | Ключи свойств, чьи значения маскируются как ****** для вызывающих без ENV_VALUES_READ (для axelix-env) или CONFIG_PROPS_VALUES_READ (для axelix-configprops). Пустой список означает, что маскируются все значения. См. Маскирование чувствительных значений свойств для правил сопоставления. |
Управление кэшами
Управление кэшами - это то, что обеспечивает работу страницы «Кэши» и метрик axelix_cache_*. Под капотом стартер
оборачивает каждый бин CacheManager вашего приложения в прокси, который записывает обращения к кэшам и позволяет
включать, выключать и очищать кэши во время работы приложения, а данные отдаёт через actuator-эндпоинт axelix-caches.
Эта функция включена по умолчанию, как только стартер оказывается в classpath.
Установите значение свойства axelix.sbs.cache.management.enabled в false, чтобы полностью её отключить, без
проксирования CacheManager, без эндпоинта axelix-caches и без метрик кэшей. Ваши бины CacheManager при этом остаются
ровно такими, какими их определило ваше приложение.
axelix:
sbs:
cache:
management:
enabled: false| Свойство | По умолчанию | Описание |
|---|---|---|
axelix.sbs.cache.management.enabled | true | Главный переключатель управления кэшами. Установите false, чтобы вся автоконфигурация управления кэшами отключилась. Работает одинаково на стартерах Spring Boot 2, 3 и 4. |
При отключённом управлении кэшами странице «Кэши» в Master нечего показывать для этого сервиса, а MCP-инструменты для кэшей завершаются для него ошибкой.
Записи логов
Эндпоинт axelix-logs отдаёт последние записи логов вашего приложения, поэтому их можно прочитать без доступа к
хосту. Стартер хранит эти записи в памяти с момента запуска приложения. Когда буфер заполнен, каждая новая запись
вытесняет самую старую. Поскольку буфер находится в памяти, после перезапуска он снова пуст.
По умолчанию стартер хранит последние 1000 записей. Увеличьте axelix.sbs.logs.max-entries, если нагруженный сервис
пишет столько логов, что 1000 записей покрывают лишь несколько секунд. Уменьшите значение, если памяти мало: каждая
хранимая запись остаётся в куче.
axelix:
sbs:
logs:
max-entries: 5000| Свойство | По умолчанию | Описание |
|---|---|---|
axelix.sbs.logs.max-entries | 1000 | Максимальное количество последних записей логов, которые стартер хранит в памяти. Должно быть больше 0. |
Стартер проверяет значение после запуска приложения. Если оно равно 0 или отрицательное, запуск завершается ошибкой
IllegalArgumentException с сообщением axelix.sbs.logs.max-entries must be positive.
Мониторинг транзакций
Мониторинг транзакций — это то, что обеспечивает работу страницы «Мониторинг транзакций» и связанных метрик. Под капотом
стартер оборачивает ваши @Transactional методы (путем обычного проксирования) с целью сбора различного рода инсайтов, случившихся в
транзакции. Собранные инсайты передаются в Master внутри метаданных регистрации сервиса (которые отправляются либо в момент heartbeat
в случае саморегистрации, либо сканируются Master-ом в момент автоматического обнаружения), поэтому отдельный actuator-эндпоинт для этого не требуется.
Эта функция включена по умолчанию, как только стартер оказывается в classpath.
Мониторинг транзакций работает только в servlet-приложениях (Spring MVC). В реактивном приложении (WebFlux) стартер его не включает, независимо от значения свойства. См. Реактивные приложения (WebFlux).
Несмотря на то, что overhead от этого проксирования крайне небольшой, если вдруг вы захотите отключить
этот функционал - это можно сделать. Установите значение свойства axelix.sbs.transaction.monitoring.enabled в false,
чтобы полностью её отключить — без bean post-processor'ов, без проксирования источника данных, без фильтра очистки и без интегратора Hibernate.
axelix:
sbs:
transaction:
monitoring:
enabled: false| Свойство | По умолчанию | Описание |
|---|---|---|
axelix.sbs.transaction.monitoring.enabled | true | Главный переключатель мониторинга транзакций. Установите false, чтобы вся автоконфигурация мониторинга транзакций отключилась. Работает одинаково на стартерах Spring Boot 2, 3 и 4. |
Отключение мониторинга транзакций также отключает описанное ниже обнаружение in-memory pagination, поскольку это обнаружение является частью той же автоконфигурации.
Обнаружение in-memory pagination
Обнаруживает случаи применения in-memory pagination, выполняемые Hibernate при использовании методов setFirstResult/setMaxResults совместно с выборкой коллекций через fetch.
По умолчанию мониторинг транзакций регистрирует appender, который перехватывает предупреждения Hibernate (HHH000104 в Hibernate 5.x и HHH90003004 в Hibernate 6.x–7.3.x). Стартер выбирает appender в соответствии с активной системой логирования приложения, поэтому обнаружение работает как на Logback, так и на Log4j2:
- Logback — стартер регистрирует
com.axelixlabs.axelix.sbs.spring.core.persistence.hibernate.pagination.LogbackInMemoryPaginationAppender. Так происходит в стандартной конфигурации Spring Boot, где системой логирования является Logback. - Log4j2 — если приложение использует Log4j2 (обычно после добавления
spring-boot-starter-log4j2и исключения стандартного стартера Logback), стартер регистрируетcom.axelixlabs.axelix.sbs.spring.core.persistence.hibernate.pagination.Log4j2InMemoryPaginationAppender.
Выбирать между ними не нужно — стартер сам определяет активную систему логирования и регистрирует подходящий appender.
Установите значение свойства axelix.sbs.transaction.monitoring.in-memory-pagination-detection.enabled в false, если
хотите отключить регистрацию любого из этих appender-ов.
axelix:
sbs:
transaction:
monitoring:
in-memory-pagination-detection:
enabled: falseСм. также
- Настройка плагина сборки — вторая половина подключения сервиса; обязательна для регистрации сервиса.
- Настройка Master — где задаются ключ подписи, таймаут выселения и сканирование Kubernetes.
- Что такое Master? — фон того, как Master использует данные, которые публикует стартер.
- Аутентификация — углублённый взгляд на JWT и резолюцию полномочий с обеих сторон.
Настройка Master
На этой странице показано, как запустить Axelix Master в вашей среде. Выберите формат, который соответствует тому, как вы предоставляете доступ к остальным своим сервисам: автономный JAR-файл, Docker-контейнер, стек Docker Compose или развёртывание в Kubernetes.
Настройка плагина сборки Axelix
При использовании плагина Axelix для сборки координаты сборки записываются в артефакт, чтобы Axelix Master мог идентифицировать экземпляр.