将Python项目中的Azure Application Insights日志记录从OpenCensus迁移到OpenTelemetary

ghhkc1vu  于 2023-10-21  发布在  Python
关注(0)|答案(2)|浏览(130)

我正试图从OpenCensus转移到OpenTelemetry,因为以前的项目是sunsetted,将不再受Microsoft later next year支持。

当前创建日志配置代码:

log_config = {
    "version": 1,
    "disable_existing_loggers": True,
        "formatters": {
        "default": {
            "()": "uvicorn.logging.DefaultFormatter",
            "fmt": "%(levelprefix)s [%(thread)d] [%(asctime)s.%(msecs)03d] %(message)s",
            "datefmt": "%Y-%m-%d %H:%M:%S",

        },
    },
    "handlers": {
        "default": {
            "level": "INFO",
            "formatter": "default",
            "class": "logging.StreamHandler",
            "stream": "ext://sys.stderr",
        },
        "azure": {
            "level": "WARNING",
            "class": "opencensus.ext.azure.log_exporter.AzureLogHandler",
            "instrumentation_key": "<appinsights-connection-string>",
        }
    },
    "loggers": {
        "": {"handlers": ["default", "azure"], "level": "INFO"},
    },
}

当前应用日志配置的代码:

import logging
from logging.config import dictConfig
from log_config import log_config

dictConfig(log_config)

日落的文章指出:
我们很高兴地宣布,OpenTelemetry在C++、.NET、Go、Java、JavaScript、PHP和Python中与OpenCensus实现了功能对等。
所以我认为这将是一个下降的解决方案,但我似乎不能找到和代码样本,看起来像我目前正在做的。是否有一个OpenTelemetry处理程序,我可以使用它来登录到AppInsights,或者是否有其他方法可以使用?Microsoft页面特别建议不要使用opentelemetry-opencensus-shim

ncgqoxb0

ncgqoxb01#

使用OpenTelemetry将跟踪导出到使用AzureMonitorTraceExporter的Azure Application Insights。若要使用OpenTelemetry将数据记录到Azure Application Insights,您不需要像传统日志记录那样使用特定的“处理程序”。

引用:

  • Azure-monitor-opentelemetry-exporter.
  • 启用Azure Monitor OpenTelemarket for .NET、Java、Node.js和Python applications
import  logging

from  logging.config  import  dictConfig

from opentelemetry import  trace

from  opentelemetry.sdk.trace  import  TracerProvider

from  opentelemetry.sdk.trace.export  import  BatchSpanProcessor

from  azure.monitor.opentelemetry.exporter  import  AzureMonitorTraceExporter

  

# Initialize OpenTelemetry Tracer Provider

tracer_provider = TracerProvider()

  

# Replace 'YOUR_CONNECTION_STRING' with your actual Application Insights connection string

connection_string = " "

  

# Create an Azure Monitor Trace Exporter with the connection string

exporter = AzureMonitorTraceExporter(connection_string=connection_string)

  

# Create a BatchSpanProcessor and add the exporter

span_processor = BatchSpanProcessor(exporter)

tracer_provider.add_span_processor(span_processor)

  

# Set the tracer provider

trace.set_tracer_provider(tracer_provider)

  

# Your logging configuration remains the same

log_config = {

"version":  1,

"disable_existing_loggers":  True,

"formatters":  {

"default":  {

"()":  "uvicorn.logging.DefaultFormatter",

"fmt":  "%(levelprefix)s [%(thread)d] [%(asctime)s.%(msecs)03d] %(message)s",

"datefmt":  "%Y-%m-%d %H:%M:%S",

},

},

"handlers":  {

"default":  {

"level":  "INFO",

"formatter":  "default",

"class":  "logging.StreamHandler",

"stream":  "ext://sys.stderr",

},

},

"loggers":  {

"":  {"handlers":  ["default"],  "level":  "INFO"},

},

}

  

# Apply the log configuration

dictConfig(log_config)

  

# Sample log messages

logger = logging.getLogger(__name__)

logger.info("This is an info message.")

logger.warning("This is a warning message.")

**输出:**x1c 0d1x

wlwcrazw

wlwcrazw2#

如果您希望对日志导出管道的配置进行更多控制,可以通过azure-monitor-opentelemetry-exporters使用分段导出器方法。
需要注意的是,如果您想要收集日志遥测并发送到应用程序洞察中的TRACES表,则必须使用AzureObserver或LogExporter(而不是AzureObserver或TraceExporter,后者用于分布式跟踪并将填充应用程序洞察中的请求/依赖关系表)。
还请记住,通过此导出程序包的日志导出程序是测试版,因此请自行决定使用它。Azure Monitor的官方建议是使用Azure Monitor opentelemetry发行版,这是一个一站式的遥测需求,可以将数据发送到应用程序见解,并且该软件包是稳定的。
类似的跟踪问题可以在这里找到:https://github.com/Azure/azure-sdk-for-python/issues/32322.如果你有进一步的问题,请随时评论这个问题,因为github的问题会被更积极地分类和监控。

相关问题