【问题标题】:Create a report from GCP Cloud SQL logs根据 GCP Cloud SQL 日志创建报告
【发布时间】:2021-01-29 17:43:07
【问题描述】:

我已在我的 GCP PostgreSQL 11 Cloud SQL 数据库上启用日志记录。日志被重定向到同一项目中的存储桶,它们采用 JSON 格式。

日志包含在数据库上执行的查询。有没有办法从这些 JSON 日志中创建一个体面的报告,其中包含日志条目中的一些字段?目前日志文件是 JSON 格式,对读者不太友好。

此外,如果运行多行查询,则会为该查询创建许多日志条目。如果还有一种方法可以识别属于同一查询的日志,那也会很有帮助!

【问题讨论】:

  • 从理论上讲,这似乎有点像将 NoSQL 转换为 SQL - 有时可能有时不是...你能显示示例日志吗?

标签: google-cloud-platform google-cloud-sql audit-logging


【解决方案1】:

我想最简单的方法是使用 BigQuery。

BigQuery 将正确导入这些 jsonl 文件和 will assign proper field names for the json data

当您有多行查询时,您会看到它们在 json 文件中显示为多个日志条目。

看起来来自多行查询的所有条目都具有相同的 receiveTimestamp(这是有道理的,因为它们是同时生成的)。

此外,insertId 字段有一个“s=xxxx”子字段,该子字段不会因同一语句中的行而改变。例如:

insertId: "s=6657e04f732a4f45a107bc2b56ae428c;i=1d4598;b=c09b782e120c4f1f983cec0993fdb866;m=c4ae690400;t=5b1b334351733;x=ccf0744974395562-0@a1"

以正确的行顺序提取语句的策略是:

  1. 按 insertId 中的 's' 字段排序
  2. 然后按receiveTimestamp升序排序(将所有行一次性发送到cloudsql服务中的syslog代理)
  3. 最后按时间戳升序排序(以获得正确的行排序)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 2021-03-25
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    相关资源
    最近更新 更多