PostgreSQL 模块
编辑PostgreSQL 模块
编辑postgresql
模块收集并解析 PostgreSQL 创建的日志。
当你运行该模块时,它会在后台执行一些任务
- 设置日志文件的默认路径(但不用担心,你可以覆盖默认值)
- 确保每个多行日志事件都作为单个事件发送
- 使用 Elasticsearch 摄取管道解析和处理日志行,将数据塑造为适合在 Kibana 中可视化的结构
- 部署用于可视化日志数据的仪表板
阅读快速入门,了解如何配置和运行模块。
兼容性
编辑该模块有两种版本:一种是基于 Linux 发行版默认值的日志文件解析器,另一种是 CSV 日志解析器,你需要通过数据库配置启用它。
使用 .log
的 postgresql
模块已在 Ubuntu 上的 9.5 版本、Debian 上的 9.6 版本以及最终 Arch Linux 9.3 上的 10.11、11.4 和 12.2 版本中进行了测试。
使用 .csv
的 postgresql
模块已使用 11 和 13 版本进行了测试(发行版在这里不相关)。
支持的日志格式
编辑该模块可以收集来自 PostgreSQL 服务器的任何日志,但为了更好地分析其内容并提取更多信息,它们应该以确定的方式进行格式化。
日志格式有一些设置需要考虑。
日志行应以毫秒时间戳、进程 ID、用户 ID 和数据库名称作为前缀。这通常是大多数发行版中的默认值,并在配置文件中转换为此设置
log_line_prefix = '%m [%p] %q%u@%d '
可以将 PostgreSQL 服务器配置为记录语句及其持续时间,并且此模块能够收集此信息。为了能够将每个持续时间与其语句相关联,它们必须记录在同一行中。当使用以下选项时,会发生这种情况
log_duration = 'on' log_statement = 'none' log_min_duration_statement = 0
在 log_min_duration_statement
中设置零值将记录客户端执行的所有语句。你可能希望将其配置为更高的值,以便它仅记录较慢的语句。此值以毫秒为单位配置。
当一起使用 log_statement
和 log_duration
时,语句和持续时间会记录在不同的行中,Filebeat 无法关联这两个值,因此建议禁用 log_statement
。
Metricbeat 的 PostgreSQL 模块还能够收集有关服务器中执行的所有语句的信息。你可以选择哪一个更适合你的需求。一个重要的区别是,当语句多次执行时,Metricbeat 模块会收集聚合信息,但无法知道每个语句何时执行。此信息可以从日志中获得。
你可能需要考虑启用的其他日志记录选项如下
log_checkpoints = 'on'; log_connections = 'on'; log_disconnections = 'on'; log_lock_waits = 'on';
如果你没有持久连接,log_connections
和 log_disconnections
都可能导致大量事件,因此请谨慎启用。
使用 CSV 日志
编辑由于 PostgreSQL CSV 日志文件是定义明确的格式,因此 Filebeat 中几乎不需要进行任何配置,只需文件路径即可。
另一方面,有必要配置 postgresql 以发出 .csv
日志。建议的参数是
logging_collector = 'on'; log_destination = 'csvlog';
配置模块
编辑你可以通过在 modules.d/postgresql.yml
文件中指定变量设置,或在命令行中覆盖设置,来进一步优化 postgresql
模块的行为。
你必须在模块中至少启用一个文件集。默认情况下,文件集是禁用的。
以下示例展示了如何在 modules.d/postgresql.yml
文件中设置路径,以覆盖 PostgreSQL 日志的默认路径
- module: postgresql log: enabled: true var.paths: ["/path/to/log/postgres/*.log*"]
要在命令行中指定相同的设置,可以使用
-M "postgresql.log.var.paths=[/path/to/log/postgres/*.log*]"
变量设置
编辑每个文件集都有单独的变量设置,用于配置模块的行为。如果你不指定变量设置,则 postgresql
模块使用默认值。
对于高级用例,你还可以覆盖输入设置。请参阅覆盖输入设置。
当你在命令行中指定设置时,请记住在设置前加上模块名称,例如 postgresql.log.var.paths
而不是 log.var.paths
。
log
文件集设置
编辑-
var.paths
- 一个基于 glob 的路径数组,用于指定查找日志文件的位置。此处还支持 Go Glob 支持的所有模式。例如,你可以使用通配符从预定义级别的子目录中获取所有文件:
/path/to/log/*/*.log
。这会从/path/to/log
的子文件夹中获取所有.log
文件。它不会从/path/to/log
文件夹本身获取日志文件。如果此设置留空,Filebeat 将根据你的操作系统选择日志路径。
示例仪表板
编辑此模块带有两个示例仪表板。
第一个仪表板用于常规日志。
第二个仪表板显示 PostgreSQL 的慢查询日志。如果未使用 log_min_duration_statement
,则此仪表板将显示不完整或无数据。
字段
编辑有关模块中每个字段的描述,请参阅导出的字段部分。