AIGC在金融场景是如何落地的? 了解详情
写点什么

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

  • 2018-11-21
  • 本文字数:3084 字

    阅读完需:约 10 分钟

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

微服务架构虽然诞生的时间并不长,却因为适应现今互联网的高速发展和敏捷、DevOps 等文化而受到很多企业的推崇。微服务架构在带来灵活性、扩展性、伸缩性以及高可用性等优点的同时,其复杂性也给运维工作中最重要的监控环节带来了很大的挑战:海量日志数据如何处理,服务如何追踪,如何高效定位故障缩短故障时常……


InfoQ 记者采访了京东云应用研发部门运维负责人,来谈一谈微服务架构下的监控应该注意哪些方面。

微服务架构带来的变化

在京东云运维专家看来,微服务架构给 IT 系统和团队带来了以下显著的变化:


  • 基础设施的升级,需要引入虚拟化(如 Docker),现存基础设施也需要与之进行适配;

  • 系统架构的升级,需要引入服务注册(如 Consul),服务间的交互方式也需要与之进行适配;

  • 运维平台的升级,建议引入日志收集(如 Fluentd),分布式跟踪(如 Zipkin)和仪表盘(如 Vizceral/Grafana)等;

  • 运维效率和自动化水平的提升也迫在眉睫,否则无法应对实例数量,变更频率,系统复杂度的快速增长;

  • 观念的转变,基础设施,系统架构和运维平台等的大幅升级,犹如小米加步枪换成飞机大炮,相应的战略战术也需要与之相适配才行。

微服务架构下用户面临的监控问题

在转型到微服务架构以后,用户在监控方面主要会面临以下问题。


首先,监控配置的维护成本增加。某个在线系统大概有 106 个模块,每个模块都需要添加端口监控,进程监控,日志监控和自定义监控;不同服务的监控指标,聚合指标,报警阈值,报警依赖,报警接收人,策略级别,处理预案和备注说明也不完全相同;如此多的内容,如何确保是否有效,是否生效,是否完整无遗漏。


当前针对维护成本,业界常用的几种方法有:


  • 通过变量的方式尽量减少人工输入;

  • 通过监控配置文件解析做一些可标准化的校验;

  • 通过故障演练验证报警是否符合预期;


其次,第三方依赖越来越多。例如 Docker 的可靠性很大程度上取决于宿主机,如果所在的宿主机发生资源争用,网络异常,硬件故障,修改内核参数,操作系统补丁升级等,都可能会让 Docker 莫名其妙地中招。


第三,服务故障的定位成本增加。假设故障是因为特定服务处理耗时增大导致的,那么如何快速从 106 个服务以及众多的第三方依赖中把它找出来,进一步,又如何确认是这个服务的单个实例还是部分实例的异常,这些都让故障定位变得更复杂。


在微服务架构下,提高故障定位效率的常用方法有:基于各类日志分析,通过仪表盘展示核心指标:数据流,异常的监控策略,变更内容,线上登录和操作记录,文件修改等内容。

微服务监控的难点及解决思路

在微服务架构下,监控系统在报警时效性不可改变的前提下,采集的指标数量是传统监控的三倍以上,如果是万台以上的规模,监控系统整体都面临非常大的压力,在监控方面的挑战主要来源于:


      


首先,存储功能的写入压力和可用性都面临巨大挑战。每秒写入几十万采集项并且需要保证 99.99%的可用性,对于任何存储软件来讲,都不是一件轻松的事情。


对于写入和可用性的压力,业界常见的解决思路主要是基于如下方式的组合:


  • 集群基于各种维度进行拆分(如地域维度、功能维度和产品维度等);

  • 增加缓存服务来降低 Hbase 的读写压力;

  • 调整使用频率较低指标的采集周期;

  • 通过批量写入降低 Hbase 的写入压力;

  • 通过写入两套 Hbase 避免数据丢失并做到故障后快速切换。


其次,监控的生效速度也面临巨大挑战。微服务架构下,基于弹性伸缩的加持,从服务扩容或者迁移完毕到接入流量的耗时降低到 1Min 左右,且每时每刻都在不断发生着。对于复杂监控系统来讲,支持这样的变更频率绝非易事,而且实例变更如此频繁,对监控系统自身来讲,也会面临可用性的风险。


常见的提高监控生效速度的思路主要有如下的几种方式:


  • 实时热加载服务注册信息;

  • 对监控配置的合规性进行强校验;

  • 增加实例数量的阈值保护;

  • 支持配置的快速回滚。


第三,基础设施的故障可能导致报警风暴的发生。基础设施如 IDC 故障,可能会在瞬时产生海量报警,进而导致短信网关拥塞较长时间。


解决这类问题的思路主要是如下方式:


  • 基于报警接收人通过延时发送进行合并;

  • 报警策略添加依赖关系;

  • 优先发送严重故障的报警短信;

  • 增加多种报警通知方式如电话,IM 等。

微服务监控原则

对于采用微服务的团队,京东云运维专家建议在做监控时可以参考 Google SRE 的理论,结合自己长期的运维实践经验,他总结了几点可以参考的原则:


  • 首先,所有系统和第三方依赖的核心功能必须添加黑盒监控;

  • 第二,所有模块必须添加白盒监控的四个黄金指标(饱和度,错误,流量和延时);

  • 第三,所有的变更都需要进行采集,包括但不限于程序,配置,数据,网络,硬件,操作系统以及各类基础设施。


另外,京东云运维专家也给大家提供了一些黑盒监控的实施经验:


首先,应该监控哪些功能?建议将系统接入层的访问日志,TOP-10 的 URL 添加黑盒监控。那 TOP-9 的 URL 是否一定需要监控?TOP-11 的 URL 是否一定不需要监控?这取决于其访问量是否和前面的 URL 在一个数量级以及人工评估其接口的重要性程度,这里提供的更多是一个思路,而非可量化的方法。


第二,应该使用多少个样本/节点对一个功能进行黑盒监控?建议样本应该覆盖到对应模块的所有实例,这样也能发现由少数实例导致的小规模故障。

微服务架构下的理想监控系统

从用户的角度看,Prometheus 的整体架构设计参考了 Google BorgMon,系统具有高度的灵活性,围绕其开放性现在也慢慢形成了一个生态系统。具体来说,Prometheus 使用的是 Pull 模型,Prometheus Server 通过 HTTP 的 Pull 方式到各个目标拉取监控数据。HTTP 协议的支持能够更加方便的进行定制化开发,服务注册、信息采集和数据展示均支持多种形式/开源软件。



结合目前国内正在兴起的智能运维,也许不久的将来,上面提到的监控的各种问题也就迎刃而解了。监控策略不在需要人工定义,转由机器学习负责,诸如策略添加,阈值设定,异常检测,故障定位,自动止损等逐步由系统负责,运维人员不再是“救火队长”。

京东云监控响应实践

京东云运维平台为数万台机器提供监控,部署,机器管理,权限管理,安全管理,审计和运营分析等功能,为京东云所有的业务在各类异构网络环境下提供标准和统一的运维支撑能力。


基于产品所处的发展阶段,用户规模的不同,报警频率也不尽相同。理想情况下,报警频率应该等同于故障频率,这里面体现了报警的准确度和召回率两个指标,如果每个报警都对应一个服务故障,则准确度为 100%,同理,如果每次服务故障均有报警产生,则召回率为 100%。大家可以基于上述两个指标,来衡量自己团队的现状,并针对性的制定提升计划即可。


      


对于响应流程,京东云有几个做的好的地方可以给大家参考。


  • 首先,所有核心报警均有可靠的应对预案和处理机制,并通过定期的破坏演练持续进行完善。

  • 其次,公司的监控中心会 7x24 值守,他们也会和业务线运维同学一样,接收所有影响核心系统稳定性的报警,收到报警后会进行通报,确保核心报警在发生后第一时间内有人处理并在规定的时间内处理完毕。如果未在规定的时间内处理完毕,监控中心会进行报警升级,通报该系统的管理人员,从而确保该报警可以得到更高的重视度和支持力度。

结语

对于监控系统的未来发展,京东云的运维专家认为长期来看,依托于 Kubernetes 的发展,在基础设施的各个领域,都会从百花齐放到几家独大,从而将标准化落地到基础设施的各个领域,进而促进整个生态的繁荣。


在监控方向,Prometheus 在未来一段时间后,也许会是一个很好的选择。在 Prometheus 等工具解决了通用的监控场景并标准化之后,在其上的各类应用场景,如容量规划,流量监控,故障定位以及各种基于大数据和人工智能场景的落地等,就会出现百花齐放之势。


2018-11-21 00:003607
用户头像
张婵 InfoQ 技术编辑

发布了 87 篇内容, 共 50.5 次阅读, 收获喜欢 218 次。

关注

评论

发布
暂无评论
发现更多内容

华为云CodeArts Artifact 5大特性,揭秘大型企业制品管理面纱

华为云PaaS服务小智

云计算 华为云 华为开发者大会2023

高性能存储SIG月度动态:io_uring支持nvme直通,DSMS完成开发测试

OpenAnolis小助手

开源 io_uring 高性能存储 anck 龙蜥sig

POCO库的安装与基础知识说明

向阳逐梦

代码随想录训练营 Day06 - 哈希表(上)

jjn0703

合作、参与、让开源更易用 | 亚马逊的开源文化

亚马逊云科技 (Amazon Web Services)

云计算

华为云语音交互服务SIS——与人打交道的智慧软件,非常值得一试

平平无奇爱好科技

自从前端用上了低代码,开发速度直接起飞

伤感汤姆布利柏

2023-07-03:讲一讲Redis缓存的数据一致性问题和处理方案。

福大大架构师每日一题

redis 底层原理 福大大架构师每日一题

Spring Boot中如何优雅地实现异步调用?

快乐非自愿限量之名

前端 spring-boot

和鲸科技 ModelWhale 入选北京市人工智能行业赋能典型案例(2023)丨2023全球数字经济大会人工智能高峰论坛

ModelWhale

人工智能 AI 数字化 大模型 论坛

创新引擎加速数字时代:揭秘JNPF平台与云计算的完美共舞!

不在线第一只蜗牛

云计算 低代码 数字化

​瓶颈期别挣扎了,低代码或许可以帮到你

伤感汤姆布利柏

通过容器化实现前端微服务化架构设计

FinFish

小程序容器 小程序化 小程序技术 前端服务化

数据挖掘18大算法实现以及其他相关经典DM算法:决策分类,聚类,链接挖掘,关联挖掘,模式挖掘。图算法,搜索算法等

汀丶人工智能

人工智能 数据挖掘 机器学习 深度学习 决策树

想要快速上线网站?香港虚拟主机助你一臂之力!

一只扑棱蛾子

香港虚拟主机

复杂的舆论场,企业该如何保障内容审核安全?

平平无奇爱好科技

MQTT 性能测试入门:常见测试场景和指标

EMQ映云科技

物联网 性能测试 mqtt

人工智能泡沫:揭秘低代码开发平台的革命性崛起

快乐非自愿限量之名

人工智能 低代码 数智化 ChatGPT

Flink-Learning 实战营在升级!更多精美好礼等你来!

Apache Flink

大数据 flink 实时计算

追击策略?微软云服务器业务2022年规模少于亚马逊AWS一半

B Impact

[杂谈] pdfbox 2.0.28 文字水印移除操作(Acrobat/WPS)

alexgaoyh

Java PDF remove pdfbox text watermarker

蓬勃发展的数智革命:低代码开发平台开启制造业繁荣新纪元!

EquatorCoco

人工智能 低代码 制造业 数智转型

算法复杂度介绍

宁静知行者

算法

多项目管理难在哪,多项目同时进行该如何做好进度管理?

优秀

项目管理 项目进度管理

营销SaaS SemRush 2.9 亿美元年收入的五个经营数据分析

B Impact

华为云视频封面&摘要服务:让视频内容更具吸引力

平平无奇爱好科技

低代码云里雾里,如何择优选择,且看这里

高端章鱼哥

低代码 低代码开发 JNPF

华为开发者大会2023(Cloud):华为云邀您共话开源

华为云开源

开源 云原生 HDC.Cloud

组合框架:融合创新技术,实现一次编码多平台运行

FinFish

flutter 跨端开发 小程序容器 跨端框架 跨端应用开发

基于低代码平台可视化搭建应用

这我可不懂

低代码 JNPF 可视化搭建

华为云图像识别Image:技术服务提供商的首选

平平无奇爱好科技

  • 扫码添加小助手
    领取最新资料包
微服务架构下的监控需要注意哪些方面?_软件工程_张婵_InfoQ精选文章