如何使用Otel Instrumentation获得NextJS容器应用程序的Azure应用程序见解?

问题描述 投票:0回答:1
instrumentation.ts

目前正在注册此代码:

import { AzureMonitorLogExporter, AzureMonitorMetricExporter, AzureMonitorTraceExporter, } from '@azure/monitor-opentelemetry-exporter'; import { metrics } from '@opentelemetry/api'; import { logs } from '@opentelemetry/api-logs'; import { Resource } from '@opentelemetry/resources'; import { BatchLogRecordProcessor, LoggerProvider } from '@opentelemetry/sdk-logs'; import { PeriodicExportingMetricReader, MeterProvider } from '@opentelemetry/sdk-metrics'; import { BatchSpanProcessor, NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; const resource = new Resource({ [ATTR_SERVICE_NAME]: 'Azure Container App', }); // Monitors const azureExporter = new AzureMonitorTraceExporter({ connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING, }); const provider = new NodeTracerProvider({ resource: resource, spanProcessors: [new BatchSpanProcessor(azureExporter)], }); provider.register(); // Metrics const azureMetricExporter = new AzureMonitorMetricExporter({ connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING, }); const azureMetricReader = new PeriodicExportingMetricReader({ exporter: azureMetricExporter }); const meterProvider = new MeterProvider({ resource: resource, readers: [azureMetricReader], }); metrics.setGlobalMeterProvider(meterProvider); // Logs const azureLogExporter = new AzureMonitorLogExporter({ connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING, }); const logRecordProcessor = new BatchLogRecordProcessor(azureLogExporter); const loggerProvider = new LoggerProvider({ resource: resource }); loggerProvider.addLogRecordProcessor(logRecordProcessor); logs.setGlobalLoggerProvider(loggerProvider);

这效果很好,除了“实时指标”功能,该功能在Azure.

中列为
Not available: couldn't connect to your application

我尝试了什么?

我试图使用

@azure/monitor-opentelemetry
软件包,而实时指标也无法正常工作。我还将跨度导出到Axiom,据我所知,该软件包是专门用于Azure的,因此会导致“重复寄存器”错误。另外,根据使用情况根本不起作用或导致节点模块错误。

我试图在没有运气的情况下使用this建议的问题/答案

。唯一的答案似乎是错误的,并且可能生成了AI,因为它引用了不存在的节点模块

@opentelemetry/exporter-node-metrics对于集装箱环境中的node.js

node.js

,到现在以与Azure App Services

相同的方式,实时指标尚未以本地支持。 plowing批处理间隔有助于应用程序见解更快地摄入数据,然后允许在live live量表中显示。

azure next.js azure-application-insights open-telemetry azure-container-apps
1个回答
0
投票

NodeMetricExporter

对于距离,减少间隔:
  • import { ConsoleSpanExporter } from '@opentelemetry/sdk-trace-node'; const provider = new NodeTracerProvider({ resource }); // Reduce span processor interval to improve near-real-time data transfer const spanProcessor = new BatchSpanProcessor(azureExporter, { maxQueueSize: 100, scheduledDelayMillis: 500, // Reduce delay from default 5000ms }); provider.addSpanProcessor(spanProcessor); provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter())); // For debugging provider.register();

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.