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

如何为Application Insights自定义事件设置关联的Operation ID?

解决Flask应用中自定义事件与请求共享Operation ID的问题

问题核心在于当前日志事件未继承请求上下文的跟踪信息,导致Application Insights无法将自定义事件与对应请求关联,Operation ID显示为0。需借助OpenCensus的Flask中间件获取请求跟踪上下文,并将跟踪ID传递给自定义事件。

步骤1:安装依赖

确保安装OpenCensus的Flask扩展:

pip install opencensus-ext-flask

步骤2:修改代码

集成Flask中间件并在日志时传递跟踪信息:

import logging
from flask import Flask
from opencensus.ext.azure.log_exporter import AzureEventHandler
from opencensus.ext.flask.flask_middleware import FlaskMiddleware
from opencensus.trace.tracer import Tracer
from opencensus.trace.samplers import ProbabilitySampler

# 初始化Flask应用
app = Flask(__name__)

# 配置OpenCensus Flask中间件,自动跟踪请求
middleware = FlaskMiddleware(
    app,
    sampler=ProbabilitySampler(rate=1.0),  # 100%采样所有请求
    exporter=AzureEventHandler(
        connection_string='InstrumentationKey=00000000-0000-0000-0000-000000000000'
    )
)

logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)

# 复用中间件的Exporter,保持配置统一
logger.addHandler(middleware.exporter)

def track_result(result):
    # 获取当前请求的跟踪上下文
    tracer = Tracer(sampler=ProbabilitySampler(rate=1.0))
    current_span = tracer.current_span()
    trace_id = current_span.context.trace_id
    
    # 构建自定义属性,注入跟踪ID
    properties = {
        'result': result,
        'operation_Id': trace_id  # 对应Application Insights的Operation ID
    }
    logger.info('Result log', extra={'custom_dimensions': properties})
    return None

# 示例请求路由
@app.route('/')
def hello():
    track_result('success')
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

关键说明

  • Flask中间件作用:FlaskMiddleware会自动为每个请求生成跟踪span,其中的trace_id就是Application Insights中的Operation ID。
  • 跟踪信息传递:通过Tracer.current_span()提取当前请求的trace_id,放入自定义事件的属性中,Application Insights会自动识别并关联到对应请求事务。
  • 复用Exporter:直接使用中间件初始化的AzureEventHandler,避免重复创建连接,保证配置一致性。

修改后,自定义事件的Operation ID会与对应请求事件完全一致,实现端到端事务追踪。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:45:34