Python Azure Monitor 中的 Opencenus Trace ID 和 Span ID
Python Opencenus Trace ID and Span ID in azure monitor
我正在尝试将 traceId 和 spanId 添加到 python 中的 azure 函数日志中,遵循 Azure 文档https://docs.microsoft.com/en-us/azure/azure-monitor/app/correlation#log-correlation
traceId 和 spanId 使用 VS Code 添加到本地开发中的日志语句,但我无法在 azure monitor、
中看到相同的 traceId 和 spanId
我按照文档的 https://docs.microsoft.com/en-us/azure/azure-monitor/app/opencensus-python#logs 部分添加了 AzureLogHandler,但似乎仍然无法正常工作
我希望能够使用 traceId 和 spanId 在 Azure Application insights 中查询日志
我的代码中缺少什么,因此 traceId 和 spanId 未登录到 azure monitor
下面是我在 python
中配置日志的代码
def logger_and_tracer(name):
config_integration.trace_integrations(["logging", "requests"])
tracer = Tracer(sampler=AlwaysOnSampler())
formatter = logging.Formatter(
"fileName=%(filename)s functionName=%(funcName)s traceId=%(traceId)s spanId=%(spanId)s %(message)s"
)
logger = logging.getLogger(name)
azure_logger = AzureLogHandler()
syslog = logging.StreamHandler()
azure_logger.addFilter(CustomDimensionsFilter(default_log_items))
syslog.addFilter(CustomDimensionsFilter(default_log_items))
azure_logger.setFormatter(formatter)
syslog.setFormatter(formatter)
logger.setLevel(logging.DEBUG)
logger.addHandler(syslog)
logger.addHandler(azure_logger)
return (logger, tracer)
请按照以下步骤在您的 Azure 函数中添加 Trace ID 和 Span ID,以便在 Azure Monitor 中查看它们的值。
在 azure 函数根文件夹中添加必要的 Opencenus 包。
pip 安装 opencensus-extension-azure-functions
pip 安装 opencensus-ext-logging
import json
import logging
from opencensus.extension.azure.functions import OpenCensusExtension
from opencensus.trace import config_integration
from opencensus.trace.samplers import AlwaysOnSampler
from opencensus.trace.tracer import Tracer
logger = logging.getLogger('HttpTriggerLogger')
OpenCensusExtension.configure()
config_integration.trace_integrations(['logging'])
logging.basicConfig(format='%(asctime)s traceId=%(traceId)s spanId=%(spanId)s %(message)s')
tracer = Tracer(sampler=AlwaysOnSampler())
logger = logging.getLogger(__name__)
logger.warning('Before the span')
with tracer.span(name='hello'):
logger.warning('In the span')
logger.warning('After the span')
def main(req, context):
logger.info('Executing HttpTrigger with OpenCensus extension')
# You must use context.tracer to create spans
with context.tracer.span("parent"):
logger.info('Message from HttpTrigger')
return json.dumps({
'method': req.method,
'ctx_func_name': context.function_name,
'ctx_func_dir': context.function_directory,
'ctx_invocation_id': context.invocation_id,
'ctx_trace_context_Traceparent': context.trace_context.Traceparent,
'ctx_trace_context_Tracestate': context.trace_context.Tracestate,
})
我可以在 Azure 监视器
中看到指标
OpenCensus 和 OpenTracing 目前已合并到 OpenTelemetry 中。你可以看看here
我正在尝试将 traceId 和 spanId 添加到 python 中的 azure 函数日志中,遵循 Azure 文档https://docs.microsoft.com/en-us/azure/azure-monitor/app/correlation#log-correlation
traceId 和 spanId 使用 VS Code 添加到本地开发中的日志语句,但我无法在 azure monitor、
中看到相同的 traceId 和 spanId我按照文档的 https://docs.microsoft.com/en-us/azure/azure-monitor/app/opencensus-python#logs 部分添加了 AzureLogHandler,但似乎仍然无法正常工作
我希望能够使用 traceId 和 spanId 在 Azure Application insights 中查询日志 我的代码中缺少什么,因此 traceId 和 spanId 未登录到 azure monitor
下面是我在 python
中配置日志的代码 def logger_and_tracer(name):
config_integration.trace_integrations(["logging", "requests"])
tracer = Tracer(sampler=AlwaysOnSampler())
formatter = logging.Formatter(
"fileName=%(filename)s functionName=%(funcName)s traceId=%(traceId)s spanId=%(spanId)s %(message)s"
)
logger = logging.getLogger(name)
azure_logger = AzureLogHandler()
syslog = logging.StreamHandler()
azure_logger.addFilter(CustomDimensionsFilter(default_log_items))
syslog.addFilter(CustomDimensionsFilter(default_log_items))
azure_logger.setFormatter(formatter)
syslog.setFormatter(formatter)
logger.setLevel(logging.DEBUG)
logger.addHandler(syslog)
logger.addHandler(azure_logger)
return (logger, tracer)
请按照以下步骤在您的 Azure 函数中添加 Trace ID 和 Span ID,以便在 Azure Monitor 中查看它们的值。
在 azure 函数根文件夹中添加必要的 Opencenus 包。
pip 安装 opencensus-extension-azure-functions
pip 安装 opencensus-ext-logging
import json
import logging
from opencensus.extension.azure.functions import OpenCensusExtension
from opencensus.trace import config_integration
from opencensus.trace.samplers import AlwaysOnSampler
from opencensus.trace.tracer import Tracer
logger = logging.getLogger('HttpTriggerLogger')
OpenCensusExtension.configure()
config_integration.trace_integrations(['logging'])
logging.basicConfig(format='%(asctime)s traceId=%(traceId)s spanId=%(spanId)s %(message)s')
tracer = Tracer(sampler=AlwaysOnSampler())
logger = logging.getLogger(__name__)
logger.warning('Before the span')
with tracer.span(name='hello'):
logger.warning('In the span')
logger.warning('After the span')
def main(req, context):
logger.info('Executing HttpTrigger with OpenCensus extension')
# You must use context.tracer to create spans
with context.tracer.span("parent"):
logger.info('Message from HttpTrigger')
return json.dumps({
'method': req.method,
'ctx_func_name': context.function_name,
'ctx_func_dir': context.function_directory,
'ctx_invocation_id': context.invocation_id,
'ctx_trace_context_Traceparent': context.trace_context.Traceparent,
'ctx_trace_context_Tracestate': context.trace_context.Tracestate,
})
我可以在 Azure 监视器
中看到指标OpenCensus 和 OpenTracing 目前已合并到 OpenTelemetry 中。你可以看看here