PostgreSQL 导入 SLS,从业务到监控数据

news2025/2/6 17:39:36

日志服务SLS数据导入简介

日志服务SLS是云原生观测和分析平台,为Log、Metric、Trace等数据提供大规模、低成本、实时的平台化服务。日志服务是提供一站式数据采集、加工、查询与分析、可视化、告警、消费与投递等功能。全面提升在研发、运维、运营、安全等场景的数字化能力。SLS在数据导入方面提供了丰富的数据源,如OSS导入、MaxCompute、MySQL、SQL Server等数据源。

PostgreSQL是一款免费的对象-关系数据服务器,在互联网和物联网领域都有广泛的应用场景,PostgreSQL也自称是最强大的开源关系型数据库系统,SLS也在近期上线了PostgreSQL数据源导入功能。本文将介绍如何把PostgreSQL的数据导入SLS,并且从可观测性的角度来介绍下非业务类数据导入的场景。

PostgreSQL业务数据导入

这里以电商系统的订单表为例,如下是订单表orders的结构,存储了用户ID、价格、优惠券之类的字段,接下来可以通过简单的配置将订单数据导入到SLS。

CREATE TABLE IF NOT EXISTS orders (
  id serial primary key,
  user_id BIGINT NOT NULL,
  sku_id BIGINT,
  sku_category VARCHAR(100),
  sku_count INT,
  sku_price INT,
  total_price INT,
  supplier_type VARCHAR(100),
  pay_id VARCHAR(50),
  pay_channel VARCHAR(20),
  pay_amount INT,
  coupon_id INT DEFAULT 0,
  buy_channel VARCHAR(50) DEFAULT '',
  state INT NOT NULL,
  client_ip VARCHAR(15) DEFAULT '',
  create_time timestamp(6) DEFAULT current_timestamp,
  update_time timestamp(6) DEFAULT current_timestamp 
);

数据导入

根据已经创建好的Project、Logstore,展开Logstore的配置,选择数据导入,选择 + 按钮

PostgreSQL数据导入

快速数据导入页面,选择PostgreSQL - 数据导入

数据源配置

在数据源设置页面,填写配置名称、数据库连接地址等,如果使用VPC地址,需要勾选VPC地址,输入数据库所在的VPC实例ID。

下述示例中查询语句使用了SELECT * FROM orders WHERE id > $1 ORDER BY id,其中$1表示占位符,用来做CheckPoint使用。

高级配置

高级配置中,选择CheckPoint字段idCheckPoint字段初始值0,在初始执行SQL的过程中,第一次会将查询语句中的$1换成0,即:

SELECT * FROM orders WHERE id > 0 ORDER BY id

每次导入最大行数0,表示不限制拉取行数,在第一次执行后会将最后一条数据的id替换掉$1,这样就可以做到下次执行时和上次的数据不重复,两次执行的时间间隔即导入间隔

导入间隔配置

导入间隔,可以选择特定的时间间隔或者自定义时间间隔。

导入完成

在日志服务的Logstore查询控制台,可以看到导入后的数据,根据数据库字段配置索引,对数据进行查询分析,做分析订单趋势、订单分类、下单客户区域分布等分析,在SLS控制台可以创建仪表盘,对于分析一目了然,同时对于异常数据还可以支持告警等配置。

配置索引

查询数据

仪表盘展示

关于仪表盘的配置和查询分析,在上一篇文章《MySQL到SLS:一站式查询分析可视化场景介绍》有过比较详细的介绍,这里不再赘述。可以看下仪表盘的示例。

除了业务数据,还可以导哪些数据?

除了业务数据存储在PostgreSQL外,我们往往也需要关注PostgreSQL服务器本身的运行状态,对服务本身的监控,Prometheus社区也提供了postgres_exporter,其原理也是通过拉取PostgreSQL的系统表或者视图来进行数据的观测,其主要关注在指标层面,PostgreSQL还有一些元数据表,对于数据治理也是不可缺少的部分,接下来来看下哪些指标或者元数据可以导入到SLS来进行分析。

PostgreSQL可观测性

和MySQL类似,PostgreSQL也包含各类系统表,系统表中记录这数据库的一些数据库元信息和诊断信息,通过这些表或视图可以监控系统的状态,查询执行计划的状态和服务器管理状态,从某种程度上来说,这些表的信息可以反映PostgreSQL的可观测性。

在PostgreSQL的Monitoring Database Activity,对如何监控PostgreSQL进行了介绍,主要包括

  • 标准的Unix工具
  • 统计数据收集器
  • 查看锁
  • 进度报告
  • 动态追踪

其中统计数据收集器是收集和报告服务行为的子系统,可以对表和索引的访问次数进行计数,也可以追踪每张表的行数,和表的垃圾回收信息,统计用户自定义函数的调用次数和调用时间。同样支持PostgreSQL上正在执行的动态信息,包括服务器中正在执行的确切命令等。

开启统计数据采集,可以有postgresql.conf中的四个参数来控制:

  • track_activities:用来跟踪每个会话执行的命令和开始执行的时间。
  • track_counts:统计表和索引的访问次数。
  • track_functions:统计自定义函数调用。
  • track_io_timing:统计块IO的读写次数。

除了以上的参数外,还有其他的参数可以用来开启统计监控。

统计视图(Statistics Views)

PostgreSQL内置了一些统计视图可供直接使用,主要包括两部分:

  • 动态统计视图(Dynamic Statistics Views)
    • pg_stat_activity
    • pg_stat_replication
    • pg_stat_wal_receiver
    • pg_stat_subscription
    • pg_stat_ssl
    • ....
  • 已收集统计信息视图(Collected Statistics Views)
    • pg_stat_archiver
    • pg_stat_bgwriter
    • pg_stat_wal
    • pg_stat_database
    • pg_stat_database_conflicts
    • pg_stat_all_tables
    • ....

这些统计视图对于数据库的运行状态诊断有很重要的作用,比如慢SQL查询诊断,活跃的客户端查看,举个例子,我们通过SQL语句来查询执行时间长的语句:

select
       current_timestamp - query_start as runtime,
       datname,
       usename,
       query
    from pg_stat_activity
    where query <> '' 
    order by runtime desc

结果如下,可以看到某些执行时间较长的语句。

runtime        | datname  |  usename   |                                            query                                            
----------------------+----------+------------+---------------------------------------------------------------------------------------------
 1 day 13:27:48.46965 |          | replicator | START_REPLICATION 0/3000000 TIMELINE 1
 00:00:56.034221      | postgres | aurora     | select slot_name client, pg_walfile_name(restart_lsn) wal, active from pg_replication_slots
(2 rows)

通过将这些结果导入到日志服务,可以进行分析统计、仪表盘配置和告警。

系统表

Postgresql系统表扮演着数据字典的角色,保存了数据库的元数据,包含所有对象和属性的描述信息,对象之间的关系信息。常用的系统表包括:

  • pg_namespace:存储命名空间,属性包括nspname、nspowner、nspacl等。
  • pg_tablespace:存储表空间信息,属性包括spcname、spcowner、spclocation、spcacl等。
  • pg_database:存储数据库信息,属性包括datname、datdba、encoding、datcollate等。
  • pg_class:存储数据库对象信息,包括索引、序列、视图等。
  • pg_type:存储数据类型信息。
  • pg_index:存储索引的具体信息。

以上数据系统表记录的数据库元信息,对于数据治理中有很重要的作用,将这些数据导出到数据分析平台就可以进行分析和持续的观测,比如需要观测数据字段的变更,举个例子:

SELECT relname,attname,typname,attnum FROM pg_class c,pg_attribute a,pg_type t 
WHERE c.relname = 'orders' AND c.oid = attrelid AND atttypid = t.oid AND attnum > 0;

我们可以通过pg_class、pg_attribute、pg_type三个表的连接,获取数据库表的字段信息,这里示例中以orders表为例,可以得到结果如下:

relname |    attname    |  typname  | attnum 
---------+---------------+-----------+--------
 orders  | id            | int4      |      1
 orders  | user_id       | int8      |      2
 orders  | sku_id        | int8      |      3
 orders  | sku_category  | varchar   |      4
 orders  | sku_count     | int4      |      5
 orders  | sku_price     | int4      |      6
 orders  | total_price   | int4      |      7
 orders  | supplier_type | varchar   |      8
 orders  | pay_id        | varchar   |      9
 orders  | pay_channel   | varchar   |     10
 orders  | pay_amount    | int4      |     11
 orders  | coupon_id     | int4      |     12
 orders  | buy_channel   | varchar   |     13
 orders  | state         | int4      |     14
 orders  | client_ip     | varchar   |     15
 orders  | create_time   | timestamp |     16
 orders  | update_time   | timestamp |     17
(17 rows)

通过将这个查询的数据导入到SLS,并设置定时每5分钟导入一次,这样就可以看到整个时间线上表结构的变更,比如字段是否增加或减少

导入SLS结果查看

通过将数据导入SLS可以对元数据进行统计分析,按照时间定时导入,可以分析元数据随时间的变化趋势。对于数据库审计和数据治理都有很多场景。

扩展(EXTENSION)

PostgreSQL还有一个重要特性,支持扩展插件,通过扩展插件也可以进行一些数据的收集和统计。例如比较有名的插件pg_stat_statements,通过这个插件,可以统计数据库的资源开销和分析TOP SQL,阿里云RDS也提供了类似的案例。

首先创建pg_stat_statements插件:CREATE EXTENSION pg_stat_statements;通过pt_stat_statements视图,可以查询数据库资源开销的统计信息,主要包括信息如下:

  • SQL 的调用次数,总耗时,最快执行时间,最慢执行时间,平均执行时间,执行时间的方差(看出抖动),总共扫描、返回或处理了多少行。
  • shared buffer 的使用情况:命中、未命中、产生脏块、驱逐脏块。
  • local buffer 的使用情况:命中、未命中、产生脏块、驱逐脏块。
  • temp buffer 的使用情况:读了多少脏块、驱逐脏块。
  • 数据块的读写时间。

例如查询耗IO的Top 5的SQL:

SELECT userid::regrole, dbid, query FROM pg_stat_statements ORDER BY (blk_read_time+blk_write_time)/calls DESC LIMIT 5;

最耗时的TOP 5 SQL

SELECT userid::regrole, dbid, query FROM pg_stat_statements ORDER BY mean_time DESC LIMIT 5;

类似的还有查询响应时间抖动、共享内存消耗、临时空间消耗等指标的SQL,通过pg_stat_statements将指标信息导出,就可以对数据进行分析。

总结

本文首先介绍了PostgreSQL的数据导入功能,以电商系统中的订单表为例介绍了如何将PostgreSQL的数据导入SLS,同时介绍了如何使用SLS进行查询分析和仪表盘展示等。第二部分主要介绍了PostgreSQL的可观测性数据的导入场景,主要通过PostgreSQL的统计视图、系统表和扩展进行数据的导入来完成。

SLS的PostgreSQL导入作为一个工具,对于导入的数据场景没有偏见,业务数据和性能数据都可以导入,在使用的过程中可以挖掘出更多的场景。

参考

  • 日志服务(SLS):https://www.aliyun.com/product/sls
  • 日志服务数据导入:https://help.aliyun.com/document_detail/147819.html
  • 导入PostgreSQL数据:https://help.aliyun.com/document_detail/437710.html
  • Monitoring Database Activity:https://www.postgresql.org/docs/current/monitoring.html
  • postgres_exporter:https://github.com/prometheus-community/postgres_exporter
  • MySQL到SLS:一站式查询分析可视化场景介绍:https://developer.aliyun.com/article/883962
  • 查找最耗费资源的 SQL(Top SQL):https://help.aliyun.com/document_detail/52953.html

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/102794.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

web常见的攻击方式有哪些,以及如何进行防御?

一、是什么 Web攻击&#xff08;WebAttack&#xff09;是针对用户上网行为或网站服务器等设备进行攻击的行为 如植入恶意代码&#xff0c;修改网站权限&#xff0c;获取网站用户隐私信息等等 Web应用程序的安全性是任何基于Web业务的重要组成部分 确保Web应用程序安全十分重…

python中的模块与包详解

目录 一.什么是模块 二.模块的导入 1.import 模块名 2.from 模块名 import 功能名 3.from 模块名 import * 4.as定义别名 模块导入总结 三.自定义模块 制作自定义模块 用pycharm演示 测试模块_ _main_ _变量的作用 演示 ‘_ _all_ _’变量 自定义模块小结 四.python中的包…

Flink集成Seatunnel

安装包下载 相关包的下载地址 Apache SeaTunnel | Apache SeaTunnel Apache Flink: Downloads 解压&#xff08;注意下载scala_2.11&#xff09; tar -zxvf flink-1.13.6-bin-scala_2.11.tgz -C ../module/ Yarn模式部署 环境准备 sudo vi /etc/profile.d/my_env.sh 修…

中国清洁清洗行业等级资质

中国商业企业管理协会清洁服务商专业委员会——“中清委”&#xff08;以下简称评定单位&#xff09;承担组织等级清洁清洗服务机构评定工作。 申请资料 (1)专业清洁清洗服务机构等级评定申请表&#xff08;附录B&#xff09;&#xff1b; (2)法人代表资格证明&#xff1…

小林Coding阅读笔记:操作系统篇之硬件结构,伪共享问题及CPU的任务执行

前言 参考/导流&#xff1a; 小林coding - 2.5 CPU 是如何执行任务的&#xff1f;学习意义 底层基础知识&#xff0c;了解CPU执行过程&#xff0c;让上层编码有效并发问题处理、思考理解调度策略、思想借鉴分析 相关说明 该篇博文是个人阅读的重要梳理&#xff0c;仅做简单参…

Transformer实现以及Pytorch源码解读(一)-数据输入篇

目标 以词性标注任务为例子&#xff0c;实现Transformer&#xff0c;并分析实现Pytorch的源码解读。 数据准备 所选的数据为nltk数据工具中的treebank数据集。treebank数据集的样子如以下两幅图所示&#xff1a; 该数据集中解释变量为若干句完整的句子&#xff1a; 被解释变…

Docker-DockerFile制定镜像

什么是DockerFile&#xff1f; DockerFile是一个用来编写Docker镜像的文本文件&#xff0c;文本内容包含了一条条构建镜像所需要的指令和说明。DockerFile就想要一个脚本文件一样。把我们想要执行的操作放到文本文件里&#xff0c;一键执行。这样我们就可以复用这个DockerFile…

读论文:Learning to Compare: Relation Network for Few-Shot Learning

Abstract 我们提出了一个概念上简单、灵活且通用的少镜头学习框架&#xff0c;其中分类器必须学习识别每个只给出少量示例的新类。我们的方法称为关系网络(RN)&#xff0c;从头到尾进行训练。在元学习过程中&#xff0c;它学习学习一个深度距离度量来比较插曲中的少量图像&…

RNA-seq 详细教程:时间点分析(14)

学习内容 了解如何使用 DESeq2 进行时间的分析LRT 使用 LRT 进行 Time course 分析尽管基因表达的静态测量很受欢迎&#xff0c;但生物过程的时程捕获对于反映其动态性质至关重要&#xff0c;特别是当模式复杂且不仅仅是上升或下降时。在处理此类数据时&#xff0c;似然比检验 …

doris入门后遇到的几个问题总结

文章目录1. Access denied for user anonymnull (using password: NO)2. timeout when waiting for send fragments RPC. Wait(sec): 5, host: xxx(ip)3. Failed to initialize JNI: Failed to find the library libjvm.so.4. 从mysql库导出的json文件大于100M时报错5. csv格式…

OA办公系统:颠覆企业办公模式,激活组织潜能打造新模式

企业的生命力在于生存&#xff0c;而想要在竞争日益激烈的市场环境下生存&#xff0c;就必须不断革新自己的内部条件&#xff0c;否则将会在发展的洪流中被社会所淘汰。如今社会的发展正在信息化世界中进行&#xff0c;企业搭建信息化平台是一条必经之道&#xff0c;而OA办公自…

太爽了!看酷开系统帮你沉浸式带娃!

现如今&#xff0c;OTT大屏涉及的线上内容与娱乐方式与日俱增&#xff0c;不仅常规的电视节目、网剧影视能够随心选择&#xff0c;还发展出以大屏为载体的短视频、健身、云游戏等丰富内容。在人们的居家生活走向常态化的当下&#xff0c;更长的开机使用时间自然对电视操作系统的…

codeforces:C. Another Array Problem【分类讨论 + 找规律】

目录题目截图题目分析ac code总结题目截图 题目分析 做cf题目别老想着套算法模版 找规律才是正道&#xff0c;这就是所谓的「思维」 n 2很简单 n > 4: # 肯定有一个最大值&#xff0c;不妨设它的位置在第三个或以后的x# 前两个值经过两次操作&#xff0c;都变为0# 第0…

Vue.js 目录结构

当我们初始化一个项目后目录结构是这样的&#xff1a; 目录解析 目录/文件说明build项目构建(webpack)相关代码config配置目录&#xff0c;包括端口号等。我们初学可以使用默认的。node_modulesnpm 加载的项目依赖模块src这里是我们要开发的目录&#xff0c;基本上要做的事情都…

# 关于“table“中更新传参回填form

关于"table"中更新传参回填form 一、id查询数据库回填form 使用阶段&#xff1a;Javaweb/ssm/Springboot出现场景&#xff1a;jsp页面&#xff08;el表达式&#xff09;、thymeleaf页面&#xff08;thymeleaf表达式&#xff0c;具体使用方法请前往百度&#xff09;…

Python成求职中最吃香的三大编程语言之一

程序员培训公司 CodinGame 发布的一份开发人员调查报告显示&#xff0c;在开发人员招聘中&#xff0c;拥有 JavaScript、Java 和 Python 三大编程语言技能的开发人员最受招聘经理欢迎。 该报告基于对全球近 15,000 名开发人员和人力资源专业人员的调查。报告显示&#xff0c;每…

【IO流】JAVA基础篇(一)

文章目录一、字节流和字符流的区别1、字节和字符换算关系2、字节、位、二进制之间的关系3、在64位的操作系统中&#xff0c;一个字等于多少字节&#xff1f;4、字节流和字符流区别二、InputStream1、FileInputStream2、FilterInputStream3、ObjectInputStream4、PipedInputStre…

玩客云刷ARMBIAN当服务器过程记录

玩客云的可玩性 1、可以刷成电视游戏盒子的双系统。也可以刷成单独的电视盒子和游戏盒子。不过因为内存有限放不了多少游戏。还是建议用外置SD卡存储游戏比较合适。 2、刷成Armbian linux系统&#xff08;可以实现docker、可道云、甜糖等多种功能&#xff09; 3、最后它还可…

jsp+ssm计算机毕业设计风景区管理系统【附源码】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JSPSSM mybatis Maven等等组成&#xff0c;B/S模式 Mave…

生物安全防护实验室建设要点SICOLAB

生物安全实验室&#xff08;BiosafetyLaboratory&#xff09;&#xff0c;也称生物安全防护实验室&#xff08;BiosafetyContainmentforLaboratories&#xff09;&#xff0c;是通过防护屏障和管理措施&#xff0c;能够避免或控制被操作的有害生物因子危害&#xff0c;达到生物…