MySQL到SLS:一站式查询分析可视化场景介绍

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 本文主要介绍如果使用日志服务对MySQL的导入数据进行一站式查询分析可视化。

本文主要介绍如果使用日志服务对MySQL的导入数据进行一站式查询分析可视化。

目标读者

本文主要面向业务系统中的数据分析、运维人员。

背景介绍

在业务系统中,MySQL经常存储着核心的业务数据。例如电商系统中MySQL存储着核心的订单数据,MySQL主要关注数据的一致性,对于订单的分析运营并不擅长,将数据导入SLS,让SLS来做更擅长的分析、运维、可视化等功能。

方案架构

自建数据库

自建数据库主要包括在ECS上自建的数据库或者客户环境部署的数据库,对于ECS自建数据库,往往是部署在VPC网络下,日志服务提供了直接通过VPC链接ECS自建数据库的能力。对于云下环境部署的数据库,出于安全考虑一般不会提供公网的访问链接,可以使用SLS的Logtail插件进行MySQL数据的导入,对于Logtail采集MySQL数据可以参考《采集MySQL查询结果》,这了不在赘述。

RDS数据库

对于RDS数据库,日志服务数据接入提供了原生的网络连通能力,支持直接在VPC网络下的连通,不走公网流量,VPC方式是比较推荐的使用方式。image

方案优势

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

首先来看下SLS的一些功能简述。

高性能查询分析

日志服务提供了高性能数据的查询分析能力,支持秒级处理十亿级数据。

  • 支持灵活的分析语法,支持SQL92语法,与MySQL的数据查询无缝切换。使用参考分析概述

  • 对于数据量巨大的情况,日志服务提供了独享SQL,支持千亿级数据的高性能分析。适合分析性能要求高的场景、大规模业务数据分析场景、长周期数据分析场景。可以有效的弥补MySQL分析数据能力不足。

  • 提供了丰富的内置机器学习函数,可以通过机器学习函数调用机器学习算法,分析某一字段或若干字段在一段时间内的特征。

  • 支持Scheduled SQL,支持对海量数据的Roll Up。使用可以参考Scheduled SQL

报表可视化

日志服务提供了丰富的可视化功能,支持创建仪表盘、统计报表、和第三方可视化工具。通过SQL查询出的结果,选择合适的统计图表类型来展示分析结果。

仪表盘作为图表的聚合容器,支持自动刷新、报表订阅、设置告警等功能。可以作为企业大盘来使用。

支持丰富的图表类型,包括表格、线图、流图以及灵活的变量配置和自定义事件等功能。

image.png

数据异常告警

日志服务提供了一站式的告警监控、降噪、事务管理、通知分派的智能运维平台。商务运营人员(市场、客户运营、财务人员)可以通过告警功能对各种数据库或者指标(例如用户数、活跃度、广告点击率、商品转化率)等进行持续监控;识别指标的变化情况或者异常并相应,以提升运营效率、减少业务风险或财务风险。

image.png

方案实施

前提条件:导入MySQL数据到SLS

这里我们以MySQL订单数据导入为例,来对订单的数据进行到分析、可视化、告警,MySQL导入可以参考导入MySQL数据,这里假设订单表的结构如下:

这里主要是以演示为目的,所以不涉及非常复杂的情况,不包含购物车等,主要包含单品的购买、用户ID、金额、是否使用优惠券,订单时间等。接下来的分析也会以此为基础来介绍可以使用SLS的分析场景。文中涉及的订单表中数据为模拟数据。

CREATE TABLE IF NOT EXISTS orders (
        id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    user_id BIGINT NOT NULL COMMENT '用户ID',
    sku_id BIGINT COMMENT 'sku ID',
    sku_category VARCHAR(100) COMMENT 'sku 分类',
    sku_count INT COMMENT '商品数量',
    sku_price INT COMMENT '商品价格(分)',
    total_price INT COMMENT '商品总价(分)',
    supplier_type VARCHAR(100) COMMENT '供应商类型',
    pay_id VARCHAR(50) COMMENT '支付流水号',
    pay_channel VARCHAR(20) COMMENT '支付渠道',
    pay_amount INT COMMENT '支付总价(分)',
    coupon_id INT DEFAULT 0 COMMENT '优惠券ID,0表示不使用优惠券',
    buy_channel VARCHAR(50) DEFAULT '' COMMENT '购买渠道',
    state TINYINT(3) NOT NULL COMMENT '订单状态',
    client_ip VARCHAR(15) DEFAULT '' COMMENT '客户端IP',
    create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' 
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

在数据导入完成后,首先需要配置索引,配置索引可以使用SLS的自动生成索引功能,SLS的索引可以和数据库表中字段一一对应,SLS具有比MySQL更强的分析能力。

image.png

分析场景

场景1:查询分析可视化:电商销售分析

SLS支持完整的SQL92语法,接下来的场景会使用到SQL语法。

查询分类订单数,订单分类销售额

数据库中含有订单分类sku_category和销售额total_price等字段。在订单中可以分析哪些分类的销售单数比较高,哪些分类的销售额比较高,并且可以通过饼图可视化的方式展示出来。

分析语句为:

* | SELECT sku_category, COUNT(*) as cnt GROUP BY sku_category ORDER BY cnt desc limit 10000

查询后默认以表格形式展示,显示每个分类下的订单数分布。

image.png

接下来在右侧的通用配置->图表类型选择饼图类型,通过饼图可以直观的看出哪些分类的销售单数比较高。从图中可以看出coffee、drinks、women clothes的分类下单次数比较多,也就可以分析出这这些商品的分类比较受欢迎。image.png

类似的,也可以计算按照分类来统计销售额哪些分类占比比较高。

image.png

订单趋势

比如我们可以查看某类商品的下单趋势,使用线图来展示,通过图示可以看出在16点后有一个峰值,如果这段时间出现了定时抢购之类的运营活动,可以认为这个峰值是正常的。

image.png

同样也可以通过流图来展示,每个分类的商品的下单趋势

image.png

下单热点地域

也可以使用ip_to_city_geo的函数,获取下单客户端的IP,然后通过聚合函数可以获取每个城市下单的数量,通过日志服务的热力图来展示下单多的热区。热力图对电商的备货有很高的参考价值。

image.png

供应商分析

通过按照供应商类型聚合查看哪些供应商的下单比例比较高,同时也可以通过时间函数,来分析每个供应商的订单销售趋势。

image.png

还可以对两家供应商比如company1,company3进行订单数的趋势对比。

image.png

高频购买用户

同时也可以对购买用户进行统计,比如拉取下单前十的用户。

* | SELECT user_id, COUNT(*) as cnt GROUP BY user_id ORDER BY cnt DESC LIMIT 10

大盘订阅

上面的查询分析可视化的图表可以选择添加到仪表盘中,并且支持定时将仪表盘发送到邮件、微信、钉钉、飞书等,可以定时查看销售情况。

image.png image.png

场景2:智能机器学习算法

日志服务提供了功能丰富的时序分析算法,支持时序序列的预测、异常检测、变点检测、折点检测、多周期估计算法等。在订单中可以使用预测与异常检测函数来对下单的数量进行预测和异常检测;

示例SQL:

* | select ts_predicate_simple(stamp, value, 6) from (select to_unixtime(create_time) - to_unixtime(create_time) % 60 as stamp, count(*) as value from log GROUP BY stamp order by stamp)

然后选择时序图的可视化方式,可以清晰的看到算法计算出的有异常的点,可以通过对异常的点的分析,可以了解订单系统的健康状态。

image.png

场景3:数据加工

日志服务提供可托管、可扩展、高可用的数据加工服务。数据加工服务可用于数据的规整、富化、流转、脱敏和过滤。

在本例中,订单的SKU分类我们由于数据库中保存的是英文,展示出来并不直观,可以使用数据加工对字段进行富华,在富华的过程中对英文进行翻译,将sku_category翻译成sku_category_cn,然后保存加工结果到另外一个logstore。数据加工语法示例如下,主要用到了e_dict_map函数。

e_dict_map(
    {
        "fresh foods": "生鲜",
        "bedding": "床上用品",
        "women clothes": "女装",
        "coffee": "咖啡",
        "electrical": "电器",
        "home fabric": "家居",
        "drinks": "饮料",
        "men closthes": "男装",
        "tea": "茶",
        "*": "其他",
    },
    "sku_category",
    "sku_category_cn",
)

通过对加工后的logstore进行查询,可以看出中文分类下的订单分类。

image.png

场景4:异常数据告警

通过日志服务的告警功能,在订单数据中,可以认为每天同一时段的下单数基本保持一致,比如每天晚上6点左右和11点左右都是下单高峰期,如果某一时刻的数据环比昨日下降或者增长过多,则需要引起关注,可以将告警消息通知到运维或者运营人员。

下单总数环比昨日陡增陡降告警

比如查询15分钟的订单数据跟昨天15分的订单数据进行对比。

* | SELECT diff[1] as today, diff[2] as yesterday, ((diff[3] - 1) * 100) as ratio FROM (SELECT compare(cnt, 86400) AS diff FROM (SELECT COUNT(*) AS cnt FROM log))

使用单值图的同环比可以展示订单数的变化。

image.png

在查询框后面可以选择另存为告警->新版告警。

image.png

告警配置如下:

image.png

告警触发后钉钉通知的效果如下:

image.png

同样的利用同环比我们可以对钉钉在过去15分钟与上一个15分钟相比,有没有陡增或者陡降。同样也可以利用机器学习函数发现订单中数量或者金额是否发生显著变化。

参考

image.png
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
关系型数据库 MySQL OLAP
MySQL用户如何构建实时数仓
依托数据库生态,AnalyticDB for MySQL可以给用户提供分析场景下的标准解决方案,尤其是在大数据和性能要求较高的情况下AnalyticDB for MySQL的价值可以更好的体现。
5459 0
|
7月前
|
SQL 监控 关系型数据库
数据库高效“体检”必备!详解阿里云AnalyticDB MySQL一键诊断功能
AnalyticDB MySQL诊断监控平台则是一套全自研的、从零开始搭建的并紧密贴合分析型系统特征的诊断平台,包含数据的采集(诊断日志和监控数据)、数据缓存(削峰填谷)、清洗转换以及存储等,最终以多种服务形式提供实时的告警、监控、负载洞察、查询分析和诊断等功能。
|
8月前
|
SQL 关系型数据库 MySQL
边锋 x AnalyticDB MySQL:打造一站式游戏数据分析平台
杭州边锋网络技术有限公司是国内领先的休闲游戏开发商、运营商、发行商。20余年来,边锋网络一直是中国棋牌游戏的开拓者和变革者。  边锋网络市场覆盖20余个省份,注册用户过亿,月活跃用户上千万,是国家级重点软件企业(一类)。公司大数据分析系统"反应堆"目前支持着包括雀神广东麻将、边锋斗地主、蜀山四川麻将、功夫川麻等10余款休闲游戏产品;
|
10月前
|
存储 消息中间件 弹性计算
统一观测丨借助 Prometheus 监控 ClickHouse 数据库
统一观测丨借助 Prometheus 监控 ClickHouse 数据库
统一观测丨借助 Prometheus 监控 ClickHouse 数据库
|
12月前
|
SQL 弹性计算 Kubernetes
实践教程之采集PolarDB-X SQL日志到ElasticSearch
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。本期实验将指导您如何采集PolarDB-X SQL日志到ElasticSearch。
|
17天前
|
Prometheus 监控 Cloud Native
统一观测丨如何使用 Prometheus 监控 MySQL
简介: 数据库的瓶颈往往也是整个系统的瓶颈,其重要性不言而喻,所以对于 MySQL 的监控必不可少,及时发现 MySQL 运行中的异常,可以有效提高系统的可用性和用户体验。因此,观测 MySQL 关键指标,实时关注数据库的可用性与性能,成为运维团队的重要任务。
|
Prometheus 监控 Cloud Native
mysql的监控大屏
mysql的监控大屏
167 0
|
SQL 存储 监控
PostgreSQL导入SLS,从业务到监控数据
PostgreSQL是一款免费的对象-关系数据服务器,在互联网和物联网领域都有广泛的应用场景,PostgreSQL也自称是最强大的开源关系型数据库系统,SLS也在近期上线了PostgreSQL数据源导入功能。本文将介绍如何把PostgreSQL的数据导入SLS,并且从可观测性的角度来介绍下非业务类数据导入的场景。
254 0
PostgreSQL导入SLS,从业务到监控数据
|
SQL 弹性计算 关系型数据库
实验报告: PolarDB MySQL HTAP:实时数据分析加速
实验过程中忽略了在PolarDB mysql集群设置时开启行存/列存自动引流功能,发现开启这个功能后,如果会话use_imci_engine变量设置为off,单表分析的查询要慢不少。
498 0
实验报告: PolarDB MySQL HTAP:实时数据分析加速
|
SQL 机器学习/深度学习 运维
MySQL到SLS:一站式查询分析可视化场景介绍
日志服务SLS是云原生观测和分析平台,为Log、Metric、Trace等数据提供大规模、低成本、实时的平台化服务。日志服务是提供一站式数据采集、加工、查询与分析、可视化、告警、消费与投递等功能。全面提升在研发、运维、运营、安全等场景的数字化能力。SLS在数据导入方面提供了丰富的数据源,如OSS导入、MaxCompute、MySQL、SQL Server等数据源,本文主要以MySQL数据源为例,来介绍如何使用SLS的功能来对导入的MySQL数据进行分析。
703 0