通过了一年多的开发和测试,istio 于北京时间7月31日发布了1.0版本,而且宣布1.0版本已经能够成熟的应用于生产环境。对于 istio 的各项主要功能,以前的文章已经介绍的很是详细,而且还会有更多的文章来分析原理和实践功能。今天咱们主要介绍的服务是 istio 流量监控能力。架构
咱们知道每一个 pod 内都会有一个 Envoy 容器,其具有对流入和流出pod的流量进行管理,认证,控制的能力。Mixer 则主要负责访问控制和遥测信息收集。app
Prometheus 是一款开源的监控和告警系统,2016年加入 CNCF,以其灵活的检索语言,高效的数据存储方式以及多维度的数据模型使得愈来愈多的人使用。Istio 自0.8开始就默认的将 Prometheus 包含在内,咱们能够经过查询 service 或者 pod 看到普罗的运行状态和地址。点开 Prometheus 界面,UI 十分简洁明了。curl
istio_requests_total
,点击 Execute,在图形界面中,将鼠标放到图中的折线能够看到请求的详细信息。
Istio 配合 jaeger 能够解决端到端的分布式追踪问题。Jaeger 于2017年9月成为 CNCF 的成员。Jaeger 是一款开源的分布式追踪系统,由 Google Dapper 和 OpenZipkin 社区联合推进。分布式
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%而且稍等片刻。使用相同的脚本 curl 10次 product page,再点击 Find trace,如今总共有20个 Trace,也就是先前的10个 trace 加上后来 curl 的10次,证实 PILOT_TRACE_SAMPLING
修改完毕会采集全部的请求。性能
在组件详情界面中除去 CPU 使用率,内存使用这种基本的监控外,华为云提供了另外两项简明流量监控,分别是 RPS (平均处理请求次数)和 RT(平均响应时延)。RPS 以分钟基本时间单位,纵轴则以处理请求次数为单位,用户能够直观的看到本身的应用单位时间内须要处理的请求数量。若 RPS 太高,则用户能够适当的采用相应措施,报障请求的高效处理。测试
Istio提供不少即插即用的服务,用户不须要修改本身的代码,也不须要从新构建本身的应用即可以直接享用istio带来的“红利”。可视化的监控服务,可修改的监控内容,能够更好地让用户了解本身应用的工做状态。本文只介绍了入门级的istio监控内容,除上文内容外,监控服务还有更多的功能等待用户去研究和使用。Istio就像一座金矿,而金子只属于勤奋的淘金工人。优化