借助 Error Reporting,您可以汇总 Compute Engine 应用中的崩溃情况并诊断运行时异常。您可以通过将日志流式传输到 Cloud Logging 或直接调用 Error Reporting API 来发送错误数据。如果您使用 Logging,则日志条目必须符合格式要求。
使用 Logging 报告错误
如需将 Compute Engine 应用连接到 Error Reporting,请使用以下代理之一将异常或其他错误发送到 Logging:
Ops Agent
如需设置 Error Reporting 以使用 Ops Agent,请完成以下步骤:
根据您的环境安装 Ops Agent。如需查看相关说明,请参阅安装 Ops Agent。
配置 Ops Agent 以收集应用日志并正确设置其格式。
对于受支持的第三方应用:Ops Agent 提供预配置的日志记录接收器,可自动捕获日志条目并将其解析为 Error Reporting 可识别的结构化格式。如需了解支持的第三方应用,请参阅监控第三方应用。
对于自定义应用:配置日志记录接收器以指定日志文件位置,并将其与以下处理器之一配对:
- 如果您的应用跨多行写入纯文本堆栈轨迹,请使用
parse_multiline处理器。 - 如果您的应用以 JSON 字符串的形式写入日志,请使用
parse_json处理器。
如需了解详细说明,请参阅配置 Ops Agent。
- 如果您的应用跨多行写入纯文本堆栈轨迹,请使用
如果您的应用未生成标准堆栈轨迹,请修改您的应用,使其将异常及其堆栈轨迹记录到 Cloud Logging。
您必须在同一日志条目中包含单个错误或异常的所有信息,包括任何堆栈轨迹的所有帧。如果所有信息不在一起,Error Reporting 可能无法检测到错误。您可以为日志条目载荷使用结构化 JSON 格式,以便为每个错误包含不同类型的信息。
旧版 Logging 代理
如需设置 Error Reporting 以使用旧版 Logging 代理,请完成以下步骤:
- 根据您的环境,安装相应的 Logging
google-fluentd代理。如需查看相关说明,请参阅安装 Logging 代理。 修改您的应用,使其将异常及其堆栈轨迹记录到 Logging。
您必须在同一日志条目中包含单个错误或异常的所有信息,包括任何堆栈轨迹的所有帧。如果所有信息不在一起,Error Reporting 可能无法检测到错误。您可以为日志条目载荷使用结构化 JSON 格式,以便为每种错误添加不同类型的信息。
Java
请将以下内容添加到 pom.xml 文件:
然后,使用如下代码发送异常数据:
Python
首先,安装 fluent-logger-python 库:
sudo pip install fluent-logger
然后,使用如下代码发送异常数据:
Node.js
首先,安装 fluent-logger-node 库:
npm install fluent-logger
然后,使用如下代码发送异常数据:
Go
首先,安装 fluent-logger-golang 软件包:
go get github.com/fluent/fluent-logger-golang/
然后,使用如下代码发送错误数据:
使用 Error Reporting API 写入错误
Error Reporting API 提供了 report 端点,用于将错误信息写入服务。
启用 Error Reporting API(如果尚未启用)。
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获取此权限。 了解如何授予角色。使用 REST API 或客户端库向 API 报告错误。
示例
ASP.NET
ASP.NET NuGet 程序包将 ASP.NET Web 应用中未捕获的异常报告给 Error Reporting。
安装 NuGet 程序包
要在 Visual Studio 中安装 Stackdriver ASP.NET NuGet 程序包,请执行以下操作:
- 右键点击您的解决方案,然后选择管理解决方案的 NuGet 程序包。
- 选中包括预发行版复选框。
- 搜索并安装名为
Google.Cloud.Diagnostics.AspNet的软件包。
用量
安装 Stackdriver ASP.NET NuGet 程序包之后,请将下列语句添加到应用代码中,以开始向 Stackdriver 发送错误:
using Google.Cloud.Diagnostics.AspNet;
将以下 HttpConfiguration 代码添加到 .NET Web 应用的 Register 方法中,并将 your-project-id 替换为实际的项目 ID,以启用异常报告:
将此方法添加到 ASP.NET 应用后,您可以在 Google Cloud 控制台的Error Reporting (when used with Stackdriver)部分中查看报告给 Google Cloud的所有未捕获的异常。
C#
您可以在 GoogleCloudPlatform/dotnet-docs-samples 代码库中找到以下示例。若要使用该示例,请在构建项目后指定您的项目 ID:
C:\...\bin\Debug> set GOOGLE_PROJECT_ID=[YOUR_PROJECT_ID]
请务必将 [YOUR_PROJECT_ID] 替换为Google Cloud 控制台中的正确值。
然后,使用类似下面的代码发送异常数据:
Go
Java
Node.js
Ruby
Python
PHP
查看错误组
在 Google Cloud 控制台中,前往 Error Reporting 页面:
您也可以使用搜索栏查找此页面。