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

如何在Azure中监控Microsoft.Identity.Web内存令牌缓存的使用量

关于Microsoft.Identity.Web内存令牌缓存的监控问题解答

首先明确结论:AddInMemoryTokenCaches 默认没有内置的Azure应用洞察(App Insights)直接对接逻辑,但可以通过自定义埋点等方式实现用量监控,且该缓存方案自带过期清理机制,不会无限制堆积令牌。
以下是具体的监控实现途径:

  • 自定义事件埋点上报App Insights
    Microsoft.Identity.Web开放了令牌缓存的生命周期回调接口,你可以在配置令牌缓存时订阅AfterAccess等回调事件,触发时获取当前缓存的条目数、状态变更等数据,调用App Insights的TelemetryClient上报对应指标即可,参考实现代码如下:
    using Microsoft.ApplicationInsights;
    using Microsoft.AspNetCore.Authentication.OpenIdConnect;
    
    services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
        .AddMicrosoftIdentityWebApp(Configuration)
        .EnableTokenAcquisitionToCallDownstreamApi()
        .AddInMemoryTokenCaches(options =>
        {
            options.AfterAccess = async ctx =>
            {
                if (ctx.HttpContext == null) return;
                var telemetryClient = ctx.HttpContext.RequestServices.GetRequiredService<TelemetryClient>();
                // 上报当前内存令牌缓存的条目数
                telemetryClient.TrackMetric("InMemoryTokenCache_ItemCount", ctx.Cache.Count);
                // 可选上报缓存变更、命中类事件
                if (ctx.HasStateChanged)
                {
                    telemetryClient.TrackEvent("TokenCache_ItemUpdated");
                }
                await Task.CompletedTask;
            };
        });
    
  • 复用ASP.NET Core内置内存缓存指标
    AddInMemoryTokenCaches 底层依赖ASP.NET Core原生的IMemoryCache实现,你可以直接将IMemoryCache的全局指标(总条目数、缓存占用大小、命中率)统一上报到App Insights,也能间接反映令牌缓存的资源占用情况。

注意:AddInMemoryTokenCaches是进程内缓存,如果你在Azure上采用多实例部署应用,每个实例的令牌缓存互相独立,监控指标需要按实例维度拆分统计。另外该缓存默认会自动清理过期的令牌条目,无需担心无限制堆积的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:45:02