Конечная точка привода / метрики не включает http.server.requests - PullRequest
0 голосов
/ 28 января 2019

В соответствии с документацией привода пружинной загрузки

Auto-configuration enables the instrumentation of requests handled by Spring MVC. When management.metrics.web.server.auto-time-requests is true, this instrumentation occurs for all requests. Alternatively, when set to false, you can enable instrumentation by adding @Timed

И
By default, metrics are generated with the name, http.server.requests

Когда я получаю доступ к конечной точке / metrics, я получаю

{
  "mem": 405105,
  "mem.free": 150352,
  "processors": 8,
  "instance.uptime": 440055,
  "uptime": 455888,
  "systemload.average": 1.904296875,
  "heap.committed": 315392,
  "heap.init": 262144,
  "heap.used": 164015,
  "heap": 4194304,
  "nonheap.committed": 92800,
  "nonheap.init": 4992,
  "nonheap.used": 89714,
  "nonheap": 0,
  "threads.peak": 64,
  "threads.daemon": 43,
  "threads.totalStarted": 95,
  "threads": 46,
  "classes": 12459,
  "classes.loaded": 12459,
  "classes.unloaded": 0,
  "gc.g1_young_generation.count": 12,
  "gc.g1_young_generation.time": 127,
  "gc.g1_old_generation.count": 0,
  "gc.g1_old_generation.time": 0,
  "httpsessions.max": -1,
  "httpsessions.active": 0,
  "datasource.primary.active": 0,
  "datasource.primary.usage": 0.0,
  "gauge.response.example.users": 2.0,
  "counter.status.200.example.users": 5
}

Так что http.server.requests там нет.Тип counter.status.200.example показывает запросы, которые проходят через мое приложение, но они разделены на конечную точку.Мне нужен общий для всего приложения.Я попытался отключить management.metrics.web.server.auto-time-requests и добавить @Timed к конечным точкам, но это не сработало.Результат был таким же, как приведенный выше.

Кто-нибудь знает, как я могу показать общие запросы к приложению?Заранее спасибо.

* РЕДАКТИРОВАТЬ

при добавлении compile('io.micrometer:micrometer-registry-prometheus:latest.release') я получаю следующую ошибку

Parameter 0 of method prometheusEndpointFix in PrometheusEndpointConfiguration required a bean of type 'PrometheusEndpoint' that could not be found.

Даже если @Bean есть ..

@Configuration
class PrometheusEndpointConfiguration {

  @Bean
  public PrometheusEndpoint prometheusEndpoint() {
    return new PrometheusEndpoint(CollectorRegistry.defaultRegistry);
  }
...
}

1 Ответ

0 голосов
/ 29 января 2019

При использовании микрометра с Spring Boot 1.5 через micrometer-spring-legacy «старая» конечная точка /metrics из структуры привода Spring Boot 1.5 не будет заменена микрометром.В приложении Spring Boot 1.5 старая реализация метрик исполнительного механизма и Микрометр живут совершенно независимо друг от друга.

В настоящее время единственный способ, с помощью которого я могу легко визуализировать собранные в микрометре метрики в этом сценарии, - использовать Микрометры Прометейбэкэнд, включая micrometer-registry-prometheus дополнительно к micrometer-spring-legacy.Это по умолчанию - предоставит конечную точку /prometheus и предоставит метрики в формате представления Prometheus.

Конечно, вы также можете свернуть собственную реализацию конечной точки, которая имитирует конечную точку Spring Boot 2 /actuator/metrics, котораязапрашивает MeterRegistry и визуализирует все содержащиеся метрики.Но даже в этом случае это следует просто использовать для отладки, вместо постоянного чтения этой конечной точки и сохранения этих данных где-то в хранилище метрик.Формат экспозиции «Прометей» был «разработан» именно для этого варианта использования.(И он вполне читабелен, поэтому может служить на первый взгляд точкой входа, если вы не просматриваете эти метрики.)

...