PostgreSQL 语句指标集编辑

这是 PostgreSQL 模块的 statement 指标集。

此模块收集来自 pg_stat_statements 视图的信息,该视图跟踪服务器执行的所有 SQL 语句的计划和执行统计信息。

pg_stat_statements 由 PostgreSQL 中的附加模块包含。此模块需要额外的共享内存,默认情况下是禁用的。

您可以将此模块添加为共享预加载库到配置中以启用它。

shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 10000
pg_stat_statements.track = all

在服务器中预加载此库将增加 PostgreSQL 服务器的内存使用量。谨慎使用。

一旦服务器启动了此模块,它就开始收集关于所有执行的语句的统计信息。为了使这些统计信息在 pg_stat_statements 视图中可用,需要在服务器中执行以下语句

CREATE EXTENSION pg_stat_statements;

您可以在 官方文档 中阅读有关此模块的可用选项的更多信息。

Filebeat 的 PostgreSQL 模块还能够从其日志中收集有关在服务器中执行的语句的信息。您可以根据需要选择哪一个更适合。一个重要的区别是 Metricbeat 模块在多次执行语句时收集聚合信息,但无法知道每个语句何时执行。此信息可以从日志中获取。

字段

有关指标集中每个字段的说明,请参阅 导出字段 部分。

以下是由此指标集生成的示例文档

{
    "@timestamp": "2017-10-12T08:05:34.853Z",
    "event": {
        "dataset": "postgresql.statement",
        "duration": 115000,
        "module": "postgresql"
    },
    "metricset": {
        "name": "statement",
        "period": 10000
    },
    "postgresql": {
        "statement": {
            "database": {
                "oid": 13395
            },
            "query": {
                "calls": 132,
                "id": -3489238739385425370,
                "memory": {
                    "local": {
                        "dirtied": 0,
                        "hit": 0,
                        "read": 0,
                        "written": 0
                    },
                    "shared": {
                        "dirtied": 0,
                        "hit": 924,
                        "read": 0,
                        "written": 0
                    },
                    "temp": {
                        "read": 0,
                        "written": 0
                    }
                },
                "rows": 396,
                "text": "SELECT d.datname as \"Name\",\n       pg_catalog.pg_get_userbyid(d.datdba) as \"Owner\",\n       pg_catalog.pg_encoding_to_char(d.encoding) as \"Encoding\",\n       d.datcollate as \"Collate\",\n       d.datctype as \"Ctype\",\n       pg_catalog.array_to_string(d.datacl, $1) AS \"Access privileges\"\nFROM pg_catalog.pg_database d\nORDER BY 1",
                "time": {
                    "max": {
                        "ms": 0.325369
                    },
                    "mean": {
                        "ms": 0.07867374242424244
                    },
                    "min": {
                        "ms": 0.053835
                    },
                    "stddev": {
                        "ms": 0.037920252272212004
                    },
                    "total": {
                        "ms": 10.384934000000003
                    }
                }
            },
            "user": {
                "id": 10
            }
        }
    },
    "service": {
        "address": "192.168.128.2:5432",
        "type": "postgresql"
    }
}