Нови възможности за измерване на OpenTelemetry на Azure Monitor

Microsoft пусна предварителен преглед поредица от актуализации към техните пакети Azure Monitor OpenTelemetry Exporter за .ЯсноИ на Възел. jsИ Python Приложения. Новите функции включват: Експортиране OpenTelemetry метрика Прозрения за приложението Azure Monitor (AMAI), подобрен контрол на вземане на проби за следи и разширения и кеширане и повторни опити за доставка на телеметрични данни при временно прекъсване на връзката с Azure Monitor Application Insights.

Лазурен екран Пакет от инструменти за събиране, анализиране и реагиране на телеметрични данни за инфраструктура и приложения от облачни и локални среди. AMAI е един от инструментите в Azure Monitor и осигурява мониторинг на производителността на приложенията (APM) на своите потребители. В допълнение Azure Monitor Application Insights поддържа разпределено проследяване, Един от стълбовете на модела за наблюдениев множество приложения.

OpenTelemetry е рамка, която предоставя API, SDK, независими от доставчика, и инструменти за използване, трансформиране и експортиране на телеметрични данни към бек-ендове на Observability. В публикация в блог през 2021 гMicrosoft очерта своята пътна карта за интегриране на OpenTelemetry с по-широката екосистема на Azure Monitor. Непосредственият фокус на това беше да се изградят две базирани на OpenTelemetry приложения с директен източник в AMAI, а не действителният OpenTelemetry маршрут на OTLP източника към Azure Monitor чрез OpenTelemetry Collector.


източник:

Примерен източник на живо в приложение Node.js с проследяване на OpenTelemetry ще бъде:

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"] || ""
});

// Add the exporter to the provider
provider.addSpanProcessor(
  new BatchSpanProcessor(exporter, {
    bufferTimeout: 15000,
    bufferSize: 1000
  })
);

С пускането на нови актуализации на пакетите Azure Monitor OpenTelemetry Exporter, експортирането на показатели към AMAI вече ще бъде възможно, както е показано по-долу:

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"] || "",
});
const metricReaderOptions = {
  exporter: exporter,
};
const metricReader = new PeriodicExportingMetricReader(metricReaderOptions);
provider.addMetricReader(metricReader);
);

За да управлявате количеството телеметрични данни, изпратени до Application Insights, пакетите вече включват семплер, който контролира процента на изпратените следи. За примера за проследяване на Node.js от по-рано това ще изглежда така:

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
});

И накрая, ако комуникацията с AMAI е неуспешна, живите износители записват своите полезни товари в местно хранилище и периодично правят опити за повторна доставка за период от 48 часа. Тези настройки могат да бъдат конфигурирани, когато се създаде екземпляр на издател, както е показано по-долу:

const exporter = new AzureMonitorTraceExporter({
    connectionString:
        process.env["APPLICATIONINSIGHTS_CONNECTION_STRING"],
    storageDirectory: "C:\SomeDirectory",     // your desired location
    disableOfflineStorage: false               // enabled by default, set to disable
});