经过了一年多的开发和测试,Istio于北京时间7月31日发布了1.0版本,并且宣布1.0版本已经可以成熟的应用于生产环境。对于istio的各项主要功能,之前的文章已经介绍的非常详细,并且还会有更多的文章来分析原理和实践功能。今天我们主要介绍的服务是istio流量监控能力。
我们知道每个pod内都会有一个Envoy容器,其具备对流入和流出pod的流量进行管理,认证,控制的能力。Mixer则主要负责访问控制和遥测信息收集。如拓扑图所示,当某个服务被请求时,首先会请求istio-policy服务,来判定是否具备访问资格,若具备资格则放行反之则请求不会被下发到服务。这一切的访问信息,都会被记录在Envoy中,之后会上报给mixer作为原始数据。

遥测数据的收集及其他功能完全是灵活可控的,你既可以配置新的收集指标和日志,也可以完全禁用这些功能。

  1. Prometheus的应用和指标介绍
    Prometheus是一款开源的监控和告警系统,2016年加入CNCF,以其灵活的检索语言,高效的数据存储方式以及多维度的数据模型使得越来越多的人使用。Istio自0.8开始就默认的将Prometheus包含在内,我们可以通过查询service或者pod看到普罗的运行状态和地址。点开Prometheus界面,UI十分简洁明了。

    用户在Expression内输入想要查询数据的表达式,并且再输入的过程中,普罗还会在已有的指标中做出提示方便用户查找。我们输入一个简单的查询表达式istio_requests_total,点击Execute,在图形界面中,将鼠标放到图中的折线可以看到请求的详细信息。

    详细信息中的每一项都可以作为选定参考指标的特性,例如我们需要查询返回值为200的productpage请求总数,就可以在之前的表达式中添加大括号和限定条件。

    Istio支持和允许用户自己定义新的遥测数据,并且在官网->任务->遥测->收集指标和日志中有详细的描述。用户可以自定义需要的监控指标进而可以再普罗查看监控数据结果。
  2. Jaeger UI的使用和介绍。
    Istio配合jaeger可以解决端到端的分布式追踪问题。Jaeger于2017年9月成为CNCF的成员。Jaeger是一款开源的分布式追踪系统,由Google Dapper和OpenZipkin社区联合推动。

    Jager主要可以使用在微服务的架构上来完成分布式上下文广播,分布式事务监控,根因分析,服务依赖关系分析,性能/延迟优化等功能。

    Jaeger的界面极其简洁,在首页面选择你想了解的服务(productpage)以及选择你想观测的时间范围(过去两天),而后点击find trace按钮,页面就会显示过去两天内访问productpage的所有trace。点击trace的名字,则会跳转到详情界面。

    这个界面中你可以看到每个请求可能会分为不止一个的子请求,以及这个请求的处理时间。例如我们访问productpage,productpage会请求details和reviews这两个服务,那么初始的请求就会分为两个子请求,一个请求details的内容另一个请求reviews的内容。Details部分的请求总耗时4.99ms,reviews部分的请求耗时5.61ms。内容返回并处理后,整个productpage的请求耗时21.32ms。这个详情界面不仅会体现每个请求的耗时也反映服务之间的调用关系。根据istio官方给出的解释,我们知道istio proxy根据http部分headers来归纳和合并请求的。

    对于一个结构复杂,流量庞大的服务网格,追踪所有的调用不但不利于收集有效数据,还会造成冗余,浪费资源等问题,所以在制定监控服务的时候也需要去设定其采样频率。对于Bookinfo这种示例型应用,我们的采样率可以设的高一点,对于大型应用就要进行适当的降低。调整采样率一共有两种方式。
    • 在创建服务网格之前,我们可以提前设定好采样频率,在Helm模板的values.yaml文件中,pilot内的traceSampling属性可以对采样频率进行修改。

    打开istio/chart/pilot/templates/deployment.yaml可以看到一个简单的赋值过程。

    • 正在运行的服务网格,对deployment istio-pilot进行编辑。首先查看所有的deployment:

    然后对其进行编辑,搜索PILOT_TRACE_SAMPLING这个属性,并对其值进行修改:

    我们先打开jaeger UI确定过去一个小时没有任何对productpage的访问。

    而后将PILOT_TRACE_SAMPLING的值从原有的100改为50。修改并保存后会有提示信息显示istio-pilot已经被修改。

    稍等片刻后,我们使用脚本curl productpage 10次。再次在jaeger UI上选择productpage选择过去一小时,点击Find Trace,会发现这次只检测到4个trace。我们在用相同的脚本再运行一次,发现检测到10个trace。至此我们一共curl product page 20次总共获得10次 trace,符合总次数的50%。

    现在我们用相同的方法,将PILOT_TRACE_SAMPLING改为100%并且稍等片刻。使用相同的脚本curl10次product page,再点击Find trace,现在总共有20个Trace,也就是先前的10个trace加上后来curl的10次,证明 PILOT_TRACE_SAMPLING修改完毕会采集所有的请求。
  3. 华为云istio服务中简明监控介绍
    在组件详情界面中除去cpu使用率,内存使用这种基本的监控外,华为云提供了另外两项简明流量监控,分别是RPS(平均处理请求次数)和RT(平均响应时延)。RPS以分钟基本时间单位,纵轴则以处理请求次数为单位,用户可以直观的看到自己的应用单位时间内需要处理的请求数量。若RPS过高,则用户可以适当的采用相应措施,报障请求的高效处理。

    RT也是以分钟为单位,但是纵轴则是该时间段内平均的请求响应时间。如果个别时间段请求时延过高,用户则需要对自己服务进行分析。

    组件详情这个界面更多的还是提供一个粗粒度的流量监控,将应用的工作关键信息最直接,最明确的呈现给用户。方便用户对自己的应用,资源,服务规划进行调整和改进。在今后,华为云会提供维度更多的监控,分析等服务。
    Istio提供很多即插即用的服务,用户不需要修改自己的代码,也不需要重新构建自己的应用便可以直接享用istio带来的“红利”。可视化的监控服务,可修改的监控内容,可以更好地让用户了解自己应用的工作状态。本文只介绍了入门级的istio监控内容,除上文内容外,监控服务还有更多的功能等待用户去研究和使用。Istio就像一座金矿,而金子只属于勤奋的淘金工人。

转载于:https://blog.51cto.com/13831707/2173876

idou老师教你学istio:监控能力介绍相关推荐

  1. idou老师教你学Istio 07: 如何用istio实现请求超时管理

    在前面的文章中,大家都已经熟悉了Istio的故障注入和流量迁移.这两个方面的功能都是Istio流量治理的一部分.今天将继续带大家了解Istio的另一项功能,关于请求超时的管理. 首先我们可以通过一个简 ...

  2. idou老师教你学Istio 27:解读Mixer Report流程

    1.概述 Mixer是Istio的核心组件,提供了遥测数据收集的功能,能够实时采集服务的请求状态等信息,以达到监控服务状态目的. 1.1 核心功能 •前置检查(Check):某服务接收并响应外部请求前 ...

  3. idou老师教你学Istio 04:Istio性能及扩展性介绍

    Istio的性能问题一直是国内外相关厂商关注的重点,Istio对于数据面应用请求时延的影响更是备受关注,而以现在Istio官方与相关厂商的性能测试结果来看,四位数的qps显然远远不能满足应用于生产的要 ...

  4. idou老师教你学Istio: 如何用Istio实现K8S Egress流量管理

    本文主要介绍在使用Istio时如何访问集群外服务,即对出口流量的管理. 默认安装的Istio是不能直接对集群外部服务进行访问的,如果需要将外部服务暴露给 Istio 集群中的客户端,目前有两种方案: ...

  5. idou老师教你学Istio06: 如何用istio实现流量迁移

    流量迁移是流量管理的一个重要功能.istio提供的流量管理功能将流量从基础设施扩展中解耦,支持动态请求路由,故障注入.超时重试.熔断和流量迁移等.流量迁移的主要目的是将流量从微服务的某一版本的逐步迁移 ...

  6. httos双向认证配置_idou老师教你学Istio 15:Istio实现双向TLS的迁移

    本文由华为云容器Istio团队撰稿,未经允许谢绝转载. 众所周知,HTTPS是用来解决 HTTP 明文协议的缺陷,在 HTTP 的基础上加入 SSL/TLS 协议,依靠 SSL 证书来验证服务器的身份 ...

  7. dbnetlib不存在或拒绝访问_idou老师教你学Istio 16:如何用 Istio 实现微服务间的访问控制...

    本文由华为云容器Istio团队撰稿,未经允许谢绝转载. 摘要 使用 Istio 可以很方便地实现微服务间的访问控制.本文演示了使用 Denier 适配器和黑白名单两种方法. 使用场景 有时需要对微服务 ...

  8. GAF运维监控能力介绍

    GAF运维监控能力介绍 上一篇文章对GAF的工作流进行详细介绍,接下来就介绍系统运维监控相关的能力. 在运维监控方面,提供微服务配置中心.后端微服务路由配置.前端微应用路由配置,用于支持后端微服务和前 ...

  9. tree老师:每天五分钟教你学命令第1期

    本文由xiao_dou友情整理 点击标题下「蓝色微信名」可快速关注 在公司工作,我们第一个应该学会的命令,就是帮助命令,在遇到一些不懂的命令的时候可以使用man命令去查看man-pages文档. ma ...

最新文章

  1. leetcode算法题--Triangle
  2. Java集合框架:WeakHashMap
  3. 转,Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数
  4. ssl1624-小萨的烦恼【图论,最短路,Floyd】
  5. php中嵌套调用的原理,嵌套调用
  6. python 40位的数减个位数_Python数据分析入门教程(五):数据运算
  7. 用三角函数正交坐标系计算三角级数(傅里叶级数)
  8. java动态数组的实现的_基于Java的动态数组分析与实现
  9. java方法第一次执行比较慢,为什么第一次在Java中调用方法时会出现运行时开销?...
  10. CentOS5.5下SVN部署文档
  11. 卷积神经网络中feature map的含义
  12. Android Audio System 架构初探(好文)
  13. 单片机开发板的入门学习
  14. Spring boot集成RabbitMQ(山东数漫江湖)
  15. Wikidata知识图谱介绍与数据处理
  16. 将一个Excel中的数据导入DataGrid中
  17. 提升方法(Boosting)
  18. php715 configure
  19. 递归:汉罗塔问题的程序实现
  20. 【转】中国地理的几个概念

热门文章

  1. LeetCode Lowest Common Ancestor of a Binary Search Tree (LCA最近公共祖先)
  2. Linux下的Notepad++编辑器——Notepadqq
  3. 关于“工作组管理员”
  4. 大数据之-Hadoop3.x_Yarn_全流程作业---大数据之hadoop3.x工作笔记0143
  5. C++提高部分_C++类模板对象做函数参数---C++语言工作笔记090
  6. Git工作笔记003---Git常用命令总结
  7. security工作笔记004---.NET Web安全性-身份验证和授权(一)之Principal
  8. EJB3.0异常总结---Exception in thread “main“ javax.naming.NameNotFoundException: StatelessEjbBean not bou
  9. 一个普通买房者亲历的房价跳涨事件
  10. Face alignment at 3000 FPS via Regressing Local Binary Features