根据Istio官方报告,Observe(可观察性)为其重要特性。Istio提供非侵入式的自动监控,记录应用内所有的服务。

我们知道在Istio的架构中,Mixer是管理和收集遥测信息的组件。每一次当请求到达的时候,Envoy会调用Mixer进行预检查,在请求处理完毕后也会将过程上报给Mixer。

今天我们会结合开源监控插件(Jaeger)与嵌入Istio服务的应用性能管理服务来为大家展示部分Istio的全景监控能力。

Jaeger

Istio结合Jaeger使用可以解决端到端的分布式追踪问题。2017年Jaeger成为了CNCF(Cloud Native Computing Foundation)的一员。Jaeger主要可以使用在微服务的架构上,来完成分布式的上下文广播,事物监控,根因分析,服务依赖关系的分析等功能。

Jaeger界面简洁,颜色柔和,无过多复杂得元素在内。清晰地在左侧配置项栏中列出了用户需要设置的配置,用户需要选择想观察的服务,观察的时间段以及一些附加功能配置。点击find trace按钮后,所有符合预设条件的Trace都会被展示出来。单机某个Trace则会进入他的调用详情中。

比如从上图中的这个调用,我们就可以看出来当请求抵达productPage时,会产生两个子访问,一个去调用了details组件,另一个则去调用了reviews组件。每个Span则是体现了调用父子关系和调用持续时间,简明扼要的提供了用户关心的信息。对于收集此类监控信息,设定合适的采样频率是十分有必要的,这样一来避免了过度监控造成的数据冗余和性能影响,另一方面也避免了监控样本过少,不能足够支撑分析的情况。调整采样率可以通过Helm模板中的values.yaml对其中的traceSampling进行修改,再进行服务网格的创建。

对于运行中的服务网格,则可以对deployment istio-pilot进行修改。

Kubectl edit deployment istio-pilot 搜索并修改PILOT_TRACE_SAMPLING这个属性。

2  APM(应用性能管理)

华为云Istio服务为了方便用户了解自己应用和集群的工作状态,也在服务界面添加了监控的功能。与其他监控插件相同的是,用户依然不需要对自己代码进行任何改动和重构,直接可以使用监控服务。首先在监控概览页面可以看到应用状态,异常相应统计,时延统计以及应用拓扑图。

  • 应用概览展示的是应用的就绪状况,是否有应用未就绪或异常状态可以直观反映,异常相应和超长请求时延则展示租户下所有组件中异常数较大和时延较高的几个组件。

  • 拓扑图则展示的是应用中的访问,调用关系,以及相应的平均时延。除此之外,每个组件可以展开,看到组件中实例的工作状态。对于因延时影响或者是中断相应会有相应的连线表达方式。

点击拓扑图上任意一个组件亦或是点击异常相应与超长请求时间上的任何一个组件都可以进入流量概况页。流量概况页主要是以数字的形式展示流量情况。

针对该组件的请求总数,错误技术,平均时延和最大时延都会以数据的形式直接传递给使用者。

  • 流量监控中也包含了调用链信息。相比Jaeger,这里的调用链多了持久化的一层,可以查阅时间段更宽的数据。

随着微服务趋势的发展,越来越多的应用在架构阶段就已经解耦成多个组件,越是对于组件多的应用,监控信息就显得越发重要。精准,正确的监控信息不仅能够第一时间帮助运维人员发现并定位应用中的问题,而且还能够通过既往的数据来支持运维人员进行资源的合理分配与调度。

Istio全景监控与拓扑的更多相关文章

  1. idou老师教你学Istio 20 : Istio全景监控与拓扑

    根据Istio官方报告,Observe(可观察性)为其重要特性.Istio提供非侵入式的自动监控,记录应用内所有的服务. 我们知道在Istio的架构中,Mixer是管理和收集遥测信息的组件.每一次当请 ...

  2. 业务驱动的全景监控体系在阿里的应用 | 阿里巴巴DevOps实践指南

    编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...

  3. idou老师教你学Istio :如何用istio实现监控和日志采集

    大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等功能.每一个功能都帮助我们在不同场景中实现不同的业务.那Istio是如何帮助我们实现监控和日志采集的呢? 这里我们依然以Bookinf ...

  4. idou老师教你学Istio 25:如何用istio实现监控和日志采集

    大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等功能.每一个功能都帮助我们在不同场景中实现不同的业务.那Istio是如何帮助我们实现监控和日志采集的呢? 这里我们依然以Bookinf ...

  5. idou老师教你学Istio 26:如何使用Grafana进行可视化监控

    使用Grafana插件进行监控是Istio提供的监控能力之一.Istio提供丰富的监控能力,Grafana插件在Istio对Prometheus支持的基础上,为用户提供基于网页仪表面板的可视化监控效果 ...

  6. 云原生 - Istio可观察性之监控(四)

    作者:justmine 头条号:大数据与云原生 微信公众号:大数据与云原生 创作不易,在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处. 为了方便阅读,微信公众号已按分类排版,后续的文 ...

  7. Istio

    什么是Istio Istio是Service Mesh(服务网格)的主流实现方案.该方案降低了与微服务架构相关的复杂性,并提供了负载均衡.服务发现.流量管理.断路器.监控.故障注入和智能路由等功能特性 ...

  8. Istio 是什么?

    使用云平台可以为组织提供丰富的好处.然而,不可否认的是,采用云可能会给 DevOps 团队带来压力.开发人员必须使用微服务以满足应用的可移植性,同时运营商管理了极其庞大的混合和多云部署.Istio 允 ...

  9. 云容器云引擎:容器化微服务,Istio占C位出道

    在精彩的软件容器世界中,当新项目涌现并解决你认为早已解决的问题时,这感觉就像地面在你的脚下不断地移动.在许多情况下,这些问题很久以前被解决,但现在的云原生架构正在推动着更大规模的应用程序部署,这就需要 ...

随机推荐

  1. centos中,tomcat项目创建文件的权限

    参考文章:https://cloud.tencent.com/info/5f02caa932fd6dbfc46a3bb01af135e0.html 我们在centos中输入umask,会看到输出002 ...

  2. C语言实现输出杨辉三角

    1.倒推法实现输出杨辉三角右半部分,代码如下: #include<stdio.h> int main() { ]; printf("请输入行数n:"); scanf(& ...

  3. Alpha事后诸葛亮(阳光普照队)

    Alpha事后诸葛亮 设想和目标 1.实现文字识别,以用户喜欢的图片做背景将其保存,生成新的图片. 2.时间比较赶,主要是因为队员对于Android开发方面的了解不多,可以说是几乎没有,需要一步一步的 ...

  4. svn: 无法连接主机“127.0.0.1”: 拒绝连接

    尝试搭建SVN服务器,前面的步骤都OK,服务已经启动, svnserve -d --listen-port 80 --listen-host 0.0.0.0 -r /data/nerrissa/svn ...

  5. os.path.md

    os.path 我们可以利用os.path模块提供的函数更容易地在跨平台上处理文件. 即使我们的程序不是用于夸平台, 也应该使用os.path来让路径名字更加可靠. Parsing Paths os. ...

  6. swift protocol的几种形式

    三个关注点:1.形式:2.实现方式:3.使用方式: 一.基本形式: 形式:内部无泛型类型: 实现:只需指定类型和实现相应的功能即可: 使用:可以用在其他类型出现的任何地方: protocol Resp ...

  7. oneinstack远程管理数据库

    本篇文章主要内容是本地工具连接数据非网页(网站)连接 如果你想使用网页(网站)连接远程数据库,请看下面的官网教程 OneinStack如何配置MySQL远程连接? 为了安全考虑,OneinStack仅 ...

  8. python内置模块

    time--时间模块 时间三大类: 时间戳 time.time() 结构化时间(年月日时分秒 一周内第几天,一年内第几天,是否夏令时) time.localtime()  time.gmtime() ...

  9. [转]深入理解MFC中程序框架

    最近抽空复习了一下MFC的内容,觉得一篇博文写的不错. 原文内容太多直接给出链接吧:深入理解MFC中程序框架 链接2:深入浅出话VC++(2)——MFC的本质 链接3:MFC单文档/视图结构穷追猛打

  10. STL 2—迭代器相关运算——advance(),distance(),next(),prev()

    迭代器的头文件中定义了4个实现迭代器模板的函数模板. 1.advance(iterator,num):将迭代器iterator 移动了num个位置 2.distance(iterator1,itera ...