写点什么

京东如何建设基于云原生架构的监控 - 日志系统?

2021 年 1 月 07 日

京东如何建设基于云原生架构的监控-日志系统?

在这个人人都谈“云原生”的时代,企业在建设内部相关系统时常常会优先考虑云原生架构。那么,云原生架构的系统与传统架构系统有什么不同?又该如何建设呢?本文我们采访了京东架构师韩超,他分享了京东基于云原生架构的监控 - 日志系统的建设之路,希望能对想要建设基于云原生架构系统的读者有所助益。


云原生监控系统有什么特殊?


随着云计算的发展,我们发现很多系统都是基于云原生架构构建的,监控系统也不例外。云原生架构监控系统与传统架构监控系统到底有什么不同?韩超表示:“这两者的本质区别是云原生架构监控系统需要以 Cloud Native 的方式来进行部署运维。”


Cloud Native 是一个发展中的体系,简单来说,云原生架构需要融入 K8s 体系,让 Monitoring、Logging、Tracing 几大功能,按照 Cloud Native 的方式运作。从系统(K8s 或 PaaS)的视角来看,云原生架构的监控需要是一个标准的东西,而非把系统改得“七零八落“;从应用的视角来看,云原生架构的监控需要与系统融为一体,接入方式不能太复杂。


传统架构的监控系统与云原生架构的功能目标大致是相同的,但细节的把握不同,后者可以视为前者的“进阶”。当然,两种监控系统面临的挑战也各有不同。


传统架构的监控系统中,主要是面临多、快、好、省四个方面的挑战:


  • 多:监控系统需要运作于数万主机、百万应用的环境中,而且开发、运维的负责度要做到 O(1)。

  • 快:监控系统要随着主机、应用快速部署完成。一台主机交付上线,有没有监控的部署速度应该是相同的;一组应用交付上线,配套的监控应当同步具备;

  • 好:监控的时效性、稳定性要强于应用。监控是应用的保障,发现问题的准确率、召回率是监控系统的关键指标。

  • 省:监控系统需要省资源,监控的 CPU、Memory 开销是监控的关键指标。


而基于云原生架构的监控系统,其挑战大多是来自于 Cloud Native 模式本身,主要包括:


  • Cloud Native 体系本身就有快速部署、自动扩缩等功能,既然应用具有这种特性,那么监控系统也需要具备同类特性;

  • 在云原生的 PaaS 中,K8s 与应用层都是标准的,监控系统作为介于二者之间的部分,“采集端侵入”的危害会更加严重;

  • 云原生秉承有标准化、自动化的核心理念,但是大型系统往往需要做“极限优化”,要满足标准化、自动化的“极限优化”,挑战就更大了。


京东如何构建监控系统?


最初,京东的应用程序全部都部署在物理机器上。这种部署方式不仅造成了物理机器资源的严重浪费,而且调度缺乏灵活性。由于物理机器的故障,应用程序迁移的时间要花数小时,无法实现自动扩展。


为了解决这些问题,京东从 2014 年开始尝试使用 Docker,并基于 OpenStack + Novadocker 架构创建了第一代容器引擎平台:JDOS1.0。此后,所有应用程序在容器里面运行,而不是在物理机器里面运行。其中,一个 OpenStack 分布式容器集群中最多有 10000 个计算节点,至少也有 4000 个计算节点。


2016 年,JDOS 1.0 的容器规模由 2000 个扩大到 100000 后,京东推出了新的容器引擎平台 JDOS 2.0,京东商城的“应用体系”从 OpenStack 切换到 K8s。



JDOS 2.0 的平台架构


京东云原生监控 - 日志系统


京东商城基础架构的 JDOS2.0 已经非常接近“云原生标准“,京东云原生监控 - 日志系统的发展和建设,与之同步。该系统的核心组成主要包括采集端、接入代理、存储模块、计算模块、服务控制中心、报警等。



  • 最核心的底层是京东商场基础架构自研的存储模块;

  • 中层则是其它各个核心模块,采用积木式可以进行排列组合;

  • 在核心的监控 - 日志系统之上是基于 API 的扩展能力,比如业务定制扩展、AIOps 扩展等。


京东云原生监控 - 日志系统各模块之间也是以服务化的方式进行联系,看起来就像是普通的应用。其中采集端比较特殊,因为它要放到 Node 环境中,并且要求每机一个。这是所有监控 - 日志系统都绕不过去的事情,京东将其做成 K8s 的标准化组件,做到了“低侵入性”。


京东监控 - 日志系统本质上都是标准的 K8s 组件,与京东容器平台 JDOS 关系密切。


  • 在 K8s 的视角,监控 - 日志系统是 DaemonSet、RS 的各个 Pod,并非改了系统。

  • 在 JDOS 容器平台的视角,监控 - 日志系统可以视为 JDOS 容器平台的一个“插件”,并非强耦合。

  • 从应用的视角来,监控 - 日志系统是一个“无需感知“的机制,例如上线无依赖。


建设监控 - 日志系统遇到的挑战


大型系统建设升级的挑战大多来自上线,上线类似于“在开车的过程中加零件”,需要保证各种稳定性。京东监控 - 日志系统也不例外,在上线的过程中,新、老系统采用“临时冗余化”、双写并行运行的模式,解决了平滑切换的问题。同时,小流量机制,也解决了占用 double 机器资源的问题。


另外,监控 - 日志系统上线常常会遇到由于“强侵入性”导致的上线顺序左右为难的问题。因此,京东监控 - 日志系统在设计之初就避免了这种问题。


报警在整个监控系统中是一个定制化极强、需求极强的模块,一般来说报警包括两个层面的东西,一是短信、邮件、IM 等通道,二是报警规则的设置引擎。


京东商城的 app 监控系统采用了极其灵活的报警规则机制,规则的设置在于使用者,而不在于监控系统的开发运维。这种设计给了各个业务开发“自我平衡”的机会,在运作的过程中,将报警的量、级别调整到比较合理的状态。同时,报警多了容易发生召回率高、准确率低;报警少了容易召回率高、准确率低。虽然这两点永远是矛盾的,但京东在技术层面也做了一些小的优化,比如自动合并、调整时间轴等。


在韩超看来,目前京东商城的监控 - 日志系统最大的亮点在于:架构灵活 + 与时俱进。架构灵活是空间维度的概念,包括对标架构、拓扑关系、部署方式三个方面;与时俱进是时间维度的概念,包括维护成本、演进模式、技术发展三个方面。


当然,该系统也还有很多值得优化的地方,在韩超看来京东监控 - 日志系统应该优化的地方也是很多大型系统架构层面的固有问题。


  • 多集群、多地域:整体架构超越了 K8s 集群的定义,监控 - 日志系统也需要进行应有的改变;

  • 整个系统的监控对象其实既有普通 App,也有数据库、缓存、队列等中间件,这里面需要整合,才能让每个业务的开发者更能感受到 Serverless 的优势;

  • 京东商城基础架构自研的 baudtime、baudlog 已经在很大程度上节省了存储资源,如果权衡读、写能力,仍有成本优化空间,查询体验也可以对标更好的 ELK。


采访嘉宾:


韩超,技术栈全面、技术底蕴深厚的跨领域架构师,曾经是中国大陆嵌入式 Linux 的先行者,从事移动多媒体、Linux 平台、互联网架构等工作,当前主要技术方向是分布式基础架构。曾任 Motorola 资深工程师、Intel-WindRiver MTS、百度主任架构师,现任京东架构师。


QCon 全球软件开发大会(北京站)2021 官方讲师招募通道已经正式开启,如果您有一个优质的话题并乐于分享交流,那就提交吧!期待你的精彩分享。

2021 年 1 月 07 日 14:541422
用户头像
田晓旭 InfoQ 编辑

发布了 444 篇内容, 共 204.0 次阅读, 收获喜欢 1372 次。

关注

评论

发布
暂无评论
  • 苏宁大企业级立体式监控的构建

    演讲嘉宾汤泳,苏宁易购IT总部监控研发中心总监内容介绍在当今互联网时代,企业大都采用分布式系统设计和服务化,内部关系错综复杂,从系统提供的上层服务对用户的体验感知到整体系统的健康稳定的智能化监控已成为企业发展的标配能力,但是也存在着异常故障定位缓慢,甚至找不到问题根源,虽有众多日志监控工具,但没有全链路,各产品分散集成度不高;定位问题及根因分析耗时长,缺乏决策并自动控制(自愈)机制,基本靠人工,且监控机制混乱,对数据中心的性能、安全、稳定性影响缺乏量化及合理性规划;面对大规模高并发的场景,很难兼顾性能与稳定性、可用性。如何解决上述痛点,实现真正的从“检测”到“分析”再到“控制”的监控体系化建设? 本次演讲将和大家一起分享构建苏宁立体式监控的实践。

    2018 年 12 月 18 日

  • 解读运维的 2020:从救火背锅到生产力担当,云原生时代的运维新归宿

    云原生技术的长足发展给企业数字化转型带来了便捷,企业转型的背后是基础架构人员面临的对自身的升级和转型。

  • 小米自动化运维平台演进设计思路

    小米自动化运维平台建设大致分为三个时期,整体建设的规划比较清晰,能够一以贯之。本文介绍了小米自动化运维平台的演进思路。

  • 小米线下零售供体系的技术创新和探索

    小米从电商开始做零售,2015 年开始布局线下,业务开始了快速扩张。零售技术团队从进销存开始做起,一步步拼装补齐平台功能,推动技术在业务场景落地,并提升门店销售经营效率。在探索零售效率和创新上,零售技术团队做了很多的尝试。配合业务部门进行移动收银落地、优化供需模型,推进门店运营数字化等。同时伴随业务的渠道拓展和全球化业务发展,线下零售技术体系全面梳理功能矩阵并不断演进架构,开始了从零售支撑到软件系统平台化再到中台化的演进过程。本次演讲将和大家一起探讨零售技术团队技术探索的经验和方向。作者简介王德宇,现任职小米信息技术部全球新零售高级研发经理,小米线下零售技术体系负责人。2014 年加入小米,亲历和参与了小米从电商到全渠道零售发展过程。期间服务过仓储物流、电商多个技术团队。2016 年初,参与建立小米线下零售技术体系,并推进技术落地。伴随线下零售体系从基础销售到多渠道平台化建设,技术体系中台化转型,系统能力对外输出的整个时期。

    2019 年 11 月 21 日

  • 标准化体系建设(下):如何建立基础架构标准化及服务化体系?

    基础架构标准化至关重要,我们在建立标准化的过程中往往存在普遍问题,而这一部分又影响着后续一系列效率和稳定性平台的建设。

    2017 年 12 月 27 日

  • 低成本构建大规模云端系统实践

    演讲嘉宾 蔡超,Mobvista技术副总裁兼首席架构师。 内容介绍 云计算“Scale on-demand”和“pay as you go”的特性使的我们可以以很低的硬件成本快速构建自己的系统。但是随着规模的日益扩大,其成本会迅速增长,甚至很快会超过那些基于自有硬件基础设施的传统解决方案。Mobvista作为一家快速成长的移动营销公司,在短短的5年时间里,其业务迅速增长。目前业务已遍及200多个国家及地区,每天处理150亿次的请求。与那些All in Cloud的公司一样,Mobvista面临了规模快速增长带来的巨大成本压力。 此次演讲,将通过本人在Mobvista的一些实践来讲述如何通过架构的演化(Microservice,Serverless)及利用云计算的新特性(如竞价实例)来有效降低系统成本。 演讲大纲 1、架构风格的转变; 2、更细粒度的伸缩; 3、有效利用Spot Instance降低成本。

    2018 年 9 月 12 日

  • Prometheus 监控实战(一):监控机制

    监控的方法是多种多样的,实际上,你可以说从单元测试到检查清单(checklist)的所有事情都是监控的某种形式。

  • 网易蜂巢基于万节点 kubernetes 支撑大规模云应用实践

    本文分享了网易蜂巢为了支撑大规模云应用从IaaS、PaaS、CaaS以及应用层所做的优化和最佳实践,还有大规模Kubernates集群支持高并发集群的运维实践,希望能给各位带来一些新的思考。

  • 高可用、弹性动态的金融级移动架构在蚂蚁金服的演进之路

    演讲嘉宾罗其平 蚂蚁金服 支付宝事业群技术专家内容介绍支付宝在无线领域投入了大量的开发资源,面向高并发、超大业务体量构建并完善了一套成熟的移动开发架构,在用户体验、应用稳定性、性能提升方面都有相应的建树。本演讲将着重围绕支付宝高可用、弹性动态的金融级移动架构演进之路展开讨论,并结合输出完整的开发工具链帮助传统银行完成架构升级的案例辅以解析。演讲会重点介绍支付宝移动端开发框架的设计理念和演进;以及监控、分析、应急响应等具体业务场景实践。内容大纲 支付宝在移动端的架构演进与思考; 高可用、弹性动态的移动金融架构演进; 剖析如何快速构建、复制稳定、高可用移动金融应用。

    2019 年 1 月 2 日

  • “微服务”架构:更灵活、更可靠、更开放

    随着云计算、开源、Docker等为技术界带来革命性的影响,同时,用户使用方式与生活方式都在移动化浪潮的裹挟下发生了巨变,“微服务”架构(MSA:Micro Service Architecture)这一全新的企业架构模式越来越受到关注,也有越来越多的企业和平台服务商开始将“微服务”的概念转化为实践,掌握到第一手的实战经验。应该如何理解“微服务”的性质和特点?转型“微服务”架构能够解决哪些问题、需要注意哪些问题?为了回答这些疑问,我们对普元软件的资深架构师顾伟进行了采访,请他介绍自己对“微服务”的理解和经验。

  • 吉利汽车的监控平台建设之路

    吉利汽车监控平台是从2015年开始大范围去推广的,整个平台建设与其它公司类似,从底层到上层分别包括基础设施的监控、操作系统主机的监控、基于中间件的环境监控(例如在数据库层面的缓存、消息、中间件监控)、应用监控、面向用户和应用性能的监控。

  • 51 信用卡在微服务架构下的监控平台架构实践

    本次分享介绍对微服务下的白盒监控思考,以及如何将时下社区流行的Spring Cloud,K8S,Prometheus等开源技术在企业落地。

  • 从 UC 内核角度谈谈 PWA 技术在阿里体系的实践及影响

    演讲嘉宾 刘翔,阿里巴巴UC内核无线开发专家。 内容介绍 本次分享将围绕以下几方面展开,希望能给大家带来对PWA的进一步思考: PWA的核心能力 (1) Service Worker,独立的JS线程,与文档无关的生命周期,离线更新资源的能力。 (2) Reliable SW Cache、Fetch、Push、Navigation Preload、Background Fetch、Background Synchronization、 CompositorWorker 这些能力如何让Web变得更可靠? PWA的优秀实践 很多页面用上PWA之后,效果并没有想象的那么好,和重构之前基本持平,那么,如何才能发挥PWA的真正效果?怎么才能在国内环境下玩转ServiceWorker Push预加载? (1)从内核的角度分析,为何普通的用法无法带来性能的大幅提升。 SW的启动耗时分析 SWCache与HttpCache的关系和优劣 (2)SW缓存主文档的实现和效果 (3)SW Push预加载的实现和效果 (4)SW独立线程的应用 PWA带来的影响 (1)逐步给前端开放浏览器内核基础能力,甚至是操作系统能力,比如缓存、推送、添加桌面图标、下载、图片解码、渲染等等 (2)前端正变得无所不能,很多事情都可在Web实现,比如SW、WebGL、WebRTC、WebAR/VR等等

    2018 年 9 月 12 日

  • 微服务架构下的监控需要注意哪些方面?

    微服务架构在带来灵活性、扩展性、伸缩性以及高可用性等优点的同时,其复杂性也给运维工作中最重要的监控环节带来了很大的挑战,从用户的角度看,微服务架构下的监控应该注意哪些方面?

  • 小程序端到端全链路监控

    本次分享介绍如何跨越生态实现监控小程序、端到端前后端全链路追踪以及如何迅速解决问题。

  • 当国内大厂谈论监控的时候,他们在谈论什么

    运维同学最重要的使命就是保证线上业务的稳定运行,但是业务不出问题是不可能的,任你怎么拜服务器都没用。所以出了故障就要及时发现及时处理,监控就成了运维工作中非常重要的环节,有人甚至说监控对于运维来说,犹如眼睛对人来说一样重要。

  • 网易云基于 Prometheus 的微服务监控实践

    在过去数年里,微服务的落地一直都是业界重点关注的问题。与传统监控相比,微服务监控面临着更多难点。这篇文章详细介绍了网易云轻舟微服务平台是如何做监控的。

  • 大数据下的技术运营(一)——监控系统概览篇

    在运维更名为技术运营的两年内,我们对这个团队的工作目标产生了新的理解,工作内容也逐渐从传统的维护往DevOps方向转化。技术运营,简单地讲就是利用技术手段,降低资源消耗,提高基础资源的运行效率,提高整个软件生命周期运行的效率。

  • 基于 APM 的智能运维体系在京东物流的落地和实践

    2017 年,京东物流新业务的发展导致原有的运维平台不能满足业务需要,所以现有的运维体系平台进行了升级建设。

  • 新思路设计可视化大型微服务监控系统

    随着微服务在生产实践中被大量使用,后台系统中的服务系统数量暴增,挑战也随之产生。当系统出现问题时,如何在上百个相关的、依赖错综复杂的服务系统之中快速定位到出错的系统?达达 - 京东到家的 Overwatch 系统已经在线上运行了一年有余,采用了创新性的可视化监控设计,并成功帮助达达 - 京东到家的系统渡过了“双十一”的挑战,设计思想值得分享。

发现更多内容

【经验分享】如何融合CMMI与企业需求,自定义推进数字化转型

嘉为蓝鲸

DevOps 敏捷 持续交付 CMMI 能力成熟度模型

盘点软件开发中那些有趣的边际效应

架构精进之路

认知提升 日更挑战 28天写作 2月春节不断更

解读|2020年CNCF云原生调研报告

焱融科技

云原生 存储 容器存储 容器化 cncf

android开发实战!面试的时候突然遇到答不上的问题怎么办?Android校招面试指南

欢喜学安卓

android 程序员 面试 移动开发

智慧派出所平台开发解决方案,智慧警务大数据分析系统搭建

WX13823153201

智慧派出所平台开发

京东扫描平台EOS—JS扫描落地与实践

京东科技开发者

前端

吹爆!阿里技术官强推“Spring全家桶进阶笔记”限时开源,差距不止一点点!

程序员小毕

Java spring 编程 程序员 面试

收购环信、因Clubhouse股价飙升30%,

ToB行业头条

智汇华云 | ArSDN之多集群简介

华云数据

华云数据

区块链矿机挖矿游戏开发,区块链矿机游戏开发

v16629866266

腾讯基于 Flink SQL 的功能扩展与深度优化实践

Apache Flink

flink

C/C++后台开发需要点亮哪些技能树||(鹅厂为例) Linux百里

赖猫

c++ Linux 后台开发 linux开发 服务器开发

【LeetCode】双指针反转字符串

HQ数字卡

算法 LeetCode 2月春节不断更

混合云的五个优势

浪潮云

混合云

带你了解TCP/IP,UDP,Socket之间关系

赖猫

socket udp TCP/IP

高并发高性能服务器是如何实现的?

赖猫

c++ 高并发 linux开发 服务器开发 多线程高并发

最最新版钱包tok量化区块链挖矿系统源码

luluhulian

程序员成长第二篇:如何快速入门

石云升

28天写作 2月春节不断更 程序员入门

怎么和小伙伴语音连麦,你造吗?

anyRTC开发者

ios android WebRTC sdk 语音通话

android开发手册apk!Android开发者跳槽指南终获offer

欢喜学安卓

android 程序员 面试 移动开发

火出圈的Clubhouse,究竟有什么奥秘?

拍乐云Pano

flutter RTC 语音聊天室 社交APP出海 clubhouse

webpack | 进阶用法4:如何进行构建速度和体积分析

梁龙先森

前端工程化 webpack 28天写作 2月春节不断更

资本市场发展趋势学习笔记

JiangX

28天写作

DCache 分布式存储系统|Key-Value 缓存模块的创建与使用

TARS基金会

nosql 微服务 MySQL 高可用 分布式数据储存 TARS

深入理解JVM中的类加载机制

Simon郎

JVM

2天完成17TB数据量迁移,华为云数据库是如何做的?

华为云开发者社区

数据库 mongodb 大数据 智慧地图 地理信息服务

你需要的Docker知识点都在这里了。

后台技术汇

28天写作 2月春节不断更

官宣|焱融科技完成1.2亿元A+轮融资

焱融科技

分布式 存储 焱融科技 企业融资 创业公司

SpringBoot 接口幂等性的实现

xcbeyond

Spring Boot Java、 幂等性 28天写作

并发队列:ArrayBlockingQueue实际运用场景和原理

叫练

阻塞队列 LinkedBlockingQueue 并发队列 阻塞List ArrayBlockingQueue

KubeEdge@MEC:Kubernetes容器生态与5G的结合

华为云开发者社区

5G 边缘计算 网络 kubeedge 5G MEC

京东如何建设基于云原生架构的监控-日志系统?-InfoQ