从 GCP Cloud SQL 日志创建报告

Create a report from GCP Cloud SQL logs

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

日志包含在数据库上执行的查询。有没有办法从这些 JSON 日志中创建一个像样的报告,其中包含日志条目中的一些字段?目前日志文件在 JSON 中,不是很 reader 友好。

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

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

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

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

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

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

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

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

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