Nuevas funcionalidades de métricas para OpenTelemetry en Azure Monitor
Microsoft lanzó una vista previa serie de actualizaciones a sus paquetes de Azure Monitor OpenTelemetry Exporter para .ClaroY el Nodo.jsY el Pitón Aplicaciones. Las nuevas características incluyen: Exportar OpenTelemetry métrica Información sobre la aplicación de Azure Monitor (AMAI), control de muestreo mejorado para seguimientos y extensiones, y almacenamiento en caché y reintentos de entrega de datos de telemetría cuando se desconecta temporalmente de Azure Monitor Application Insights.
Pantalla azul Un conjunto de herramientas para recopilar, analizar y responder a datos de telemetría de aplicaciones e infraestructura desde entornos locales y en la nube. AMAI es una de las herramientas de Azure Monitor y proporciona supervisión del rendimiento de aplicaciones (APM) a sus usuarios. Además, Azure Monitor Application Insights admite el seguimiento distribuido, Uno de los pilares del modelo de observacióna través de múltiples aplicaciones.
OpenTelemetry es un marco que proporciona API, SDK independientes del proveedor y herramientas para consumir, transformar y exportar datos de telemetría a los back-end de Observability. En una publicación de blog en 2021Microsoft ha esbozado su hoja de ruta para integrar OpenTelemetry con el ecosistema más amplio de Azure Monitor. El enfoque inmediato de esto fue crear dos aplicaciones basadas en OpenTelemetry de fuente directa en AMAI en lugar de la ruta OpenTelemetry real de la fuente OTLP a Azure Monitor a través de OpenTelemetry Collector.
Una fuente en vivo de muestra en una aplicación Node.js con seguimiento de OpenTelemetry sería:
const { AzureMonitorTraceExporter } = require("@azure/monitor-opentelemetry-exporter");
const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node");
const { BatchSpanProcessor } = require("@opentelemetry/sdk-trace-base");
const provider = new NodeTracerProvider({
resource: new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: "basic-service",
}),
});
provider.register();
// Create an exporter instance
const exporter = new AzureMonitorTraceExporter({
connectionString:
process.env["APPLICATIONINSIGHTS_CONNECTION_STRING"] || "<your connection string>"
});
// Add the exporter to the provider
provider.addSpanProcessor(
new BatchSpanProcessor(exporter, {
bufferTimeout: 15000,
bufferSize: 1000
})
);
Con el lanzamiento de nuevas actualizaciones de los paquetes de Azure Monitor OpenTelemetry Exporter, ahora será posible exportar métricas a AMAI, como se muestra a continuación:
const { MeterProvider, PeriodicExportingMetricReader } = require("@opentelemetry/sdk-metrics");
const { Resource } = require("@opentelemetry/resources");
const { AzureMonitorMetricExporter } = require("@azure/monitor-opentelemetry-exporter");
// Add the exporter into the MetricReader and register it with the MeterProvider
const provider = new MeterProvider();
const exporter = new AzureMonitorMetricExporter({
connectionString:
process.env["APPLICATIONINSIGHTS_CONNECTION_STRING"] || "<your connection string>",
});
const metricReaderOptions = {
exporter: exporter,
};
const metricReader = new PeriodicExportingMetricReader(metricReaderOptions);
provider.addMetricReader(metricReader);
);
Para administrar la cantidad de datos de telemetría enviados a Application Insights, los paquetes ahora incluyen una muestra que controla el porcentaje de seguimientos que se envían. Para el ejemplo de seguimiento de Node.js anterior, se vería así:
import { ApplicationInsightsSampler, AzureMonitorTraceExporter } from "@azure/monitor-opentelemetry-exporter";
// Sampler expects a sample rate of between 0 and 1 inclusive
// A rate of 0.75 means approximately 75% of traces are sent
const aiSampler = new ApplicationInsightsSampler(0.75);
const provider = new NodeTracerProvider({
resource: new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: "basic-service",
}),
sampler: aiSampler
});
Finalmente, si falla la comunicación con AMAI, los exportadores en vivo escriben sus cargas útiles en el almacenamiento local e intentan reenviarlas periódicamente durante un período de 48 horas. Estos ajustes se pueden configurar cuando se crea una instancia de un emisor, como se muestra a continuación:
const exporter = new AzureMonitorTraceExporter({
connectionString:
process.env["APPLICATIONINSIGHTS_CONNECTION_STRING"],
storageDirectory: "C:\\SomeDirectory", // your desired location
disableOfflineStorage: false // enabled by default, set to disable
});
“Alborotador. Amante de la cerveza. Total aficionado al alcohol. Sutilmente encantador adicto a los zombis. Ninja de twitter de toda la vida”.