Google.Cloud.Diagnostics.AspNetCore 3.0.0-beta13无法在GKE上运行

时间:2019-07-12 21:13:11

标签: google-cloud-platform

目的

在.net核心2.2 REST API上使用Google Cloud Diagnostics,以在两种可能的情况下进行日志记录,跟踪和错误报告:

  1. 在Visual Studio 2017上本地执行
  2. 部署在Docker容器上并在GCP Kubernetes引擎上运行

环境详细信息

  • .NET版本:2.2.0
  • 软件包名称和版本:Google.Cloud.Diagnostics.AspNetCore 3.0.0-beta13

说明

在配置Google Cloud Diagnostics时,使用了两个文档来源:

  1. Google.Cloud.Diagnostics.AspNetCore
  2. Enable configuration support for Google.Cloud.Diagnostics.AspNetCore #2435

根据上述文档,使用了IWebHostBuilder上的UseGoogleDiagnostics扩展方法,因为它配置了日志记录,跟踪和错误报告中间件。

根据2)链接,下表列出了使用UseGoogleDiagnostics方法时所需的信息: Configuration Table

  1. 对于本地执行=>需要project_id,module_id和version_id,
  2. 对于GKE => module_id和version_id

.net核心配置文件用于为每个部署提供以上信息:

appsettings.json

{
  "GCP": {
    "ServiceID": "my-service",
    "VersionID": "v1"
  } 
}

appsettings.Development.json

{
  "GCP": {
    "ID": "my-id"
  } 
}

基本上,以上内容将呈现以下配置:

  1. 在本地执行
return WebHost.CreateDefaultBuilder(args)
    .UseGoogleDiagnostics("my-id", "my-service", "v1")
    .UseStartup<Startup>();
  1. 在GKE上
return WebHost.CreateDefaultBuilder(args)
    .UseGoogleDiagnostics(null, "my-service", "v1")
    .UseStartup<Startup>();

为了确保我使用的信息正确,我在GCP UI上的两个位置进行了验证:

  1. 在“端点列表”上,检查服务详细信息:
Service name: my-service Active version: v1 
  1. 检查了端点日志,以查找特定的API POST端点
{
insertId: "e6a63a28-1451-4132-ad44-a4447c33a4ac@a1"  

jsonPayload: {…}  
 logName: "projects/xxx%2Fendpoints_log"  
 receiveTimestamp: "2019-07-11T21:03:34.851569606Z"  

resource: {

labels: {
   location: "us-central1-a"    
   method: "v1.xxx.ApiOCRPost"    
   project_id: "my-id"    
   service: "my-service"    
   version: "v1"    
  }
  type: "api"   
 }
 severity: "INFO"  
 timestamp: "2019-07-11T21:03:27.397632588Z"  
} 

我是在做错什么还是Google.Cloud.Diagnostics.AspNetCore 3.0.0-beta13上的错误?

在执行服务端点时,对于每个特定的部署,Google Cloud Diagnostics的行为都不同:

  1. 在本地执行(VS2017)=>日志,跟踪和错误报告按预期方式工作,所有内容均显示在GCP UI中
  2. 关于GKE部署=>记录,跟踪和错误报告不起作用,GCP UI中什么也没显示

我尝试了几种变体,直接在代码中对值进行硬编码等,但是无论我做什么,部署在GKE中的Google Cloud Diagnostics都无法正常工作。

  1. 直接对值进行硬编码
return WebHost.CreateDefaultBuilder(args)
    .UseGoogleDiagnostics(null, "my-service", "v1")
    .UseStartup<Startup>();
  1. 版本中没有v
return WebHost.CreateDefaultBuilder(args)
    .UseGoogleDiagnostics(null, "my-service", "1")
    .UseStartup<Startup>();

0 个答案:

没有答案