将您的日志导出到 Google Cloud Storage (GCS), BigQuery, 或 Pub/Sub 进行长期存储和分析,是保持数据安全和可访问性的关键一步。下面是详细步骤:
根据您的需求选择合适的导出目标:
导出接收器定义了要导出的日志以及导出目标。您可以使用 Google Cloud Console、gcloud CLI 或 Logging API 创建接收器。
gs://your-bucket-name). 确保您有写入权限!resource.type="gce_instance" (导出 GCE 实例的日志). 留空则导出所有日志。使用以下命令创建接收器:
gcloud logging sinks create my-gcs-sink \
gs://your-bucket-name \
--log-filter='resource.type="gce_instance"' \
--description="Exports GCE instance logs to GCS"
确保替换 my-gcs-sink, gs://your-bucket-name, 和 resource.type="gce_instance" 为您的实际值。
您需要授予 Logging 服务帐户写入导出目标的权限。 在创建接收器时,会生成一个唯一的服务帐号。 例如: serviceAccount:gcp-logging@system.gserviceaccount.com。 将此服务帐号添加到您的导出目标,并授予相应的角色。
授予 Storage Object Creator 角色给 Logging 服务帐户。 可以通过 Cloud Console 或 gcloud CLI 完成。
授予 BigQuery Data Editor 角色给 Logging 服务帐户。 确保 BigQuery 数据集存在。
授予 Pub/Sub Publisher 角色给 Logging 服务帐户。 确保 Pub/Sub 主题存在。
创建接收器后,等待一段时间,然后检查导出目标以确认日志正在导出。 您可以生成一些新的日志,然后查看是否成功导出。
使用高级过滤可以更精确地选择要导出的日志。 Logging 使用 Logging 查询语言,您可以根据时间戳、资源类型、严重性等条件进行过滤。
例如,导出所有错误级别的日志:
severity >= ERROR
导出特定用户的日志:
protoPayload.authenticationInfo.principalEmail = "user@example.com"
如果日志导出失败,请检查以下事项:
使用 Terraform 创建导出接收器:
resource "google_logging_project_sink" "gcs_sink" {
name = "gcs-sink"
destination = "storage.googleapis.com/your-bucket-name"
filter = "resource.type = \\"gce_instance\\""
}
使用 Terraform 管理 Logging 导出可以简化配置和维护。
希望这篇指南能帮助您成功将 Google Cloud Logging 日志导出到您选择的目标! 🥳