云原生架构下日志服务数据预处理

镇三山
• 阅读 2380

简介:本篇实践将以某家国际教育机构为例,为大家详细介绍云原生架构下日志服务数据预处理以及对应的解决方案和最佳实践操作手册,方便用户快速对号入座,解决云原生架构下的常见日志难题。

直达最佳实践:【https://bp.aliyun.com/detail/207
观看视频:【https://yqh.aliyun.com/live/detail/23950
阿里云最佳实践目前已覆盖23类常用场景,有200多篇最佳实践,这其中涉及110款以上阿里云产品的最佳使用场景。目前,最佳实践已成功帮助大量客户实现自助上云。

分享人

  • 解决方案架构师-七凌
  • 日志服务产品经理-谷奈

本篇实践将从3个部分为大家介绍云原生架构下日志服务数据预处理,希望可以让大家对其有更深入的了解,并可以将其应用到项目中,达到降本提效的目的。本文主要内容分为以下三个方面:

  • 最佳实践方案讲解
  • 核心产品能力介绍
  • 基于场景的demo演示

一、最佳实践方案讲解

1. 云原生下的数据加工

云原生的定义各种各样,有来自CNCF社区的“微服务+容器+持续交付+DevOps”,也有来自不同云厂商的说法“生于云,长于云”。比如我们常常听到的云原生数据库、云原生大数据、云原生容器、云原生中间件、云原生安全等等概念,这都是在云上可以获取到的服务化云原生产品,是传统线下没有的服务,能够在线上获取极致的弹性。这里,我们提到的数据加工,它是阿里云提供的云原生日志服务SLS所具备的能力之一。我相信大家都非常熟悉日志服务的数据存储、数据查询能力,而对于它提供的数据加工和告警通知,可能不太了解。SLS内置的数据加工能力,能够将各类日志处理为结构化数据,具备全托管、实时、高吞吐的特点。它面向日志分析领域,提供非常丰富的算子、支持开箱即用的场景化UDF(比如Syslog、非标准json、accessLog解析等等)。同时与阿里云的大数据产品(OSS、MC、EMR、ADB等)以及开源生态(Flink、Spark)进行了深度集成,降低了数据分析的门槛。
云原生架构下日志服务数据预处理

2. 云原生数据加工的典型能力

下图所示为数据加工服务的几个典型能力,包括数据复制、过滤、转换,富化、补漏、分裂等。整体优势简单来说可以归纳为以下四点:

  • 开箱即用,免运维
  • 开放灵活,支持200+DSL
  • 稳定可靠
  • 能做到秒级延迟

云原生架构下日志服务数据预处理

3. 云原生数据加工的典型应用场景

以向全球提供分布式在线教育的某家国际教育机构为例,为大家介绍几个典型应用场景,供大家参考和借鉴。

  • 典型场景一:跨地域、跨账号的数据汇集
    假设该在线教育的主要用户集中在美国硅谷和中国上海两地,为了更好的为用户提供个性化服务,系统会通过多端(Android/IOS/Web)进行收集用户行为日志和设备元数据(端设备的信息、软件版本)。出于网络就近原则和稳定性考虑,美国硅谷的客户端日志都上传到美国硅谷region,中国上海的客户端日志都都上传到中国上海region,为了方面客服中心或者运维团队进行集中查询和管理,会将两地的数据通过数据加工汇聚到一起。正如下图上层所示,将跨账号跨区域的服务日志和操作日志通过数据加工汇聚到了一起。值得注意的是,跨地域数据汇集,默认会走公网,稳定性无法保证,所以推荐采用DCDN的方式进行全球加速。
    云原生架构下日志服务数据预处理
  • 典型场景二:数据统一的采集,按业务分发,进行数据的归类
    该客户的业务系统部署在阿里云容器服务ACK上,系统日志通过DaemonSet方式采集到Logstore。便于后续业务分析的目的,需要通过日志服务SLS将不同Service的日志分发到不同的Logstore,然后各个团队再进行进一步分析。比如,运维团队更关心5XX服务端报错;业务团队更在乎2XX正常的业务日志。正如下图下层所示:

    云原生架构下日志服务数据预处理

  • 典型场景三:数据内容富化(join维表)
    日常工作中,客服中心的工作人员尝尝需要通过检索账号ID的方式,快速获取该用户相关的移动端操作记录,但是移动端的数据和用户账号信息分别采集与存放的,无法直接进行关联。所以系统层面上,需要将多端日志与维表(例如用户信息Mysql表)进行字段join,为原日志信息添加更多维度信息供分析或者问题解答。

    云原生架构下日志服务数据预处理

  • 典型场景四:数据投递/归档、入湖分析以及监控告警
    运营部门希望对于用户行为数据进行进一步的离线分析,需要将数据归档到OSS便于后续使用,比如通过DLA进行进一步的数据挖掘。但是由于不同客户端日志格式不统一,需要使用日志服务进行数据规整后再做投递,便于后续分析。比如,将移动端上报的json格式进行展开,做格式化的规整,然后将规整后的数据投递到OSS后,再使用DLA进行分析。并且在这个过程中,我们可以对加工任务的延迟情况进行监控,当加工任务延迟时间超过所设置的阈值后,触发告警,执行相关行动策略。比如根据延迟时间的长短,设置不同的告警严重程度,并设置对应的告警形式: 严重为短信告警,中等为邮箱告警。通知到相应的运维人员,并且通过设置降噪策略,可以对类似告警进行归并,避免告警风暴的影响。其实下面这幅架构图也是这篇最佳实践的架构示意图,里面包括了方案涉及到的核心组件,后续将通过云速搭CADT进行一键部署,完成基础资源的创建。
    云原生架构下日志服务数据预处理

4. 使用云原生数据加工方案的优势

通过这篇最佳实践,我们可以知道如何进行数据规整、如何进行数据富化、数据分发/汇聚、如何做监控告警的配置。

云原生架构下日志服务数据预处理

二、核心产品能力介绍

什么是SLS?

SLS这个产品用一句话描述即SLS是云原生观测分析平台,为LOG/METRIC/TRACE等数据提供大规模、低成本、实时平台化服务。能够一站式提供数据采集、加工、分析、告警可视化与投递功能,能够全面提升研发、运维、运营和安全等场景的数字化分析能力。通俗一点说的话,相关日志数据包括log日志、trace日志、metric日志都可以通过SLS采集之后,在SLS里面经过加工分析等处理,最终应用到客户的业务场景里,主要场景包括:业务监控、异常诊断、网络分析、应用监控、增长黑客等。
云原生架构下日志服务数据预处理
SLS是从阿里云飞天监控系统中孵化的产品,是一款阿里自研,在阿里内外部得到广泛使用的《日志+监控数据平台》,同时经历了集团多年双十一和外部客户新春红包的考验,是国内公有云TOP1的日志分析产品。
云原生架构下日志服务数据预处理

SLS的应用场景

SLS作为一款日志产品,有着开放的产品理念和丰富的生态交叉。对目前用户数据比较大的云产品业务日志,以及审计日志,均可接入到SLS。同时SLS与大数据产品的投递和消费的功能,有很强的的解决方案组合能力。那么接下来我们就细看下SLS主要的应用场景,作为日志平台、业务监控、数据管道是目前使用最多的三个场景。
云原生架构下日志服务数据预处理

  • 日志平台

    日志平台比较好理解,只要是有一定规模的用户,就肯定会有业务运维和系统运维的需求,也就衍生了日志平台的需求。在SLS产品化之前,大部分用户都是使用开源的服务进行组合,比较主流的比如ELK的使用,而日志服务相比于这些自建的平台,在免运维、低成本、功能丰富等方面的优势是自建系统所无法比拟的。

  • 业务监控
    业务监控和智能运维其实也是运维领域通用场景的需求,SLS拥有秒级处理十亿级数据的分析能力,同时可以满足各种异构数据提取、聚合、可视化需求。同时另外结合我们的告警以及AI异常检测能力,可以帮助客户快速搭建起来一套完善的监控告警系统,最后结合日志服务提供的异常巡检、时序预测、根因分析等能力,能够帮助用户提高问题发现以及分析定位效率。
  • 数据管道
    由于SLS具有极强的统一数据采集的能力,目前已经支持40+种数据源的接入,同时数据加工能力通过灵活的ETL能够对数据进行清洗富化,最终通过投递消费的功能,与主流流式及离线平台大数据分析平台对接。因此作为数据管道在大数据等解决方案中使用也是主要的场景之一。

SLS的主要功能

功能包括数据采集、数据加工、查询分析、业务监控、日志审计、投递与消费。

云原生架构下日志服务数据预处理

  • 日志采集

    日志采集是SLS的一个核心功能,是帮助客户进行日志存储分析等的前提,在日志采集这一方面,SLS基本上是往极致的思路上在做。无论是LOG/TRACE/METRIC的日志,用户的服务器与应用日志,移动端的数据日志,IoT设备的日志,阿里云的各个云产品日志,还是其他场景,只要是满足标准协议的传输的日志,都可以通过SLS的采集平台进行统一采集。

    云原生架构下日志服务数据预处理

  • 数据加工

    完成了数据采集的工作之后,多样化的数据在投入使用之前,往往需要进行格式规整的工作,这时候就需要使用到数据加工的功能。SLS提供的数据加工是一款开箱即用的功能,支持数据过滤、转化、富化、分裂等处理。为了实现这样的能力,数据加工提供了200+的内置函数,400+的Grok,丰富的文本处理,搜索算子,可以通过简单的代码自由编排组合操作,实现所需要的的数据加工能力。

    云原生架构下日志服务数据预处理
    同时数据加工具备的秒级处理性能,大吞吐性能和水平拓展能力可以保障客户任务的可靠执行。

  • 查询分析

    通过数据加工,客户可以将原始的日志加工成结构化的数据,接下去就可以做查询和分析。SLS的查询分析提供了关键词、标准的SQL92\ALOPS函数等多种多样的查询方式,支持面向文本+结构化数据实时查询分析,异常巡检与智能分析,同时SLS拥有极致的查询性能,十亿数据能够在秒级进行返回。
    云原生架构下日志服务数据预处理

  • 业务监控

    通过这些分析后得到的查询的数据,就可以使用SLS的可视化能力,形成报表方便二次查询。一次SQL长期使用,所见即所得。同时SLS支持下钻分析和上卷分析,客户可以根据实际的业务需求设置对应的报表组合。另外SLS支持灵活的告警策略,支持多数据源的联合告警监控,也支持通过归并、抑制、静默等智能设置有效降低告警风暴,以便于能够将真正有效有价值的数据通知到用户,方便用户随时随地掌握业务动向。
    云原生架构下日志服务数据预处理

  • 日志审计

    日志审计主要应对客户的安全需求,能够帮助客户快速接入审计数据,以符合等保/网安法/GDPR协议,同时与第三方SOC完整对接,可以对数据进行二次使用。目前日志审计已覆盖所有日志相关产品日志自动化采集,可以实现跨多主账号、自动实时发现新资源并实时采集。我们在日志审计中内置了近百个CIS、最佳实践等场景监控规则,可以一键开启,及时发现不合规的行为。

    云原生架构下日志服务数据预处理

  • 投递功能
    投递功能是在当客户有数据归档或者复杂数据分析需求时,可以从日志服务投递(和消费对应的日志)到第三方服务。目前已经对接了主流流计算引擎和数据仓库存储。消费功能是指用户的ECS\容器、移动端、开源软件、JS等数据,通过采集接入到SLS后,可以通过SDK/API来自定义消费组,从SLS实时消费数据。

    云原生架构下日志服务数据预处理

三、基于场景的demo演示

本最佳实践采用云速搭CADT对需要使用的资源进行部署,它是一款为上云应用提供自助式云架构管理的产品,显著地降低应用云上管理的难度和时间成本。本产品提供大量预制的应用架构模板,同时也支持自助拖拽方式定义应用云上架构,支持大量阿里云服务的配置和管理,可以方便地对云上架构方案的成本、部署、运维、回收进行全生命周期的管理。下面简单演示下架构部署环境的搭建过程。

  1. 登录云速搭CADT控制台。
  2. 单击新建 > 官方模板库新建

    云原生架构下日志服务数据预处理

  3. 在搜索框中搜索“云原生架构下日志服务数据预处理”,找到目标模板,单击基于方案新建

    云原生架构下日志服务数据预处理
    系统基于模板生成应用架构图:

    云原生架构下日志服务数据预处理

  4. 双击OSS,需要重命名,保证全局唯一,其他资源配置根据实际情况修改。
    云原生架构下日志服务数据预处理
  5. 完成配置后,单击右上角的保存,设置应用名称,并单击确认

    云原生架构下日志服务数据预处理

  6. 接着单击部署应用

    云原生架构下日志服务数据预处理

  7. 按界面提示,依次完成资源验证、订单确认和下单创建等过程。等待资源部署成功后,可以单击资源名称列下的各个资源查看。
    云原生架构下日志服务数据预处理

关于完整的搭建演示过程,大家可以通过下面这个链接或访问二维码来访问本篇最佳实践文档内容,里面包含最佳实践场景和完整的搭建过程。

直达最佳实践 》》https://bp.aliyun.com/detail/207

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Peter20 Peter20
4年前
mysql中like用法
like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这