Google Cloud Storage & Stackdriver Logging:如何使用 "gcloud" 读取存储桶日志?
Google Cloud Storage & Stackdriver Logging: how to read storage bucket logs with "gcloud"?
我正在尝试通过 gcloud
命令行程序读取 Google 云存储项目中存储桶的服务器端日志(以解决我在使用存储客户端时遇到的错误).
Stackdriver Logging UI.
中似乎没有可用的日志
那么,第一个问题:这些日志是否可用?如果是这样,我该如何访问它们?
它看起来应该可以通过gcloud
:
Mortens-MacBook-Pro:~ skyfer$ gcloud logging resource-descriptors list | grep -i storage
gcs_bucket A Google Cloud Storage (GCS) bucket.
project_id,bucket_name,location
但使用 gcloud logging read
例如像下面这样不起作用:
Mortens-MacBook-Pro:~ skyfer$ gcloud logging read "resource.type=gcs_bucket AND logName=projects/my-project/logs/ AND textPayload:StorageException" --limit 10 --format json
[]
ERROR: (gcloud.logging.read) INVALID_ARGUMENT: Name is missing the logs component. Expected the form projects/[PROJECT_ID]/logs/[ID]
所以一个重要的问题是:ID
的语法是什么? 我能够找到的文档,例如LogEntry and Available Logs,好像没有给出答案。
我尝试了各种格式并且 none 有效:它们 return 语法错误或没有结果。我也试过遗漏 ID
但那只是 return 一个空列表:
Mortens-MacBook-Pro:~ skyfer$ gcloud logging read "resource.type=gcs_bucket AND logName=projects/my-project/logs/my-bucket" --limit 10 --format json
[]
如果我将存储桶的名称更改为不存在的存储桶,它似乎没有任何区别,表明存储桶名称不是 id 的一部分。
存储桶存在于 Google 云存储中:通过 UI 和 gsutil
验证:
Mortens-MacBook-Pro:~ skyfer$ gsutil ls gs://my-bucket/
gs://my-bucket/03ea8f19-8135-4101-a04a-aef3f19b0fdb/
gs://my-bucket/59e86a67-d035-4e4a-bc56-7c2da5e8c908/
如有任何帮助,我们将不胜感激。
是的,stackdriver 中没有日志。
google 云存储有 3 种日志记录类型。
访问日志:它们提供对指定存储桶发出的所有请求的信息,并且每小时创建一次
每日存储日志: 它们提供有关该存储桶最后一天的存储消耗的信息。
Cloud Audit Logging: 这使您可以访问在 Cloud Storage 中执行的 API 操作的日志,您可以找到有关它的更多详细信息 here。
您的日志文件将具有特定格式,您可以找到更多相关信息 here。
找到要下载的日志文件后,可以通过以下方式下载:
gsutil cp gs://<bucket_name>/<file_name>
您可以使用以下命令列出所有日志
gcloud logging logs list
您可以使用以下命令读取特定日志
gcloud logging read <LOG_NAME>
我正在尝试通过 gcloud
命令行程序读取 Google 云存储项目中存储桶的服务器端日志(以解决我在使用存储客户端时遇到的错误).
Stackdriver Logging UI.
那么,第一个问题:这些日志是否可用?如果是这样,我该如何访问它们?
它看起来应该可以通过gcloud
:
Mortens-MacBook-Pro:~ skyfer$ gcloud logging resource-descriptors list | grep -i storage
gcs_bucket A Google Cloud Storage (GCS) bucket.
project_id,bucket_name,location
但使用 gcloud logging read
例如像下面这样不起作用:
Mortens-MacBook-Pro:~ skyfer$ gcloud logging read "resource.type=gcs_bucket AND logName=projects/my-project/logs/ AND textPayload:StorageException" --limit 10 --format json
[]
ERROR: (gcloud.logging.read) INVALID_ARGUMENT: Name is missing the logs component. Expected the form projects/[PROJECT_ID]/logs/[ID]
所以一个重要的问题是:ID
的语法是什么? 我能够找到的文档,例如LogEntry and Available Logs,好像没有给出答案。
我尝试了各种格式并且 none 有效:它们 return 语法错误或没有结果。我也试过遗漏 ID
但那只是 return 一个空列表:
Mortens-MacBook-Pro:~ skyfer$ gcloud logging read "resource.type=gcs_bucket AND logName=projects/my-project/logs/my-bucket" --limit 10 --format json
[]
如果我将存储桶的名称更改为不存在的存储桶,它似乎没有任何区别,表明存储桶名称不是 id 的一部分。
存储桶存在于 Google 云存储中:通过 UI 和 gsutil
验证:
Mortens-MacBook-Pro:~ skyfer$ gsutil ls gs://my-bucket/
gs://my-bucket/03ea8f19-8135-4101-a04a-aef3f19b0fdb/
gs://my-bucket/59e86a67-d035-4e4a-bc56-7c2da5e8c908/
如有任何帮助,我们将不胜感激。
是的,stackdriver 中没有日志。
google 云存储有 3 种日志记录类型。
访问日志:它们提供对指定存储桶发出的所有请求的信息,并且每小时创建一次
每日存储日志: 它们提供有关该存储桶最后一天的存储消耗的信息。
Cloud Audit Logging: 这使您可以访问在 Cloud Storage 中执行的 API 操作的日志,您可以找到有关它的更多详细信息 here。
您的日志文件将具有特定格式,您可以找到更多相关信息 here。
找到要下载的日志文件后,可以通过以下方式下载:
gsutil cp gs://<bucket_name>/<file_name>
您可以使用以下命令列出所有日志
gcloud logging logs list
您可以使用以下命令读取特定日志
gcloud logging read <LOG_NAME>