Monitoreo de métricas personalizadas de servicios Java con Prometheus

Configuración de integración para microservicios

Verificación de dependencias necesarias

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-actuator")
    implementation("io.micrometer:micrometer-registry-prometheus")
}

Configuración de aplicación

Habilitar acceso a endpoints de actuator

seguridad:
  nube:
    urisAnonimas: /actuator/****

Configuración de endpoints de métricas

gestion:
  servidor:
    puerto: 19080
  metricas:
    exportacion:
      prometheus:
        habilitado: true
        intervalo: 1m
        descripciones: true
    etiquetas:
      aplicacion: ${spring.application.name}
    web:
      servidor:
        peticion:
          autotiempo:
            habilitado: true
  endpoint:
    salud:
      sondeos:
        habilitado: true
    prometheus:
      habilitado: true
  salud:
    estadoVivo:
      habilitado: true
    estadoListo:
      habilitado: true
  endpoints:
    web:
      exposicion:
        incluir: "salud,metricas,prometheus"

Configuración de implementación en Kubernetes

Recolección de métricas de Promethesu

especificacion:
  replicas: 1
  selector:
    etiquetasCoincidentes:
      aplicacion: demo
  plantilla:
    metadatos:
      etiquetas:
        aplicacion: demo
        k8s: lanzamiento
        nombre: demo
        version: v1
      anotaciones:
        prometheus.io/ruta: /actuator/prometheus
        prometheus.io/puerto: '19080'
        prometheus.io/raspar: 'true'

Creación de PodMonitor

apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
  name: demo-app
  labels:
    monitor-pod: demo
  namespace: default
spec:
  selectorNamespace:
    nombresCoincidentes:
    - default
  selector:
    etiquetasCoincidentes:
      aplicacion: demo
  endpointsMetricasPod:
  - puertoObjetivo: 19080
    ruta: /actuator/prometheus

Panel de control de Grafana

Estructura básica del dashboard

{
  "paneles": [
    {
      "tipo": "tabla",
      "titulo": "Lista de contenedores",
      "objetivos": [
        {
          "expr": "kube_pod_status_phase{pod=~\"$app-(.*)\",namespace=\"default\"} == 1",
          "formato": "tabla"
        }
      ]
    }
  ]
}

Métricas de rendimiento incluidas

  • Uso de CPU y memoria por contenedor
  • Estadísticas de solicitudes HTTP y QPS
  • Métricas de conexiones de base de datos (HikariCP)
  • Monitoreo de pools de threads
  • Métricas JVM (memoria heap/non-heap, GC)

Etiquetas: prometheus Spring Boot Micrometer Kubernetes Grafana

Publicado el 9-9 06:54