es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Métricas de OpenTelemetry para JVM y Sistema

He utilizado micrometer.io durante la mayor parte de mi carrera para recopilar métricas. Una de las características más geniales de micrometer es la vinculación para recopilar información sobre el sistema host y la JVM: https://micrometer.io/docs/ref/jvm, lo que permite ejecutar el panel de control de Grafana sin mucho esfuerzo: https://grafana.com/grafana/dashboards/4701.

Actualmente, estoy comenzando a aprender sobre OpenTelemetry, pero no puedo encontrar una descripción de las funcionalidades mencionadas anteriormente. No quiero usar instrumentación, quiero depender de una definición manual de lo que se debe medir. ¿Puedes mostrarme una manera de hacer esto? ¿Cómo puedo proporcionar fácilmente métricas del sistema/JVM de forma manual?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en monitoreo, métricas, telemetría abierta y observabilidad, sugiero echar un vistazo a las clases “System” y “Runtime” proporcionadas por Java. Estas clases te permiten acceder manualmente a la información sobre el sistema de host y la JVM, respectivamente, sin necesidad de instrumentación.

    Aquí tienes un ejemplo de cómo puedes obtener métricas del sistema y de la JVM utilizando estas clases:

    import java.lang.management.ManagementFactory;
    import java.lang.management.RuntimeMXBean;
    
    public class MetricsCollector {
        public static void main(String[] args) {
            System.out.println("Métricas del sistema:");
            System.out.println("Procesadores disponibles: " + Runtime.getRuntime().availableProcessors());
            System.out.println("Memoria libre: " + Runtime.getRuntime().freeMemory());
            System.out.println("Memoria total: " + Runtime.getRuntime().totalMemory());
    
            System.out.println("\nMétricas de la JVM:");
            RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
            System.out.println("Tiempo de actividad de la JVM: " + runtimeMXBean.getUptime());
            System.out.println("Argumentos de la JVM: " + runtimeMXBean.getInputArguments());
        }
    }
    

    Este fragmento de código imprime algunas métricas básicas del sistema y la JVM, como el número de procesadores disponibles, la memoria libre y total, y el tiempo de actividad y los argumentos de la JVM.

    Con esta información, puedes recolectar y exportar fácilmente métricas a cualquier sistema de monitoreo o panel de control que elijas, tal como lo harías con Micrometer. OpenTelemetry también proporciona una API de métricas que puedes utilizar para crear y exportar métricas de forma programática, pero eso va más allá del alcance de esta respuesta.

    Espero que esto te ayude a comenzar a medir manualmente las métricas del sistema y la JVM. ¡Buena suerte!

Comments are closed.