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

565次阅读  |  发布于3年以前

作者 | 田晓旭
采访嘉宾 | 韩超

在这个人人都谈“云原生”的时代,企业在建设内部相关系统时常常会优先考虑云原生架构。那么,云原生架构的系统与传统架构系统有什么不同?又该如何建设呢?本文我们采访了京东架构师韩超,他分享了京东基于云原生架构的监控 - 日志系统的建设之路,希望能对想要建设基于云原生架构系统的读者有所助益。 1 云原生监控系统有什么特殊? 随着云计算的发展,我们发现很多系统都是基于云原生架构构建的,监控系统也不例外。云原生架构监控系统与传统架构监控系统到底有什么不同?韩超表示:“这两者的本质区别是云原生架构监控系统需要以 Cloud Native 的方式来进行部署运维。”

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

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

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

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

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

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

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

JDOS 2.0 的平台架构

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

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

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

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

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

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

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

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

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

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

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8