0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅析微服务架构中的监控系统

Linux爱好者 来源:YXQ 2019-08-11 09:59 次阅读

今天这篇文章我们来聊一聊一个重要模块:「 监控系统 」。

因为在微服务的架构下,我们对服务进行了拆分,所以用户的每次请求不再是由某一个服务独立完成了,而是变成了多个服务一起配合完成。这种情况下,一旦请求出现异常,我们必须得知道是在哪个服务环节出了故障,就需要对每一个服务,以及各个指标都进行全面的监控。

一、什么是「 监控系统 」?

在微服务架构中,监控系统按照原理和作用大致可以分为三类(并非严格分类,仅从日常使用角度来看):

日志类(Log)

调用链类(Tracing)

度量类(Metrics)

下面来分别对这三种常见的监控模式进行说明:

日志类(Log)

日志类比较常见,我们的框架代码、系统环境、以及业务逻辑中一般都会产出一些日志,这些日志我们通常把它记录后统一收集起来,方便在需要的时候进行查询。

日志类记录的信息一般是一些事件、非结构化的一些文本内容。日志的输出和处理的解决方案比较多,大家熟知的有 ELK Stack 方案(Elasticseach + Logstash + Kibana),如图:

使用Beats(可选)在每台服务器上安装后,作为日志客户端收集器,然后通过Logstash进行统一的日志收集、解析、过滤等处理,再将数据发送给Elasticsearch中进行存储分析,最后使用Kibana来进行数据的展示。

当然还可以升级方案为:

这些方案都比较成熟,搭建起来也比较简单,除了用作监控系统以外,还可以作为日志查询系统使用,非常适用于做分析、以及问题调试使用。

调用链类(Tracing)

调用链类监控主要是指记录一个请求的全部流程。一个请求从开始进入,在微服务中调用不同的服务节点后,再返回给客户端,在这个过程中通过调用链参数来追寻全链路行为。通过这个方式可以很方便的知道请求在哪个环节出了故障,系统的瓶颈在哪儿。

这一类的监控一般采用 CAT 工具 来完成,一般在大中型项目较多用到,因为搭建起来有一定的成本。后面会有单独文章来讲解这个调用链监控系统。

度量类(Metrics)

度量类主要采用时序数据库的解决方案。它是以事件发生时间以及当前数值的角度来记录的监控信息,是可以聚合运算的,用于查看一些指标数据和指标趋势。所以这类监控主要不是用来查问题的,主要是用来看趋势的。

Metrics一般有5种基本的度量类型:Gauges(度量)、Counters(计数器)、 Histograms(直方图)、 Meters(TPS计算器)、Timers(计时器)。

基于时间序列数据库的监控系统是非常适合做监控告警使用的,所以现在也比较流行这个方案,如果我们要搭建一套新的监控系统,我也建议参考这类方案进行。

因此本文接下来也会重点以时间序列数据库的监控系统为主角来描述。

二、「 监控系统 」关注的对象和指标都是什么?

一般我们做「监控系统」都是需要做分层式监控的,也就是说将我们要监控的对象进行分层,一般主要分为:

系统层:系统层主要是指CPU、磁盘、内存、网络等服务器层面的监控,这些一般也是运维同学比较关注的对象。

应用层:应用层指的是服务角度的监控,比如接口、框架、某个服务的健康状态等,一般是服务开发或框架开发人员关注的对象。

用户层:这一层主要是与用户、与业务相关的一些监控,属于功能层面的,大多数是项目经理或产品经理会比较关注的对象。

知道了监控的分层后,我们再来看一下监控的指标一般有哪些:

延迟时间:主要是响应一个请求所消耗的延迟,比如某接口的HTTP请求平均响应时间为100ms。

请求量:是指系统的容量吞吐能力,例如每秒处理多少次请求(QPS)作为指标。

错误率:主要是用来监控错误发生的比例,比如将某接口一段时间内调用时失败的比例作为指标。

三、基于时序数据库的「 监控系统 」有哪些?

下面介绍几款目前业内比较流行的基于时间序列数据库的开源监控方案:

Prometheus

Promethes是一款2012年开源的监控框架,其本质是时间序列数据库,由Google前员工所开发。

Promethes采用拉的模式(Pull)从应用中拉取数据,并还支持 Alert 模块可以实现监控预警。它的性能非常强劲,单机可以消费百万级时间序列。

架构如下:

从看图的左下角可以看到,Prometheus 可以通过在应用里进行埋点后Pull到 Prometheus Server里,如果应用不支持埋点,也可以采用exporter方式进行数据采集。

从图的左上角可以看到,对于一些定时任务模块,因为是周期性运行的,所以采用拉的方式无法获取数据,那么Prometheus 也提供了一种推数据的方式,但是并不是推送到Prometheus Server中,而是中间搭建一个 Pushgateway,定时任务模块将metrics信息推送到这个Pushgateway中,然后Prometheus Server再依然采用拉的方式从Pushgateway中获取数据。

需要拉取的数据既可以采用静态方式配置在Prometheus Server中,也可以采用服务发现的方式(即图的中间上面的Service discovery所示)。

PromQL:是Prometheus自带的查询语法,通过编写PromQL语句可以查询Prometheus里面的数据。

Alertmanager:是用于数据的预警模块,支持通过多种方式去发送预警。

WebUI:是用来展示数据和图形的,但是一般大多数是与Grafana结合,采用Grafana来展示。

OpenTSDB

OpenTSDB是在2010年开源的一款分布式时序数据库,当然其主要用于监控方案中。

OpenTSDB采用的是Hbase的分布式存储,它获取数据的模式与Prometheus不同,它采用的是推模式(Push)。

在展示层,OpenTSDB自带有WebUI视图,也可以与Grafana很好的集成,提供丰富的展示界面。

但OpenTSDB并没有自带预警模块,需要自己去开发或者与第三方组件结合使用。

可以通过下图来了解一下OpenTSDB的架构:

InfluxDB

InfluxDB是在2013年开源的一款时序数据库,在这里我们主要还是用于做监控系统方案。它收集数据也是采用推模式(Push)。在展示层,InfluxDB也是自带WebUI,也可以与Grafana集成。

以上,就是对微服务架构中「 监控系统」的一些思考。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 监控系统
    +关注

    关注

    21

    文章

    3608

    浏览量

    169185
  • 服务架构
    +关注

    关注

    0

    文章

    3

    浏览量

    6154

原文标题:微服务架构之「 监控系统 」

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    微服务架构和CQRS架构基本概念介绍

    微服务架构现在很热,到处可以看到各大互联网公司的微服务实践的分享总结。但是,我今天的分享和微服务没有关系,希望可以带给大家一些新的东西。如果一定要说
    发表于 05-22 09:03

    微服务网关gateway的相关资料推荐

    采用微服务架构,显示在产品页上的数据会分布在不同的微服务上,比如:购物车服务——购物车的件数订单服务
    发表于 12-23 08:19

    微服务架构与实践摘要

    本文主要类容是对微服务架构与实践摘要解析。微服务架构中的 “微” 体现了其核心要素,即服务的微型化,就是每个
    的头像 发表于 02-07 16:57 5913次阅读
    <b class='flag-5'>微服务</b><b class='flag-5'>架构</b>与实践摘要

    微服务架构多微才合适

    大家也都认可,随着数据量、流量、业务复杂度的提升,服务架构架构演进中的必由之路,今天要讨论的话题是:微服务架构多“微”才合适?
    的头像 发表于 02-07 17:14 3131次阅读
    <b class='flag-5'>微服务</b><b class='flag-5'>架构</b>多微才合适

    微服务优势_微服务架构的好处与不足

    微服务是用一组小服务的方式来构建一个应用,服务独立运行在不同的进程中,服务之间通过轻量的通讯机制(如RESTful接口)来交互,并且服务可以
    发表于 02-23 11:24 4275次阅读

    什么是微服务架构_微服务架构的优缺点及应用

    什么是微服务架构 简单地说,微服务系统架构上的一种设计风格, 它的主旨是将一个原本独立的系统
    的头像 发表于 06-02 10:03 1.7w次阅读
    什么是<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>_<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>的优缺点及应用

    SOA架构微服务架构的主要区别

    SOA和微服务架构一个层面的东西,而对于ESB和微服务网关是一个层面的东西,一个谈到是架构风格和方法,一个谈的是实现工具或组件。SOA架构
    的头像 发表于 05-04 14:11 5383次阅读
    SOA<b class='flag-5'>架构</b>和<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>的主要区别

    微服务架构有哪些_微服务架构设计模式

    小伙伴们知道常用的微服务架构框架有哪些吗?上回我们介绍了一些常用的微服务架构设计模式,这次我们就来了解一下一些常用的微服务
    的头像 发表于 05-17 17:06 2.8w次阅读
    <b class='flag-5'>微服务</b><b class='flag-5'>架构</b>有哪些_<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>设计模式

    微服务架构的特点_微服务架构适用场景

     微服务架构是一项在云中部署应用和服务的新技术。
    的头像 发表于 05-17 17:28 4659次阅读

    微服务软件架构应用研究综述

    自2014年,微服务架构概念经Martin Flower提出以来,受到广泛关注,为更好了解微服务架构风格,本文首先分析、梳理了软件架构的发展
    发表于 05-26 09:26 2次下载

    什么是微服务架构

    在Medium,我们的技术堆栈始于2012年的单片Node.js应用程序。我们已经构建了几个卫星服务,但我们还没有制定一个系统地采用微服务架构的策略。随着
    的头像 发表于 02-24 11:15 1121次阅读
    什么是<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>?

    从分层架构微服务架构介绍(五)

    本文要介绍的是 服务架构 (Service-Based Architecture, SBA )。 SBA 可以看成是单体架构微服务架构
    的头像 发表于 05-10 17:02 590次阅读
    从分层<b class='flag-5'>架构</b>到<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>介绍(五)

    springcloud微服务架构

    Spring Cloud是一个开源的微服务架构框架,它提供了一系列工具和组件,用于构建和管理分布式系统中的微服务。它基于Spring框架,旨在通过简化开发过程和降低
    的头像 发表于 11-23 09:24 380次阅读

    docker微服务架构实战

    随着云计算和容器化技术的快速发展,微服务架构在软件开发领域中变得越来越流行。微服务架构将一个大型的软件应用拆分成多个小型的、独立部署的服务
    的头像 发表于 11-23 09:26 310次阅读

    设计微服务架构的原则

    微服务是一种软件架构策略,有利于改善整体性能和可扩展性。你可能会想,我的团队需不需要采用微服务,设计微服务架构有哪些原则?本文会给你一些灵感
    的头像 发表于 11-26 08:05 228次阅读
    设计<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>的原则