ELK搭建(八):搭建PostgreSQL性能、运行效率监控平台

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: PostgreSQL作为一款免费、开源、企业级的关系数据库,被越来越多的企业所青睐,上一章我们讲解了如何搭建一个实时监控PostgreSQL慢日志、错误日志的平台,但是针对PostgreSQL的运行性能还无法监控,生产环境中,特别是构建了数据库集群后,我们常常需要了解到各个数据库的运行情况、性能效率等, 这样才能为我们数据库优化、性能优化提供更有力的保障

0. 引言

PostgreSQL作为一款免费、开源、企业级的关系数据库,被越来越多的企业所青睐,上一章我们讲解了如何搭建一个实时监控PostgreSQL慢日志、错误日志的平台,但是针对PostgreSQL的运行性能还无法监控,生产环境中,特别是构建了数据库集群后,我们常常需要了解到各个数据库的运行情况、性能效率等, 这样才能为我们数据库优化、性能优化提供更有力的保障

话不多说,今天我们就来搭建一个PostgreSQL性能、运行效率监控平台
在这里插入图片描述

1. 下载

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

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

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

因为我的ELK环境是7.13.0的,所以我们需要下载对应版本、对应系统的Metricbeat
Metricbeat官方下载地址
在这里插入图片描述

2. Metricbeat介绍

metricbeat是elstic官方推出的一款轻量型的采集器,属于beats系列中专门用于各种系统和服务统计的beat。不仅可以统计postgresql等数据,也可以统计redis、nginx、服务器cpu、内存、磁盘等服务的相关指标。

metricbeat定时从服务器中通过抓包的方式获取对应指标数据,然后发送到elasticsearch或者logstash中

metricbeat由两个部分组成:

  • 1、module
    所谓module就是针对不同的服务进行采集的模块,比如系统服务就是system module。metricbeat中支持的module有几十种,包括但不仅限于:ActiveMQ module,Apache module,Docker module,HTTP module等,具体可以metricbeat官方文档中的modules部分查看
  • 2、metricset
    采集的内容,以postgresql module为例,支持四种指标集:
    (1)activity:进程活动指标集,包含客户端、数据库、进程ID、用户等指标

    (2)bgwriter:缓存刷新指标集,包含缓冲区、检查点相关指标

    (3)database:数据库指标集,包含blocks、冲突、死锁、数据行变化情况等指标

    (4)statement:状态指标集,包含查询调用次数、本地内存、共享内存、临时内存、响应时间、执行计划、执行统计等指标

更多关于指标集的介绍可以查看官方文档

3. 安装Metricbeat

1、将安装包上传到服务器上,可以使用FTP软件或者以下指令上传

scp metricbeat-7.13.0-linux-arm64.tar.gz root@192.168.244.18:/var/local 

2、解压压缩包

tar -zxvf metricbeat-7.13.0-linux-arm64.tar.gz 

3、修改配置文件metricbeat.yml中的连接信息

vim metricbeat.yml

修改内容

setup.template.settings:
# 因为我这里es是单节点,所以设置主分片数为1,副本分片数为0.否则会报黄
  index.number_of_shards: 1
  index.number_of_replicas: 0
output.elasticsearch:
# 你的es所在服务器ip
  hosts: ["192.168.244.11:9200"]
  username: "elastic"
  password: "elastic"
setup.kibana:
# kibana所在服务器ip
  host: "192.168.244.11:5601"

4、启动postgresql模块,metricbeat会根据modules.d/postgresql.yml中的配置项来获取系统数据

./metricbeat modules enable postgresql

5、配置要采集的内容,修改modules.d/postgresql.yml配置文件

vim modules.d/postgresql.yml 

配置文件内容,这里我们将database、bgwriter、activity的指标都开启,具体可根据自己的需要进行配置

- module: postgresql
  metricsets:
    - database
    - bgwriter
    - activity
  period: 10s
  hosts: ["postgres://localhost:5432?sslmode=disable"]
  username: postgres
  password: postgres

6、加载kibana仪表盘,如果之前已经设置过就不用再执行了

./metricbeat setup

在这里插入图片描述
7、启动metricbeat(如果上述的指令没有自动退出的话,就新开个窗口执行,不要退出上述指令窗口)

./metricbeat -e

在这里插入图片描述

8、在kibana的dev-tool窗口中查询metricbeat-7.13.0索引,能够查询到上述指标集数据表明配置成功

GET metricbeat-7.13.0/_search

9、kibana中点击Dashboard,进入仪表盘,输入postgresql,选择Database overview看板点击进入
在这里插入图片描述
10、同时我们在数据库中进行一些增删改查操作,制造一些数据。可以选择查询哪个数据库,不选的话默认全部

这里看到Query LatencyTop Queries图表是无数据的,这是因为没有开启statement指标集,我们将在最后讲解该指标集
在这里插入图片描述

如果查询没有数据的话,检查下右上角的查询时间范围,以及postgresql服务器的的时间是否正确。

4. 使用statement指标集

statement指标集我们在上述的演示中并没有开启,这是因为该指标集需要在postgresql服务器中单独配置pg_stats_statement模块。并且开启该模块会额外占用我们的服务器内存,所以Use it when really need

statement 官方文档

1、在postgresql配置文件中添加

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

2、重启postgresql(我这里是homebrew安装的,所以采用该指令重启)

brew services restart postgresql

3、登陆postgresql,执行指令

CREATE EXTENSION pg_stat_statements;

4、metricbeat pg配置文件中添加statement坐标集

- module: postgresql
  metricsets:
    - database
    - bgwriter
    - activity
    - statement
  period: 10s
  hosts: ["postgres://localhost:5432?sslmode=disable"]
  username: postgres
  password: postgres

5、重启metricbeat,查看看板,数据发生了变化
在这里插入图片描述

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
3月前
|
存储 Prometheus 监控
Prometheus vs. ELK Stack:容器监控与日志管理工具的较量
随着容器化技术的广泛应用,容器监控与日志管理成为了关键任务。本文将对两种常用工具进行比较与选择,分别是Prometheus和ELK Stack。Prometheus是一款开源的监控系统,专注于时序数据的收集和告警。而ELK Stack则是一套完整的日志管理解决方案,由Elasticsearch、Logstash和Kibana三个组件组成。通过比较它们的特点、优势和适用场景,读者可以更好地了解如何选择适合自己需求的工具。
|
3月前
|
Go 数据处理 Docker
elk stack部署自动化日志收集分析平台
elk stack部署自动化日志收集分析平台
142 0
|
3月前
|
存储 关系型数据库 数据库
postgresql|数据库|提升查询性能的物化视图解析
postgresql|数据库|提升查询性能的物化视图解析
386 0
|
9月前
|
存储 JSON 监控
日志记录和分析:ELK堆栈在内部局域网监控软件中的应用
在现代信息技术领域,监控和分析内部局域网的性能和运行状况对于确保系统的可靠性和高效性至关重要。为了实现这一目标,开发了一种基于ELK堆栈的解决方案,它利用强大的日志记录和分析工具,帮助监控人员实时追踪和解决问题。本文将介绍ELK堆栈的应用,以及如何自动提交监控到的数据到指定网站。
201 1
|
10月前
|
监控 关系型数据库 数据库
《PostgreSQL性能大提升:实用优化技巧》
《PostgreSQL性能大提升:实用优化技巧》
567 0
|
10月前
|
存储 NoSQL Redis
容器部署日志分析平台ELK7.10.1(Elasisearch+Filebeat+Redis+Logstash+Kibana)
容器部署日志分析平台ELK7.10.1(Elasisearch+Filebeat+Redis+Logstash+Kibana)
417 0
|
15天前
|
缓存 关系型数据库 数据库
PostgreSQL 查询性能
【8月更文挑战第5天】PostgreSQL 查询性能
32 8
|
15天前
|
关系型数据库 Java 数据库
PostgreSQL性能
【8月更文挑战第5天】PostgreSQL性能
34 7
|
16天前
|
监控 关系型数据库 数据库
如何优化PostgreSQL的性能?
【8月更文挑战第4天】如何优化PostgreSQL的性能?
19 7
|
1月前
|
SQL 监控 关系型数据库
实时计算 Flink版操作报错合集之在设置监控PostgreSQL数据库时,将wal_level设置为logical,出现一些表更新和删除操作报错,怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。