На данный момент у меня есть два нестандартных весенних артефакта — metrics-util
и web-utils
. metrics-util содержит все функции, связанные с измерением метрик, такие как веб-фильтр для расчета метрик всех остальных контроллеров. Web-utils использует некоторые функции из metrics-util для измерения показателей внутри функции.
Моя основная программа Spring вызывает внутри себя функции веб-утилиты. И я использую одно и то же имя с разными тегами. Проблема, с которой я столкнулся, заключается в том, что я вижу метрики и различные теги в /actuator/metrics/{metric_name}
, но в конечной точке, где выполняется очистка Prometheus, отображается только первый экземпляр имени метрики.
Версия микрометра:
implementation 'io.micrometer:micrometer-core:1.12.3'
implementation 'io.micrometer:micrometer-registry-prometheus:1.12.3'
Моя конфигурация реестра:
@Configuration
@ComponentScan(basePackages = ["co.hyperface.ark.metricsutil.*"])
class BaseMetricsConfig {
@Bean
MeterRegistry meterRegistry() {
return new PrometheusMeterRegistry(PrometheusConfig.DEFAULT)
}
}
Как я внедряю в свою программу:
class MetricsUtil {
private MeterRegistry meterRegistry
@Autowired
MetricsUtil (MeterRegistry meterRegistry) {
this.meterRegistry = meterRegistry
}
}
Ожидаемый результат:
Для любой конечной точки сначала активируется веб-фильтр, поэтому его callcount{call_type='rest_controller'}
должно увеличиться, затем, поскольку я вызываю функцию веб-утилиты внутри этого контроллера, количество вызовов callcount{call_type='external'}
должно быть увеличено.
Но в конечной точке очистки я получаю только callcount{call_type='rest_controller'}
. но я могу увидеть их обоих на /actuator/metrics/callcount
Заранее спасибо.
metrics-util содержит все функции, связанные с измерением метрик, такие как веб-фильтр для расчета метрик всех остальных контроллеров. Web-utils использует некоторые функции из metrics-util для измерения показателей внутри функции.
Вы знаете, что если вы добавите Spring Boot Actuator, вы получите это бесплатно?
И я использую одно и то же имя с разными тегами. Проблема, с которой я столкнулся, заключается в том, что я вижу метрики и различные теги в /actuator/metrics/{metric_name}, но в конечной точке, где выполняется очистка Prometheus, отображается только первый экземпляр имени метрики.
Это не рекомендуется сервером Prometheus и невозможно с клиентом Prometheus. Пожалуйста не делай этого. Если теги разные, это другая метрика. Если они одинаковые, теги должны быть одинаковыми. Если у вас нет значения или вы не знаете его, вы всегда можете использовать null
, none
, na
, unknown
и т. д.
Решение: вы можете удалить «metrics-utils» и «web-utils», добавить актуатор Spring Boot, который будет все это делать (см. метрику http_server_requests
).
Я только что заметил, что микрометр не работает на разных сервисах с одинаковым названием метрики, хотя у них разные теги.