Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >有赞百亿级日志系统架构设计

有赞百亿级日志系统架构设计

作者头像
数据和云
发布于 2019-07-05 09:46:25
发布于 2019-07-05 09:46:25
1.3K1
举报
文章被收录于专栏:数据和云数据和云

墨墨导读:本文跟大家分享有赞在当前日志系统的建设、演进以及优化的经历,这里先抛砖引玉,欢迎大家一起交流讨论。

一、概述


日志是记录系统中各种问题信息的关键,也是一种常见的海量数据。日志平台为集团所有业务系统提供日志采集、消费、分析、存储、索引和查询的一站式日志服务。主要为了解决日志分散不方便查看、日志搜索操作复杂且效率低、业务异常无法及时发现等等问题。

随着有赞业务的发展与增长,每天都会产生百亿级别的日志量(据统计,平均每秒产生 50 万条日志,峰值每秒可达 80 万条)。日志平台也随着业务的不断发展经历了多次改变和升级。本文跟大家分享有赞在当前日志系统的建设、演进以及优化的经历,这里先抛砖引玉,欢迎大家一起交流讨论。

二、原有日志系统


有赞从 16 年就开始构建适用于业务系统的统一日志平台,负责收集所有系统日志和业务日志,转化为流式数据,通过 flume 或者 logstash 上传到日志中心(kafka 集群),然后共 Track、StormSpark 及其它系统实时分析处理日志,并将日志持久化存储到 HDFS 供离线数据分析处理,或写入 ElasticSearch 提供数据查询。整体架构如图 2-1 所示。

图2-1 原有日志系统架构

随着接入的应用的越来越多,接入的日志量越来越大,逐渐出现一些问题和新的需求,主要在以下几个方面:

  1. 业务日志没有统一的规范,业务日志格式各式各样,新应用接入无疑大大的增加了日志的分析、检索成本。
  2. 多种数据日志数据采集方式,运维成本较高。
  3. 日志平台收集了大量用户日志信息,当时无法直接的看到某个时间段,哪些错误信息较多,增加定位问题的难度。
  4. 存储方面:
  • 采用了 Es 默认的管理策略,所有的 index 对应 3*2 shard(3 个 primary,3 个 replica),有部分 index 数量较大,对应单个 shard 对应的数据量就会很大,导致有 hot node,出现很多 bulk request rejected,同时磁盘 IO 集中在少数机器上;
  • 对于 bulk request rejected 的日志没有处理,导致业务日志丢失;
  • 日志默认保留 7 天,对于 ssd 作为存储介质,随着业务增长,存储成本过于高昂;
  • 另外 Elasticsearch 集群也没有做物理隔离,Es 集群 oom 的情况下,使得集群内全部索引都无法正常工作,不能为核心业务运行保驾护航。

三、现有系统演进


日志从产生到检索,主要经历以下几个阶段:采集->传输->缓冲->处理->存储->检索,详细架构如图 3-1 所示

图3-1 现有系统架构

3.1日志接入

日志接入目前分为两种方式,SDK 接入和调用 Http Web 服务接入

  • SDK 接入:日志系统提供了不同语言的 SDK,SDK 会自动将日志的内容按照统一的协议格式封装成最终的消息体,并最后最终通过 TCP 的方式发送到日志转发层(rsyslog-hub);
  • Http Web 服务接入:有些无法使用 SDk 接入日志的业务,可以通过 Http 请求直接发送到日志系统部署的 Web 服务,统一由 web protal 转发到日志缓冲层的 kafka 集群。

3.2日志采集

现在有 rsyslog-hub 和 web portal 做为日志传输系统,rsyslog 是一个快速处理收集系统日志的程序,提供了高性能、安全功能和模块化设计。之前系统演进过程中使用过直接在宿主机上部署 flume 的方式,由于 flume 本身是 java 开发的,会比较占用机器资源而统一升级为使用 rsyslog 服务。为了防止本地部署与 kafka 客户端连接数过多,本机上的 rsyslog 接收到数据后,不做过多的处理就直接将数据转发到 rsyslog-hub 集群,通过 LVS 做负载均衡,后端的 rsyslog-hub 会通过解析日志的内容,提取出需要发往后端的 kafka topic。

3.3日志缓冲

Kafka 是一个高性能、高可用、易扩展的分布式日志系统,可以将整个数据处理流程解耦,将 kafka 集群作为日志平台的缓冲层,可以为后面的分布式日志消费服务提供异步解耦、削峰填谷的能力,也同时具备了海量数据堆积、高吞吐读写的特性。

3.4日志切分

日志分析是重中之重,为了能够更加快速、简单、精确地处理数据。日志平台使用 spark streaming 流计算框架消费写入 kafka 的业务日志,Yarn 作为计算资源分配管理的容器,会跟不同业务的日志量级,分配不同的资源处理不同日志模型。

整个 spark 任务正式运行起来后,单个批次的任务会将拉取的到所有的日志分别异步的写入到 ES 集群。业务接入之前可以在管理台对不同的日志模型设置任意的过滤匹配的告警规则,spark 任务每个 excutor 会在本地内存里保存一份这样的规则,在规则设定的时间内,计数达到告警规则所配置的阈值后,通过指定的渠道给指定用户发送告警,以便及时发现问题。当流量突然增加,es 会有 bulk request rejected 的日志会重新写入 kakfa,等待补偿。

3.5日志存储

  • 原先所有的日志都会写到 SSD 盘的 ES 集群,logIndex 直接对应 ES 里面的索引结构,随着业务增长,为了解决 Es 磁盘使用率单机最高达到 70%~80% 的问题,现有系统采用 Hbase 存储原始日志数据和 ElasticSearch 索引内容相结合的方式,完成存储和索引;
  • Index 按天的维度创建,提前创建index会根据历史数据量,决定创建明日 index 对应的 shard 数量,也防止集中创建导致数据无法写入。现在日志系统只存近 7 天的业务日志,如果配置更久的保存时间的,会存到归档日志中;
  • 对于存储来说,Hbase、Es 都是分布式系统,可以做到线性扩展。

四、多租户


随着日志系统不断发展,全网日志的 QPS 越来越大,并且部分用户对日志的实时性、准确性、分词、查询等需求越来越多样。为了满足这部分用户的需求,日志系统支持多租户的的功能,根据用户的需求,分配到不同的租户中,以避免相互影响。

针对单个租户的架构如下:

  • SDK:可以根据需求定制,或者采用天网的 TrackAppender 或 SkynetClient;
  • Kafka 集群:可以共用,也可以使用指定 Kafka 集群;
  • Spark 集群:目前的 Spark 集群是在 yarn 集群上,资源是隔离的,一般情况下不需要特地做隔离;
  • 存储:包含 ES 和 Hbase,可以根据需要共用或单独部署 ES 和 Hbase。

五、现有问题和未来规划


目前,有赞日志系统作为集成在天网里的功能模块,提供简单易用的搜索方式,包括时间范围查询、字段过滤、NOT/AND/OR、模糊匹配等方式,并能对查询字段高亮显示,定位日志上下文,基本能满足大部分现有日志检索的场景,但是日志系统还存在很多不足的地方,主要有:

  1. 缺乏部分链路监控:日志从产生到可以检索,经过多级模块,现在采集,日志缓冲层还未串联,无法对丢失情况进行精准监控,并及时推送告警。
  2. 现在一个日志模型对应一个 kafka topic,topic 默认分配三个 partition,由于日志模型写入日志量上存在差异,导致有的 topic 负载很高,有的 topic 造成一定的资源浪费,且不便于资源动态伸缩。topic 数量过多,导致partition 数量过多,对 kafka 也造成了一定资源浪费,也会增加延迟和 Broker 宕机恢复时间。
  3. 目前 Elasticsearch 中文分词我们采用 ikmaxword,分词目标是中文,会将文本做最细粒度的拆分,但是日志大部分都是英文,分词效果并不是很好。

上述的不足之处也是我们以后努力改进的地方,除此之外,对于日志更深层次的价值挖掘也是我们探索的方向,从而为业务的正常运行保驾护航。

出处:有赞coder(ID:youzan_coder)

编辑:尹文敏

资源下载

关注公众号:数据和云(OraNews)回复关键字获取

2018DTCC , 数据库大会PPT

2018DTC,2018 DTC 大会 PPT

ENMOBK,《Oracle性能优化与诊断案例》

DBALIFE ,“DBA 的一天”海报

DBA04 ,DBA 手记4 电子书

122ARCH ,Oracle 12.2体系结构图

2018OOW ,Oracle OpenWorld 资料

产品推荐

云和恩墨Bethune Pro2 企业版,集监控、巡检、安全于一身,你的专属数据库实时监控和智能巡检平台,漂亮的不像实力派,你值得拥有!

云和恩墨zData一体机现已发布超融合版本和精简版,支持各种简化场景部署,零数据丢失备份一体机ZDBM也已发布,欢迎关注。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据和云 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
谢谢
谢谢
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
云原生下日志方案的架构设计
原文链接:https://yq.aliyun.com/articles/717779
业余草
2019/11/18
1.1K0
AI大模型独角兽 MiniMax 基于 Apache Doris 升级日志系统,PB 数据秒级查询响应
MiniMax 是领先的通用人工智能科技公司,自主研发了不同模态的通用大模型,其中包括拥有万亿参数的 MoE 文本大模型、语音大模型以及图像大模型。MiniMax 以“与用户共创智能”为愿景,通过对大模型持续迭代,MiniMax 在国内率先完成核心 MoE 算法技术路线的突破。2024 年 4 月,公司推出国内首个上线商用的 MoE 架构、包含万亿参数的大语言模型——“MiniMax-abab 6.5”,模型性能接近国际领先水平。
SelectDB技术团队
2024/08/23
1980
建设DevOps统一运维监控平台,先从日志监控说起
前言 随着Devops、云计算、微服务、容器等理念的逐步落地和大力发展,机器越来越多,应用越来越多,服务越来越微,应用运行基础环境越来多样化,容器、虚拟机、物理机不一而足。 面对动辄几百上千个虚拟机、容器,数十种要监控的对象,现有的监控系统还能否支撑的住?来自于容器、虚拟机、物理机的应用日志、系统服务日志如何采用同一套方案快速、完整的收集和检索?怎样的架构、技术方案才更适合如此庞大繁杂的监控需求呢?本文主要从以下几个方面来分享下笔者在日志监控方面的一些经验。 目录 一、DevOps浪潮下带来的监控挑
yuanyi928
2018/04/02
4.3K0
建设DevOps统一运维监控平台,先从日志监控说起
“淘宝京东”构建流式计算卖家日志系统架构的应用实践
摘要: 万变不离其宗 引言 本文给大家讲述的是我们如何去构建一个日志系统,用到了那些技术,为什么用这些技术,并且讲述了遇到的问题及优化的过程,希望给大家在实践中能够提供一些参考。 最近在维护一个有关于日志的项目,这个项目是负责收集、处理、存储、查询京东卖家相关操作的日志,我们这里就叫它“卖家日志”。在日常的开发过程中,可能我们对日志这个词并不陌生,例如我们常接触到的log4j、slf4j等等,这些日志工具通常被我们用来记录代码运行的情况,当我们的系统出了问题时,我们可以通过查看日志及时的定位问题的所在,从而
美的让人心动
2018/06/14
8850
几十条业务线日志系统如何收集处理?
  在互联网迅猛发展的今天 各大厂发挥十八般武艺的收集用户的各种信息,甚至包括点击的位置,我们也经常发现自己刚搜完一个东西,再打开网页时每个小广告都会出现与之相关联的商品或信息,在感叹智能的同时不惊想 什么时候泄露的行踪。   许多公司的业务平台每天都会产生大量的日志数据。收集业务日志数据,供离线和在线的分析系统使用,正是日志收集系统的要做的事情。   用户的数据除了这种后台默默的收集外,还有各种运行的日志数据和后台操作日志,因此每个业务可以算是一种类型的日志,那稍大点的公司就会有几十种日志类型要收集,而且
欢醉
2018/01/22
1.3K0
几十条业务线日志系统如何收集处理?
大数据采集架构
一般来说,当在Hadoop集群上,有足够数据处理的时候,通常会有很多生产数据的服务器。这些服务器的数量上百甚至成千上万。小的数据还可以直接从应用程序写入HDFS,但庞大数量的服务器试着将海量数据直接写入HDFS或者HBase集群,会因为多种原因导致重大问题。
全栈程序员站长
2022/07/05
8700
大数据采集架构
从 Elasticsearch 来看分布式系统架构设计
分布式系统类型多,涉及面非常广,不同类型的系统有不同的特点,批量计算和实时计算就差别非常大。这篇文章中,重点会讨论下分布式数据系统的设计,比如分布式存储系统,分布式搜索系统,分布式分析系统等。
大数据技术架构
2019/08/16
7540
从 Elasticsearch 来看分布式系统架构设计
干货 | 携程日志系统治理演进之路
Dongyu,资深云原生研发工程师,专注于日志与OLAP领域,主要负责携程日志平台和CHPaas平台的研发及其运维管理工作。
携程技术
2023/02/28
1.2K0
干货 | 携程日志系统治理演进之路
测试开发:一文教你从0到1搞懂大数据测试!
大数据是一个大的数据集合,通过传统的计算技术无法进行处理。这些数据集的测试需要使用各种工具、技术和框架进行处理。大数据涉及数据创建、存储、检索、分析,而且它在数量、多样性、速度方法都很出色,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
测试开发技术
2021/07/09
2.5K0
测试开发:一文教你从0到1搞懂大数据测试!
解密个推SDK如何完成百亿级覆盖量推送
精彩内容 作为推送行业领导者,截止目前个推SDK累计安装覆盖量达100亿(含海外),接入应用超过43万,独立终端覆盖超过10亿 (含海外)。个推系统每天会产生大量的日志和数据,面临许多数据处理方面的挑战。 首先数据存储方面,个推每天产生10TB以上的数据,并且累积数据已在PB级别。其次,作为推送技术服务商,个推有很多来自客户和公司各部门的数据分析和统计需求,例如:消息推送技术和数据报表。虽然部分数据分析工作是离线模式,但开源数据处理系统稳定性并不很高,保障数据分析服务的高可用性也是一个挑战。另外,推送业务并
BestSDK
2018/02/27
1.2K0
解密个推SDK如何完成百亿级覆盖量推送
鹰眼 | 分布式日志系统上云的架构和实践
​导语 | 930变革后,公司明确了“开源协同、自研上云”的公司技术战略,通过自研业务上云,整合资源使用、推动架构能力互补,促进自研业务与云产品协同发展,同时实现产业互联网发展战略和促进腾讯云业务做大做强。公司也专门成立了组织架构单元大力推动公司级业务上云。为了响应这个号召,分布式日志系统(鹰眼)也在积极探索将原有业务迁入云端的方案。
腾讯云大数据
2020/07/06
6.5K2
鹰眼 | 分布式日志系统上云的架构和实践
数据接入平台(DIP)系列文章之一|功能及架构浅析
导语 腾讯云消息队列CKafka推出数据接入平台(Data Import Platform),旨在构建数据源和数据处理系统间的桥梁。 为了让开发者们更加深入的了解数据接入平台(DIP),腾讯云消息队列团队将组织系列文章,为大家详解数据接入平台(DIP)的功能及架构。 作者简介  许文强   腾讯高级工程师 Apache Kafka Contributor,腾讯云Kafka和数据接入平台DIP研发负责人。专注于中间件领域的系统设计和开发,在消息队列领域具有丰富的经验。 数据实时接入和分析面临的挑战 随着大
腾讯云中间件团队
2022/07/19
2.1K0
数据接入平台(DIP)系列文章之一|功能及架构浅析
实时监控:基于流计算 Oceanus(Flink) 实现系统和应用级实时监控
本文描述了如何使用腾讯云大数据组件来完成实时监控系统的设计和实现,通过实时采集并分析云服务器(CVM)及其 App 应用的 CPU和内存等资源消耗数据,以短信、电话、微信消息等方式实时反馈监控告警信息,高效地保障系统稳健运行。运用云化的 Kafka、Flink、ES 等组件,大大减少了开发运维人员的投入。
吴云涛
2021/09/09
6.6K3
实时监控:基于流计算 Oceanus(Flink) 实现系统和应用级实时监控
58同城 Elasticsearch 应用及平台建设实践
导读:Elasticsearch是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch基于Lucene开发,现在是使用最广的开源搜索引擎之一。Elasticsearch可以应用于在/离线日志流水、用户标签画像、数据库二级缓存、安全风控行为数据、图数据库索引、监控数据、Wiki文档检索等应用场景。58同城有自己的主搜,而一些内部创新搜索业务和大规模的数据实时OLAP ( On-Line Analytical Processing,联机分析处理 ) 则是使用Elasticsearch。
week
2020/07/20
9500
58同城 Elasticsearch 应用及平台建设实践
【BDTC 2015】大数据分析及生态系统分论坛:HBase、Spark、ES、Kylin技术生态
2015年12月10-12日,由中国计算机学会(CCF)主办,CCF大数据专家委员会承办,中国科学院计算技术研究所、北京中科天玑科技有限公司与CSDN共同协办,以“数据安全、深度分析、行业应用”为主题的 2015中国大数据技术大会 (Big Data Technology Conference 2015,BDTC 2015)在北京新云南皇冠假日酒店盛大开幕。 2015中国大数据技术大会第三天的大数据分析及生态系统分论坛中,来自Hortonworks、IBM、京东、百度、eBay、银联智惠和南京大学的七位专家
CSDN技术头条
2018/02/11
1.9K0
【BDTC 2015】大数据分析及生态系统分论坛:HBase、Spark、ES、Kylin技术生态
数据资产治理-元数据采集那点事
数据资产治理(详情见:数据资产,赞之治理)的前提要有数据。它要求数据类型全、量大,并尽可能多地覆盖数据流转的各个环节。元数据采集就变得尤其重要,它是数据资产治理的核心底座。
用户1278550
2020/12/31
2.9K0
数据资产治理-元数据采集那点事
ELK日志系统之使用Rsyslog快速方便的收集Nginx日志
Rsyslog是高速的日志收集处理服务,它具有高性能、安全可靠和模块化设计的特点,能够接收来自各种来源的日志输入(例如:file,tcp,udp,uxsock等),并通过处理后将结果输出的不同的目的地(例如:mysql,mongodb,elasticsearch,kafka等),每秒处理日志量能够超过百万条。
37丫37
2019/01/03
2.3K0
基于Elastic Stack的海量日志分析平台实践
随着58集团业务的飞速发展,日志数量也呈现指数级增长。传统的日志处理方案,已不再适用,此时急需一套功能强大、稳定可靠的日志处理系统。
Spark学习技巧
2019/10/24
1.3K0
基于Elastic Stack的海量日志分析平台实践
日志收集工具简单对比
Logstash logstash基于JRuby实现,可以跨平台运行在JVM上 优点 主要的优点就是它的灵活性,这还主要因为它有很多插件。然后它清楚的文档已经直白的配置格式让它可以再多种场景下应用。
iginkgo18
2020/09/27
5.9K0
日志收集工具简单对比
Elastic Stack最佳实践系列:Beats->ES,一个更轻型的架构选择
说起开源的日志分析系统,ELK几乎无人不晓,这个生态并非是Elastic特意而为,毕竟Elasticsearch的初心是分布式的搜索引擎,被广泛用作日志系统纯粹一个“美丽的意外”,这是社区使用者推动而成。而现在各大云厂商推广自己的日志服务时,也往往将各种指标对标于ELK,可见其影响之广。
点火三周
2022/03/16
1.6K0
Elastic Stack最佳实践系列:Beats->ES,一个更轻型的架构选择
推荐阅读
相关推荐
云原生下日志方案的架构设计
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档