You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor Server应用Semantic Kernel OTel指标无法上报至Application Insights排查

问题分析与解决方案

你的配置中追踪数据能正常上报至Application Insights,但Semantic Kernel指标缺失,核心原因是Azure Monitor OpenTelemetry集成默认可能未启用指标导出,或存在配置细节遗漏。以下是具体修复步骤:

1. 升级Azure Monitor OTel包版本

确保项目中Azure.Monitor.OpenTelemetry.AspNetCore包使用最新稳定版(至少1.2.0及以上),旧版本对Metrics的支持存在局限性。

2. 显式启用Azure Monitor指标导出

修改UseAzureMonitor配置,明确开启指标收集逻辑:

services.AddOpenTelemetry()
    .UseAzureMonitor(options =>
    {
        options.ConnectionString = appInsightsConnectionString;
        // 显式启用指标导出
        options.Metrics = new AzureMonitorMetricsOptions
        {
            Enable = true,
            // 可选:调整指标导出间隔,默认60秒
            ExportIntervalMilliseconds = 60000
        };
    })
    .WithTracing(builder =>
        builder
            .AddSource(Telemetry.SourceName)
            .AddSource("Microsoft.SemanticKernel*")
            .SetResourceBuilder(Telemetry.ResourceBuilder)
    )
    .WithMetrics(builder => builder
        .AddMeter("Microsoft.SemanticKernel*")
        .SetResourceBuilder(Telemetry.ResourceBuilder)
        // 可选:添加默认聚合配置,确保指标被正确收集
        .SetDefaultAggregation<long>(MetricStreamConfiguration.Default.WithHistogramBoundaries(0, 10, 50, 100)));

3. 验证MeterProvider生命周期

在Blazor Server环境中,确保OpenTelemetry的MeterProvider通过依赖注入正确初始化,避免与手动创建的MeterProvider(如文档示例中的独立实例)产生冲突,统一使用DI方式配置的Provider。

4. 确认Semantic Kernel指标生成

调用GetStreamingChatMessageContentsAsync时,Semantic Kernel会生成semantic_kernel.total_tokens、semantic_kernel.prompt_tokens等指标。可通过本地调试验证Meter是否注册成功:

var meters = Meter.GetMeters().Where(m => m.Name.StartsWith("Microsoft.SemanticKernel"));
// 确认meters集合不为空,说明Semantic Kernel的Meter已正确注册

内容的提问来源于stack exchange,提问作者chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 00:15:56