如果您的应用错误未显示在 Error Reporting 中, 然后按照以下步骤排查问题
准备工作
验证 Error Reporting 是否可以分析您的日志。
Error Reporting 是一项基于 Cloud Logging 构建的全球服务,可用于分析日志条目 。
- 日志条目存储在
global
位置的日志存储桶中。 - 日志存储桶已停用客户管理的加密密钥 (CMEK)。 有关如何确定 CMEK 配置的信息, 日志存储桶,请参阅 验证密钥的启用状态。
- 日志存储桶满足以下任一条件:
- 日志存储桶存储在生成日志的同一项目中 来源。
- 日志被路由到某个项目,然后该项目存储了这些日志 存储在自己的日志存储桶中。
如需查看 Error Reporting 能否分析您的日志,请确认您 将您的日志存储在
global
区域的存储分区中, 都相同如需查看已配置的接收器的列表,请运行以下命令:
gcloud logging sinks list
该命令会返回类似于以下内容的输出:
NAME DESTINATION FILTER _Default logging.googleapis.com/projects/my-team-project/locations/global/buckets/_Default NOT LOG_ID("cloudaudit.googleapis.com/activity") AND NOT LOG_ID("externalaudit.googleapis.com/activity") AND NOT LOG_ID("cloudaudit.googleapis.com/system_event") AND NOT LOG_ID("externalaudit.googleapis.com/system_event") AND NOT LOG_ID("cloudaudit.googleapis.com/access_transparency") AND NOT LOG_ID("externalaudit.googleapis.com/access_transparency") _Required logging.googleapis.com/projects/my-team-project/locations/global/buckets/_Required LOG_ID("cloudaudit.googleapis.com/activity") OR LOG_ID("externalaudit.googleapis.com/activity") OR LOG_ID("cloudaudit.googleapis.com/system_event") OR LOG_ID("externalaudit.googleapis.com/system_event") OR LOG_ID("cloudaudit.googleapis.com/access_transparency") OR LOG_ID("externalaudit.googleapis.com/access_transparency") logs-from-samples logging.googleapis.com/projects/my-team-project/locations/global/buckets/sample-bucket (empty filter) regional_logs logging.googleapis.com/projects/my-team-project/locations/europe-west1/buckets/bucket_for_regional_logs (empty filter) test-logs logging.googleapis.com/projects/team-b-project/locations/global/buckets/test-bucket (empty filter)
在此示例中,日志的源 Google Cloud 项目为
my-team-project
。因此:- Error Reporting 可以分析
_Default
路由的日志,_Required
和logs-from-samples
接收器,因为它们正在路由日志 同一项目内global
区域中的存储分区。 - Error Reporting 无法分析日志存储桶中存储的日志
名为
test-logs
,因为my-team-project
中的接收器会路由日志 其他项目中的日志存储桶。 - Error Reporting 无法分析由“
regional_logs
”路由的日志 水槽 因为它会将日志路由到europe-west1
区域中的区域级存储桶。
- 日志条目存储在
确保您已拥有 已安装 Google Cloud CLI。
确保您已拥有 为 gcloud CLI 启用了
beta
组件。
使用日志时
本部分提供写入错误数据时的问题排查支持 Cloud Logging 存储分区,并且您依赖于 Error Reporting 自动分析这些日志存储分区
生成样本日志条目
如需确认项目设置,您可以通过编程方式生成日志条目
将由 Error Reporting 获取,其中包含以下 gcloud
命令:
gcloud logging write --payload-type=json test-errors-log \
'{"serviceContext":
{"service": "manual-testing"},
"message": "Test Error\n at /test.js:42:42",
"context": {"httpRequest":
{"url": "/test","method": "GET","responseStatusCode": 500}}}'
然后打开 Error Reporting,并确认您已看到新创建的错误。
确认日志条目格式
转到 Cloud Logging 页面,找到包含您的应用发送的异常数据的日志条目。
确认该日志条目使用预期格式。
使用 Error Reporting API 时
-
启用所需的 API。
发送测试错误
尝试手动向该服务发送错误。
您可以使用以下
gcloud
命令向 Error Reporting 报告测试错误:gcloud beta error-reporting events report --service Manual --service-version test1 \ --message "java.lang.TestError: msg at com.example.TestClass.test(TestClass.java:51) at com.example.AnotherClass(AnotherClass.java:25)"
您可以使用 cURL 命令测试 REST API 调用。在发送以下命令之前,用您的有效值替换
PROJECT_ID
和API_KEY
:curl -X POST -H "Content-Type: application/json" \ -d '{"message":"java.lang.TestError: msg\n\tat com.example.TestClass.test(TestClass.java:51)\n\tat com.example.AnotherClass(AnotherClass.java:25)","serviceContext":{"service":"manual-testing"}}' \ https://clouderrorreporting.googleapis.com/v1beta1/projects/PROJECT_ID/events:report?key=API_KEY
确认发送的载荷
确保您的应用在 格式正确 包含必需的属性。