12 Ekim 2021 Salı

SpringBoot Actuator - Metrics Endpoint - Micrometer Metriclerini Gösterir

Giriş
Açıklaması şöyle. Micrometer kütüphanesi aracılığıyla metric üretir.
Spring Boot Actuator provides dependency management and auto-configuration for Micrometer, an application metrics facade that supports numerous monitoring systems.
Açıklaması şöyle. Yani aslında Micrometer bir nevi SLF4J gibi düşünülebilir.
Both Quarkus and Spring use the Micrometer metrics library for collecting metrics. Micrometer provides a vendor-neutral interface for registering dimensional metrics and metric types, such as counters, gauges, timers, and distribution summaries. These core types are an abstraction layer that can be adapted and delegated to specific implementations, such as Prometheus.

The Quarkus Micrometer extension automatically times all HTTP server requests. Other Quarkus extensions also automatically add their own metrics collections. Applications can add their own custom metrics as well. Quarkus will automatically export the metrics on the /q/metrics endpoint. In Spring, Micrometer is supported by the Spring Boot Actuator starter if the Micrometer libraries are included on the application's classpath.
Çıktı Çeşitler
Şöyledir. Yani çok fazla çeşit ve formatta çıktı verebiliyor
Atlas
AWS CloudWatch
Datadog
Dynatrace
Elastic
Graphite
Influx
Instana
JMX
New Relic
OpenTelemetry Protocol
Prometheus
StatsD
DataDog Formatı
Metrics endpoint istenirse DataDog formatında çıktı da verebilir. DataDog yazısına taşıdım

Prometheus Formatı
Metrics endpoint istenirse Prometheus formatında çıktısı da verebilir.  Prometheus Endpoint yazısına taşıdım

Etkinleştirmek
Etkinleştirmek için şöyle yaparız
management.endpoint.metrics.enabled = true
management.endpoints.web.exposure.include = metrics
tags alanı
Prometheus için tag belirtir. Açıklaması şöyle
management.metrics.tags.application - we may monitor multiple applications on our Grafana dashboard, so we need to distinguish one application from another

Örnek
Şöyle yaparız
spring:
  application:
    name: [SERVICE_NAME]
...

management:
  endpoint:
    health:
      show-details: always
  endpoints:
    web:
      exposure:
        include: "*"
  metrics:
    tags:
      application: ${spring.application.name}
Örnek
Şöyle yaparız.
http://localhost:8080/actuator/metrics
Çıktı olarak şunu alırız. Burada toplanan tüm metriklerin isimleri var
"names": [
    "jvm.threads.states",
    "process.files.max",
    "jvm.memory.used",
    "jvm.gc.memory.promoted",
    "jvm.memory.max",
    "system.load.average.1m",
    ...
  ]
}
Eğer kullanılan diğer kütüphaneler de Micrometer metric üretiyorsa onları da görürüz. 

JVM Çıktısı
JVM İçin Metrics Endpoint yazısına taşıdım

Örnek - Hikari
Hikari ve Tomcat metric üretir. Şöyle yaparız
curl -s http://localhost:8080/actuator/metrics | jq
{
  "names": [
    "hikaricp.connections",
    "hikaricp.connections.acquire",
    "hikaricp.connections.active",
    "hikaricp.connections.creation",
    "hikaricp.connections.idle",
    "hikaricp.connections.max",
    "hikaricp.connections.min",
    "hikaricp.connections.pending",
    "hikaricp.connections.timeout",
    "hikaricp.connections.usage",
    "http.server.requests",
    "jdbc.connections.active",
    "jdbc.connections.idle",
    "jdbc.connections.max",
    "jdbc.connections.min",
    "spring.data.repository.invocations",
    "tomcat.sessions.active.current",
    "tomcat.sessions.active.max",
    "tomcat.sessions.alive.max",
    "tomcat.sessions.created",
    "tomcat.sessions.expired",
    "tomcat.sessions.rejected"
  ]
}

Örnek - Tek Metric Değerini Görmek
Şöyle yaparız
curl -s http://localhost:8080/actuator/metrics/hikaricp.connections.active | jq
{
  "name": "hikaricp.connections.active",
  "description": "Active connections",
  "baseUnit": null,
  "measurements": [
    {
      "statistic": "VALUE",
      "value": 4
    }
  ],
  "availableTags": [
    {
      "tag": "pool",
      "values": [
        "HikariPool-1"
      ]
    }
  ]
}
Örnek - Tek Metric Değerini Görmek
Şöyle yaparız
http://localhost:8080/actuator/metrics/cache.size
Örnek - Tek Metric Değerini Görmek
Detayları görmek için şöyle yaparız.
http://localhost:8080/actuator/metrics/system.cpu.count
Örnek  - Tek Metric Değerini Görmek
Detayları görmek için şöyle yaparız.
/actuator/metrics/http.server.requests

Hiç yorum yok:

Yorum Gönder