gpt4 book ai didi

google-bigquery - 使用 Python 查询 GCP Stackdriver 日志

转载 作者:行者123 更新时间:2023-12-01 19:38:51 25 4
gpt4 key购买 nike

我正在使用 Python3 查询 Stackdriver 以获取 GCP 日志。不幸的是,具有重要数据的日志条目以“NoneType”而不是“dict”或“str”的形式返回给我。结果“entry.payload”是“None”类型,“entry.payload_pb”有我想要的数据,但是是乱码。

有没有办法让 Stackdriver 以干净的格式返回这些数据,或者有什么方法可以解析它?
如果没有,是否有一种方法可以查询比我正在做的更好的数据并产生干净的数据?

我的代码看起来像这样:

#!/usr/bin/python3

from google.cloud.logging import Client, ASCENDING, DESCENDING
from google.oauth2.service_account import Credentials

projectName = 'my_project'
myFilter = 'logName="projects/' + projectName + '/logs/compute.googleapis.com%2Factivity_log"'

client = Client(project = projectName)
entries = client.list_entries(order_by=DESCENDING, page_size = 500, filter_ = myFilter)
for entry in entries:
if isinstance(entry.payload, dict):
print(entry.payload)
if isinstance(entry.payload, str):
print(entry.payload)
if isinstance(entry.payload, None):
print(entry.payload_pb)

“entry.payload_pb”数据总是这样开头:
type_url: "type.googleapis.com/google.cloud.audit.AuditLog"
value: "\032;\n9gcp-user@my-project.iam.gserviceaccount.com"I\n\r129.105.16.28\0228

最佳答案

看起来与解析 protobuf 以进行日志记录相关的 Python 库中的某些内容已损坏。
发现两个老问题

  • https://github.com/GoogleCloudPlatform/google-cloud-python/issues/3218
  • https://github.com/GoogleCloudPlatform/google-cloud-python/issues/2674

  • 这似乎在前一段时间解决了 - 但我相信问题又被引入了。
    我已经在这个问题上为谷歌支持打开了票,他们正在调查它。

    作为解决方法 - 您可以使用两个选项:
  • 您可以创建导出(接收器)到 BigQuery - 因此在这种情况下您可以轻松查询您的日志 - 这种方法的问题是它不会导出您在创建导出之前收集的旧数据。
  • 您可以使用 gcloud 命令。尤其

    gcloud 日志已读

  • 它非常强大(支持过滤器、时间戳)——但它的输出格式是 yaml。您可以安装和使用 PyYAML 库将日志转换为字典。

    关于google-bigquery - 使用 Python 查询 GCP Stackdriver 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50301632/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com