我有一个来自Apache2的Django Web应用程序,其中mod_wsgi位于Google云平台中Kubernetes集群上运行的docker容器中,受Identity-Aware代理保护.一切都很好,但我想为所有请求发送GCP Stackdriver跟踪,而不为我的项目中的每个视图写一个.我发现使用Opencensus处理这个中间件.我浏览了这个文档,并通过指定StackdriverExporter并将project_id参数作为Project Number我的项目的Google Cloud Platform 传递,手动生成导出到项目中的Stackdriver Trace的跟踪.
现在为了对所有请求进行自动化,我按照说明设置了中间件.在settings.py,我添加模块INSTALLED_APPS,MIDDLEWARE并设置了OPENCENSUS_TRACE选项字典.我还加了OPENCENSUS_TRACE_PARAMS.这个伟大的工程使用默认的出口"opencensus.trace.exporters.print_exporter.PrintExporter",我所看到的跟踪和跨度信息,包括跟踪ID,并在我的Apache2 Web服务器日志的所有细节.但是,我想将这些发送到我的Stackdriver Trace处理器进行分析.
我尝试将EXPORTER参数设置为opencensus.trace.exporters.stackdriver_exporter.StackdriverExporter,只要您提供项目编号,该参数在从shell手动运行时有效.
当设置使用时StackdriverExporter,网页不会响应加载,运行状况检查开始失败,最终网页返回502错误,说我应该在30秒内再试一次(我相信身份识别一旦检测到运行状况检查失败,代理就会生成此错误),但服务器不会生成任何错误,并且Apache2中没有访问日志或错误.
在settings.py中有另一个字典命名OPENCENSUS_TRACE_PARAMS,我认为需要确定导出器应该使用哪个项目编号.该示例GCP_EXPORTER_PROJECT设置为None,并SERVICE_NAME设置为'my_service'.
我需要设置哪些选项才能让导出器发送回Stackdriver而不是打印到日志?你对我如何设置它有什么想法吗?
settings.py
MIDDLEWARE = (
...
'opencensus.trace.ext.django.middleware.OpencensusMiddleware',
)
INSTALLED_APPS = (
...
'opencensus.trace.ext.django',
)
OPENCENSUS_TRACE = {
'SAMPLER': 'opencensus.trace.samplers.probability.ProbabilitySampler',
'EXPORTER': 'opencensus.trace.exporters.stackdriver_exporter.StackdriverExporter', # This one just makes the server hang with no response or error …Run Code Online (Sandbox Code Playgroud) 我正在 Go 中使用 OpenCensus 将跟踪数据推送到 Stackdriver,以进行涉及 2 个或更多微服务链的调用,我注意到我得到的许多跟踪仅包含某些服务的范围,而不包含整个端到端调用。
目前,我将此归因于以下事实:并非所有调用都被跟踪(仅跟踪某个样本),并且每个服务决定是否跟踪其当前范围。
这是它的工作方式吗?有没有什么方法可以确保调用链中的所有服务在对跟踪进行采样时都这样做?
go google-cloud-trace stackdriver distributed-tracing opencensus
我正在尝试将异常从在Azure 应用程序服务中运行的Python 应用程序发送到指定的Azure Application Insights实例。我正在使用OpenCensus python 库来实现此目的。基本日志记录和异常已成功到达 App Insight。
除此之外,我想知道是否有一种方法可以配置异常属性,例如:problemId或任何其他属性显式地反映特定值以便更容易发出警报(例如根据 ProblemId 向特定组发送电子邮件)。
任何建议/指示都会非常有帮助
python azure-application-insights opencensus azure-appservice