ELK搭建(七):搭建PostgreSQL慢查询、错误日志监控平台

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: PostgreSQL是一款功能非常强大的的关系性数据库,适用于需要执行复杂查询的系统。市面上越来越多的公司开始采用PostgreSQL作为主数据库。今天我们就来讲解如何搭建一个PostgreSQL的慢日志、错误日志监控平台,实时了解到数据库的日志情况,来帮助我们快速排错及优化。

0. 引言

PostgreSQL是一款功能非常强大的的关系性数据库,适用于需要执行复杂查询的系统。市面上越来越多的公司开始采用PostgreSQL作为主数据库。

今天我们就来讲解如何搭建一个PostgreSQL的慢日志、错误日志监控平台,实时了解到数据库的日志情况,来帮助我们快速排错及优化。
在这里插入图片描述

2. 下载

我们的平台是基于elasticsearch+kibana来实现的,也就是我们常说的ELK体系。我们采用filebeat插件来采集监控postgresql的运行数据。

当然我们这里为了保证搭建的便捷性,并没有使用到Logstash,如果大家有需要的话可以把filebeat采集到的数据输出到Logstash

关于ELK的搭建就不再累述了,不清楚的同学可以看看往期博客:
ELK搭建(一):实现分布式微服务日志监控

因为我的ELK环境是7.13.0的,所以我们需要下载对应版本的filebeat
filebeat官方下载地址

3. filebeat介绍

filebeat是elastic官方提供的一个轻量级的日志采集器,根据名称也能知道,主要用于文件的数据采集。基于Golang开发,可以安装到想要日志的服务器或者主机上来定期读取对应的数据,并发送到elasticsearch或者logstash上,甚至数据量大时,我们还可以先输出到kafka、redis等中间件上。

根据官方文档的解释,filebeat 主要包含两个主要组件:input和harvesters。

  • harvester: harvester用于按行读取单个文件的内容。每个文件都会启动一个harvester,harvester负责打开和关闭文件。filebeat中还有一个Registrar组件用于记录文件的偏移量,即上一次读取的位置,下一次打开文件时会从Registrar读取偏移量然后继续读取数据
  • input:负责管理harvester并且找到所有符合读取条件的文件。如果输入类型为log,则input会在驱动器上找到与定义的路径符合的文件,并会给每个文件都启动一个harvester.

其次再配置Output组件将获取的数据进行输出。
在这里插入图片描述

filebeat中支持多种服务的数据采集,包括但不仅限于Mysql,MongoDB,Nginx,Redis,ActiveMQ,PostgreSQL,RabbitMQ,Tomcat等等。更多可查看官方文档

搭配上kibana提供的开箱即用的数据看板,可以快速搭建监控平台。

4. 安装filebeat

1、解压压缩包(这里以mac版本示例,实际操作时请根据需要下载对应系统及版本的filebeat)

tar -zxvf filebeat-7.13.0-darwin-x86_64.tar.gz

2、修改filebeat.yml配置文件

vim filebeat.yml

修改内容

setup.template.settings:
  index.number_of_shards: 1
  # 因为es是单节点,所以将副本分片设置为0.否则会报黄
  index.number_of_replicas: 0
output.elasticsearch:
  hosts: ["192.168.244.11:9200"]
  username: "elastic"
  password: "elastic"
setup.kibana:
  host: "192.168.244.11:5601"

3、启用postgresql模块

./filebeat modules enable postgresql

4、修改postgresql module配置文件

vim modules.d/postgresql.yml

修改内容,这里直接采用了默认配置


- module: postgresql
  # All logs
  log:
    enabled: true
    # 因为postgresql慢日志记录开启的是csvlog模式,postgresql的日志会被存储到`.csv`文件下
    var.paths: ["/opt/homebrew/var/postgres/log/*.csv"]

日志位置可以通过如下指令查询,但请先确保慢日志已经开启,如不知道怎么开启的参考文章最后说明
(1)查询配置文件位置

show config_file;

在这里插入图片描述

(2)查询配置文件中日志目录,以及日志文件命名格式

 cat /opt/homebrew/var/postgres/postgresql.conf

在这里插入图片描述
(3)日志文件夹一般在config文件的同文件夹下,则路径为:

# 因为postgresql慢日志记录开启的是csvlog模式,postgresql的日志会被存储到`.csv`文件下,所以日志文件为*.csv
/opt/homebrew/var/postgres/log/*.csv

5、加载kibana仪表盘,如果之前执行过该指令的就无需再执行了

./filebeat setup

6、运行filebeat,注意这里不要把上述的指令中断后再执行,直接新开窗口执行,否则可能生成面板失败

./filebeat -e

在这里插入图片描述

7、在kibana的dev-tool中查询filebeat-7.13.0索引,如果有索引且有postgresql数据则说明配置成功

GET filebeat-7.13.0/_search

在这里插入图片描述

8、点击dashboard进入仪表盘页面,搜索postgresql,点击Overview ECS点击进入postgresql 日志监控面板
在这里插入图片描述
如下图所示,我们的日志数据就呈现出来了
在这里插入图片描述
如果面板中没有数据显示,但filebeat-7.13.0索引又能查询出数据,检查一下面板右上角查询的时间范围是否在日志的范围内,检查下postgresql服务器的日期是否正常

测试

1、在postgresql中执行以下指令,因为阈值设置的是3秒,所以设置睡眠4s会被判定为慢查询

select pg_sleep(4);

在这里插入图片描述
2、查看面板,可以看到慢日志已经更新上来了
在这里插入图片描述

到此,我们的postgresql日志监控平台就搭建完成了,大家不妨动手操作试试吧

5. postgresql开启慢日志

如果postgresql没有开启慢日志的,要先开启:

1、开启慢查询日志,修改配置文件postgresql.cnf
查询配置文件位置

# 登陆postgresql
psql postgres  
# 查询配置文件路径
show config_file;

在这里插入图片描述
修改文件

vim /opt/homebrew/var/postgres/postgresql.conf

添加内容

# 开启日志基础设置
log_destination = 'syslog'
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_rotation_age = 1d
log_rotation_size = 10MB
log_min_messages = info

# 记录执行慢的SQL 
# 慢查询定义,单位毫秒
log_min_duration_statement = 3000
log_checkpoints = on
log_connections = on
log_disconnections = on
log_duration = on
log_line_prefix = '%m'

# 监控数据库中长时间的锁
log_lock_waits = on
# 记录DDL操作
log_statement = 'ddl'

3、重启postgresql

# 我这里是mac homebrew安装的,所以使用bomebrew指令重启
 brew services restart postgresql

关注公众号Elasticsearch之家,了解更多新鲜内容

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
11天前
|
运维 监控 Ubuntu
一键启动日志魔法:揭秘ELK自动安装脚本的神秘面纱!
【8月更文挑战第9天】在数据驱动时代,高效处理日志至关重要。ELK Stack(Elasticsearch、Logstash、Kibana)是强大的日志分析工具,但其复杂的安装配置常让初学者望而却步。本文介绍如何编写ELK自动安装脚本,简化部署流程。脚本适用于Ubuntu系统,自动完成ELK下载、安装及基本配置,包括依赖项安装、服务启动及自启设置,极大降低了使用门槛,助力运维人员和开发者轻松构建日志分析平台。
48 6
|
13天前
|
存储 应用服务中间件 nginx
部署ELK+filebeat收集nginx日志
部署ELK+filebeat收集nginx日志
部署ELK+filebeat收集nginx日志
|
3天前
|
数据可视化 Java API
如何在项目中快速引入Logback日志并搭配ELK使用
如何在项目中快速引入Logback日志并搭配ELK使用
|
7天前
|
存储 监控 Ubuntu
一键搞定:用脚本轻松部署ELK,让日志分析变得简单又高效
【8月更文挑战第13天】ELK栈由Elasticsearch、Logstash和Kibana组成,用于日志存储、解析及展示,是大数据领域广泛采用的日志解决方案。鉴于其安装配置复杂,本文提供了一个适用于Ubuntu 16.04的ELK自动安装Shell脚本示例。脚本首先确保Java环境安装,接着添加Elastic.co的APT仓库并安装ELK组件,最后启动所有服务。通过自动化流程,简化部署工作,减少人为错误,提升效率。实际应用中还需根据具体需求调整配置和服务设置。
12 0
|
1月前
|
存储 消息中间件 监控
日志收集分析器(ELK)
日志收集分析器(ELK)
|
3月前
|
监控 应用服务中间件 nginx
使用 Docker Compose V2 快速搭建日志分析平台 ELK (Elasticsearch、Logstash 和 Kibana)
ELK的架构有多种,本篇分享使用的架构如图所示: Beats(Filebeat) -> -> Elasticsearch -> Kibana,目前生产环境一天几千万的日志,内存占用大概 10G
210 4
|
3月前
|
存储 编解码 监控
实验模拟 搭建elk 日志分析系统
实验模拟 搭建elk 日志分析系统
|
3月前
|
存储 监控 Java
ELK 企业级日志分析系统 简单介绍
ELK 企业级日志分析系统 简单介绍
|
3月前
|
SQL 关系型数据库 数据库
实时计算 Flink版产品使用合集之同步PostgreSQL数据时,WAL 日志无限增长,是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
存储 监控 数据可视化
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
821 0

热门文章

最新文章