Personalized Service Health 会在 Cloud Logging 中记录服务健康状况事件。它会将活动说明、相关性或状态的所有更新记录为不同的日志。
本文档介绍了如何查看、导出和存储 Service Health 日志。
准备工作
Verify that billing is enabled for your Google Cloud project.
- 为您要查看、导出或存储日志的项目启用 Service Health API。
- 访问 Service Health 日志。
日志架构
如需了解可在查询中设置的字段,请参阅日志架构参考。
查看 Service Health 日志
如需查看 Service Health 日志,请执行以下操作:
- 前往 Google Cloud 控制台。
- 依次选择运维 > Logging > 日志浏览器。
- 在页面顶部选择一个 Google Cloud 项目。
在日志名称下拉菜单中,选择服务健康状况。
系统会显示
type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog
的日志列表。展开日志条目可查看活动详情。以下示例展示了一个典型事件。
"insertId":"1pw1msgf6a3zc6", "timestamp":"2022-06-14T17:17:55.722035096Z", "receiveTimestamp":"2022-06-14T17:17:55.722035096Z", "logName":"projects/PROJECT_ID/logs/servicehealth.googleapis.com%2Factivity", "resource":{ "type":"servicehealth.googleapis.com/Event", "labels":{ "resource_container":"797731824162", "location":"global", "event_id":"U4AqrjwFQYi5fFBmyAX-Gg" } } "labels":{ "new_event":"true" "updated_fields": "[]" }, "jsonPayload":{ "@type":"type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog", "category":"INCIDENT", "title":"We are experiencing a connectivity issue affecting Cloud SQL in us-east1, australia-southeast2.", "description":"We are experiencing an issue with Google Cloud infrastructure components at us-east1, australia-southeast2. Our engineering team continues to investigate the issue. We apologize to all who are affected by the disruption.", "updateTime":"2023-11-14T22:26:40Z", "endTime":"2023-11-14T22:13:20Z", "impactedLocations":"['us-east1','australia-southeast2']", "impactedProducts":"['Google Cloud SQL']", "impactedProductIds":"['hV87iK5DcEXKgWU2kDri']", "nextUpdateTime":"2023-11-14T22:40:00Z", "startTime":"2020-09-13T12:26:40Z", "state":"ACTIVE", "detailedState":"CONFIRMED", "relevance":"RELATED", }
查询 Service Health 日志
您可以使用 Logs Explorer 查询 Service Health 日志。您可能需要以下参考资料来构建查询:
示例:
条件 | 查询 |
获取具有特定突发事件相关性的日志 | jsonPayload.relevance = ("IMPACTED" OR "RELATED")
|
组合多个过滤条件 | jsonPayload.impactedLocations : "us-central1" AND jsonPayload.impactedProducts : "Google Compute Engine" AND jsonPayload.state = "ACTIVE"
|
导出 Service Health 日志
您可以使用 Google Cloud 控制台、API 或 gcloud CLI 将 Service Health 日志导出到任何 Cloud Logging 接收器目标位置。如需设置 Cloud Logging 接收器,请参阅配置和管理接收器。
您可以为接收器配置包含项过滤条件和排除项过滤条件,以包含和排除 Service Health 日志。
设置商品或位置时,请使用 Google Cloud 商品和位置中的值。
在文件夹级汇总 Service Health 日志
将文件夹下所有项目中的服务健康状况相关日志发送到专门为 Service Health 日志创建的项目,可让您对这些日志执行更复杂的查询。
您将在文件夹级层创建接收器,以将所有与 Service Health 相关的日志发送到该文件夹下的新项目。执行以下操作:
在文件夹下创建新项目。此项目已分配给 Service Health 日志。
gcloud projects create PROJECT_ID --folder FOLDER_ID
在文件夹级层为文件夹中的其他项目创建汇总接收器。
gcloud logging sinks create SINK_NAME \ SINK_DESTINATION --include-children \ --folder=FOLDER_ID --log-filter="LOG_FILTER"
如需获取所有相关事件的日志,请将 LOG_FILTER 值设置为以下内容:
resource.type=servicehealth.googleapis.com/Event AND jsonPayload.category=INCIDENT AND jsonPayload.relevance!=NOT_IMPACTED AND jsonPayload.@type=type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog
-
gcloud projects add-iam-policy-binding PROJECT_ID --member=SERVICE_ACCT_NAME --role=roles/logging.bucketWriter gcloud projects add-iam-policy-binding PROJECT_ID --member=SERVICE_ACCT_NAME --role=roles/logging.logWriter
(可选)如果您不想将日志发送到
_Default
接收器,请在项目中为与 Service Health 相关的日志创建日志存储桶。gcloud logging buckets create BUCKET_ID --location=LOCATION --enable-analytics --async
如果您创建了日志存储桶,请创建一个接收器,将这些日志发送到该存储桶。
gcloud logging sinks create SINK_NAME_BUCKET \ logging.googleapis.com/projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID \ --project=PROJECT_ID --log-filter="LOG_FILTER"
使用 BigQuery 查询服务运行状况日志
您可以使用 BigQuery 查询发送到 Cloud Logging 的日志,方法如下:
- 创建 SQL 查询。
- 使用 BigQuery API 将查询结果馈送到外部系统。
执行以下操作:
在您为 Service Health 日志创建的项目中创建日志存储桶。
gcloud logging buckets create BUCKET_ID --location=LOCATION --enable-analytics --async
-
gcloud logging buckets update BUCKET_ID --location=LOCATION --enable-analytics --async
创建与包含 Service Health 日志的存储桶相关联的新 BigQuery 数据集。
gcloud logging links create LINK_ID --bucket=BUCKET_ID --location=LOCATION
如有必要,请启用 BigQuery API。
gcloud services enable bigquery.googleapis.com
现在,您可以针对 BigQuery 运行复杂的 SQL 查询,例如:
条件 | 查询 |
获取具有特定突发事件相关性的日志 | gcloud query --use_legacy_sql=false 'SELECT * FROM `PROJECT_ID.LINK_ID._AllLogs` WHERE JSON_VALUE(json_payload["relevance"]) = "IMPACTED"'
|
获取父事件的所有子日志事件 | gcloud query --use_legacy_sql=false 'SELECT * FROM `PROJECT_ID.LINK_ID._AllLogs` WHERE JSON_VALUE(json_payload["parentEvent"]) = "projects/PROJECT_ID/locations/global/events/EVENT_ID"'
|
保留过往活动
Personalized Service Health 提供的事件保留期限有限。
如果您需要保留过去几个月以上的服务健康状况事件记录,建议您存储 Service Health 日志。