使用 OpenCensus 将 Django 日志导出到 Azure AppInsights

Posted

技术标签:

【中文标题】使用 OpenCensus 将 Django 日志导出到 Azure AppInsights【英文标题】:Export Django logs to Azure AppInsights with OpenCensus 【发布时间】:2021-01-27 19:55:19 【问题描述】:

我正在遵循 Django 和 Azure 的指导。我能够获取依赖项和请求,但不能获取跟踪。

我将这个添加到中间件:

'opencensus.ext.django.middleware.OpencensusMiddleware'

这是 settings.py 的 LOGGING 和 OPENCENSUS 部分

LOGGING = 
'version': 1,
'disable_existing_loggers': False,
'formatters': 
    'default': 
        'format': '%(asctime)s - %(levelname)s - %(processName)s - %(name)s\n%(message)s',
    ,
,
"handlers": 
    "azure": 
        "level": "DEBUG",
    "class": "opencensus.ext.azure.log_exporter.AzureLogHandler",
        "instrumentation_key": assert_env('APPINSIGHTS_INSTRUMENTATIONKEY'),
     ,
    "console": 
        "level": "DEBUG",
        "class": "logging.StreamHandler",
        "formatter": "default",
     ,
  ,
"loggers": 
    "logger_name": "handlers": ["azure", "console"],
,
    # For some reason, this is needed or logging doesn't show up in the
    # celery log file.
'skyforge.tasks': 
    'handlers': ['azure','console'],
    'level': assert_env('DJANGO_LOG_LEVEL'),
,

OPENCENSUS = 
    'TRACE': 
        'SAMPLER': 'opencensus.trace.samplers.ProbabilitySampler(rate=1)',
        'EXPORTER': '''opencensus.ext.azure.trace_exporter.AzureExporter(
            service_name='skyforge'
        )'''
        #Assumes Environmental Variable 'APPINSIGHTS_INSTRUMENTATIONKEY'
    

关于在哪里查找为什么没有跟踪日志的任何指南。 django-critical 和 django-tasks 仍在控制台中。

【问题讨论】:

【参考方案1】:

这是错误的部分:

"loggers": 
"logger_name": "handlers": ["azure", "console"],

"logger_name" 需要填充应用名称,以便 logger = logging.getLogger(__name__) 工作正常。

记录器中还需要一个级别。

这对我有用。

LOGGING = 
'version': 1,
'disable_existing_loggers': False,
'formatters': 
    'default': 
        'format': '%(asctime)s - %(levelname)s - %(processName)s - %(name)s\n%(message)s',
    ,
,
'handlers': 
     'azure': 
        'class': 'opencensus.ext.azure.log_exporter.AzureLogHandler',
        'formatter':'default'
        # https://pypi.org/project/opencensus-ext-azure/
        #Assumed ENV APPLICATIONINSIGHTS_CONNECTION_STRING
      ,
    'console': 
        'class': 'logging.StreamHandler',
        'formatter': 'default',

    ,
  ,
'loggers': 
    'polls': 
        'handlers': ['azure', 'console'],
        'level':'DEBUG'
        ,

以下选项没有影响: 'level' 处理程序中的参数 'filter':'[]' 在处理程序中 'stream':sys.stdout 在处理程序中。

我将 Appinsights 连接字符串放在环境变量中,但参考资料还显示了如何放置在设置中。设置中的原始键似乎也可以使用。

APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentaionKey=<key uuid>

【讨论】:

以上是关于使用 OpenCensus 将 Django 日志导出到 Azure AppInsights的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 OpenCensus 检测 Prometheus Gauge?

Stackdriver 上未显示自定义 OpenCensus 指标

opencensus 出口商 - 一个全局或每个线程?

ClassNotFoundException: io.opencensus.trace.propagation.TextFormat 未找到

来自 Python 应用的 Opencensus Stackdriver 跟踪未出现在 GCP 的跟踪列表中

OpenCensus 未在 Stack Driver 中的 Google App Engine 上显示跟踪