Как изменить путь конечной точки в Micronaut? - PullRequest
0 голосов
/ 20 мая 2019

Я настроил микронавигацию с помощью cli и хочу добавить конечную точку, которая предоставляет метрики prometheus. Следуя инструкциям (и Микронавт: Как получить метрики в формате Prometheus? ), я добавил вещи к своему application.yml следующим образом:

micronaut:
  application:
    name: foo-service
  metrics:
    enabled: true
    export:
      prometheus:
        enabled: true
        step: PT1M
        descriptions: true
endpoints:
  metrics:
    enabled: true
  prometheus:
    enabled: true
    sensitive: false

Теперь у меня есть две конечные точки, одна на /metrics и одна на /prometheus. Тем не менее, я хочу /metrics, чтобы вернуть метрики Прометея. Есть идеи, как мне этого добиться?

Я знаю, что мог бы пойти и поместить все конечные точки в подпуть, такой как /endpoints, используя endpoints.all.path, а затем прокси-сервер туда, но это действительно ужасно, и не так, как я хочу решить.

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Вы можете отключить конечную точку метрики и создать контроллер, который отвечает на /metrics.Этот контроллер может внедрить PrometheusEndpoint и передать вызов bean-компоненту конечной точки.

0 голосов
/ 24 мая 2019

Благодаря james-kleeth я выбрал правильный путь, хотя в основном это повторная реализация. Я отключил конечную точку Прометея и добавил контроллер. Однако, когда конечная точка отключена, я больше не могу ее внедрить Его реализация была «тривиальной» (просто ссылка на реестр Prometheus). Это мое решение:

package my.company.service

import io.micrometer.prometheus.PrometheusMeterRegistry
import io.micronaut.configuration.metrics.annotation.RequiresMetrics
import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Get
import io.micronaut.http.annotation.Produces
import io.swagger.v3.oas.annotations.Operation
import javax.inject.Inject

@RequiresMetrics
@Controller("/metrics")
class MetricsController @Inject constructor(val prometheusMeterRegistry: PrometheusMeterRegistry) {
    @Operation(summary = "Provide metrics in Prometheus format")
    @Get
    @Produces("text/plain; version=0.0.4")
    fun metrics(): String = prometheusMeterRegistry.scrape()
}
...