PostgreSQL 语句指标集
编辑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" } }