使用docker部署pgbadger,pgsql(postgresql)日志处理器

文章讲述了如何配置PostgreSQL的log_line_prefix参数以满足pgBadger的要求,通过修改postgresql.conf文件来启用更多日志信息。接着,介绍了如何从DockerHub拉取pgbadger镜像,创建并配置docker-compose.yaml文件来运行容器,以及设置容器时间和宿主机同步。最后,文章说明了如何使用pgbadger生成html报告并查看日志分析结果。
摘要由CSDN通过智能技术生成

1. 配置文件参数修改

pgBadger 支持任何自定义格式设置为 postgresql.conf 文件中的 log_line_prefix 指令,只要它至少指定了一个时间转义序列(%t、%m 或 %n)和进程相关的转义序列(%p 或 %c)。

例如,对于 ‘stderr’ 日志格式,log_line_prefix 必须至少为:

log_line_prefix = '%t [%p]: '

日志行前缀可以添加用户、数据库名称、应用程序名称和客户端 IP 地址,例如:

log_line_prefix = '%t [%p]: user=%u,db=%d,app=%a,client=%h '

对于 syslog 日志文件格式,log_line_prefix 可以为:

log_line_prefix = 'user=%u,db=%d,app=%a,client=%h '

对于 stderr 输出的日志行前缀也可以为:

log_line_prefix = '%t [%p]: db=%d,user=%u,app=%a,client=%h '

或者对于 syslog 输出:

log_line_prefix = 'db=%d,user=%u,app=%a,client=%h '

要从日志文件中获取更多信息,需要在 postgresql.conf 中启用其他参数:

log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0 
log_autovacuum_min_duration = 0 
log_error_verbosity = default

不要启用 log_statement,因为它的日志格式将不会被 pgBadger 解析。

当然,您的日志消息应该是以英文为基础的,可以有或没有区域设置:

lc_messages='en_US.UTF-8' 
lc_messages='C'

2. 拉取pgbadger镜像

docker pull allen226/pgbadger

3. 在本机存储pglog的path(该例子为/data/pg_data/pg_log)下新建一个output目录以存放输出的html文件

mkdir /data/pg_data/pg_log/output

4. 创建docker-compose.yaml文件

version: '2'
services:
  pgbadger:
    image: allen226/pgbadger
    restart: always
    entrypoint: ["/usr/bin/tail"]
    volumes:
      - /data/pg_data/pg_log:/original_log_files  # /data/pg_data/pg_log替换为本机存储pglog的path
      - /data/pg_data/pg_log/output:/results_html_files # /data/pg_data/pg_log替换为本机存储pglog的path
    command: ["-F", "anything"]

将/data/pg_data/pg_log替换为宿主机存储pg log的path

5. 在docker-compose.yaml文件目录下启动容器

docker-compose up -d

6. 使容器时间和宿主机同步,以保证生成的html图表时间准确

# 在宿主机上操作
docker cp /etc/localtime 容器ID:/etc/

7. 使用pgbadger生成html报告

docker-compose -f 替换为存放docker-compose.yaml文件的目录/docker-compose.yaml exec pgbadger bash -c "pgbadger -f csv 日志文件(支持通配符) -o 输出html报告的path,例如/data/out.html -Z Asia/Shanghai -j 1"
# -f后跟log格式:syslog, syslog2, stderr, jsonlog,csv, pgbouncer, logplex, rds and redshift(我的log格式为csv,所以此处使用csv作为例子)
# -Z后跟时区
# -j后跟处理日志文件的线程数

具体参数解释:https://pgbadger.darold.net/documentation.html#POSTGRESQL-CONFIGURATION

8. 在…/output下找到html文件,可以使用sz传到本地在浏览器中查看,也可以使用httpd直接放到网上查看

html文件在浏览器中打开的样式图:
在这里插入图片描述
可见,有非常多的指标可以查看

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值