从审计日志中了解PostgreSQL游标:CloudSQL

of1yzvn4  于 2023-04-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(119)

我的cloud logging console里到处都有来自cloudsql postgresql的审计日志。

{
  "textPayload": "2023-04-27 08:03:17.058 UTC [980077]: [41406-1] db=xyz,user=xyz LOG:  duration: 6166.869 ms  statement: FETCH 10000 FROM c1",
  "insertId": "s=4ae93d4dfabf4fc6b09ckdanknc0f18e2;i=39eexcb;b=eca5cad5acb84ckjndkj9e5a3af5dc7aee47;m=153c87ckac099b;t=5fa4cca00kjbad2ae;x=aa1f7345cca3ckbcjb81d-0-0@a1",
  "resource": {
    "type": "cloudsql_database",
    "labels": {
      "project_id": "xyz",
      "database_id": "xyz:postgres",
      "region": "europe-west9"
    }
  },
  "timestamp": "2023-04-27T08:03:17.059246Z",
  "severity": "INFO",
  "labels": {
    "INSTANCE_UID": "12-d77d8db7-0633-4695-b4c7-0a8cdhdknec9392",
    "LOG_BUCKET_NUM": "38"
  },
  "logName": "projects/xyz/logs/cloudsql.googleapis.com%2Fpostgres.log",
  "receiveTimestamp": "2023-04-30T08:03:20.820646796Z"
}

我尝试查询pg_cursors,但由于没有活动的连接,我没有看到任何数据。
我想跟踪这个游标c1后面的原始查询,或者获得关于这个FETCH 10000 FROM c1查询的更多细节。
如何通过使用云日志或查询postgresql来获取更多细节?

8ehkhllq

8ehkhllq1#

声明:FETCH 10000 FROM C1显示在您提到的日志中,是在postgresql中执行的原始(后端)查询。此查询将从游标C1中检索接下来的10000行,因为默认情况下没有任何方向,postgresql将方向视为NEXT

有关FETCH命令的更多详细信息,请参阅此link
如果您想了解该PgAudit日志的详细信息,请尝试执行此查询,将logName更改为您的logName(logName:“projects/xyz/logs/cloudsql.googleapis.com%2Fpostgres.log”)

resource.type="cloudsql_database"
logName="projects/<your-project-name>/logs/cloudaudit.googleapis.com%2Fdata_access"
protoPayload.request.@type="type.googleapis.com/google.cloud.sql.audit.v1.PgAuditEntry"

输出结果如下所示

{
  protoPayload: {
    @type: "type.googleapis.com/google.cloud.audit.AuditLog"
    methodName: "cloudsql.instances.query"
    request: {
      @type: "type.googleapis.com/google.cloud.sql.audit.v1.PgAuditEntry"
      auditClass: "READ"
      auditType: "SESSION"
      chunkCount: "1"
      chunkIndex: "1"
      command: "SELECT"
      database: "finance"
      databaseSessionId: 2209692
      parameter: "[not logged]"
      statement: "SELECT * FROM C1"
      statementId: 2
      substatementId: 1
      user: "alice"
    }
  }
}

这里的语句值是指在后台执行的查询。此查询将帮助您获取审核日志的详细信息。有关查询和审核日志的详细信息,请参阅本文档。

更新时间:

Cloud SQL for PostgreSQL中的数据库审计可通过开源pgAudit扩展提供。通过使用此扩展,您可以有选择地记录和跟踪针对给定数据库示例执行的SQL操作。该扩展为您提供了审计功能,以监视和记录选定的操作子集。

pgAudit扩展适用于执行的SQL命令和查询。相反,云审计日志应用于审计在云SQL示例上完成的管理和维护操作。

请参阅document配置PostgreSQL pgAudit扩展。

相关问题