小编Rhi*_*guy的帖子

使用 Python 查询 GCP Stackdriver 日志

我正在使用 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)
Run Code Online (Sandbox Code Playgroud)

“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
Run Code Online (Sandbox Code Playgroud)

google-bigquery google-cloud-logging stackdriver google-cloud-python google-cloud-stackdriver

6
推荐指数
1
解决办法
2023
查看次数