使用Prometheus进行监控是Istio提供的监控能力之一。Istio提供丰富的监控能力,为网格中的服务收集遥测数据。Mixer是负责提供策略控制和遥测收集的Istio组件。

Istio通过Mixer实现流量监控的基本流程如下图:每个pod内有一个service和proxy,Envoy容器实现proxy功能,对流入和流出pod的流量进行管理、认证和控制。Mixer则主要负责访问控制和遥测信息收集。当某个服务被请求时,首先会请求istio-policy服务,来判定是否具备访问资格,若具备资格则放行,反之则请求不会被下发到服务。这一切的访问信息,都会被记录在Envoy中,之后会上报给Mixer作为原始数据,并生成具体的监测指标。

Figure 1 mixer拓扑

Mixer配合一系列后端基础设施,为运维提供丰富而深入的控制和监测,并且不额外增加服务开发人员负担。后端提供用于构建服务的支持功能,访问控制系统,遥测捕获系统,配额执行系统,计费系统等。Mixer开放了Istio服务与不同的基础设施后端的交互能力,隔离用户程序和各个基础设施后端的实现细节。Istio通过丰富组件的边界交互,减少系统复杂性,消除服务代码中的策略逻辑并将控制权交给运维。

Mixer处理不同基础设施后端的是通过使用通用插件模型实现的。每个插件都被称为 Adapter,Mixer通过它们可对接到不同的基础设施后端,这些后端可提供日志、监控、配额、ACL检查等核心运维功能。这些功能灵活可控,你既可以定制新的基础设施后端,也可以完全禁用这些功能。

Figure 2 mixer 及其适配器

Prometheus是一款开源的监控和告警系统,将所有信息存储为时间序列数据,实现监控方式,实时分析系统运行的状态、执行时间、调用次数等,以找到系统的热点,为性能优化提供依据。Prometheus系统自2016年加入CNCF,以其灵活的检索语言,高效的数据存储方式以及多维度的数据模型被越来越多的人使用。Istio自0.8版本开始默认将Prometheus包含在内,Mixer支持对接到Prometheus监控设施的Adapter。用户可以通过查询service或pod看到Prometheus的运行状态和地址。也可以通过简洁明了的Prometheus的UI界面查看监测数据。

接下来通过实践说明如何使用Prometheus查询Istio指标,使用基于网页的界面进行指标查询。

1.验证Prometheus是否在集群中运行(默认情况下Prometheus的设置包含在istio.yaml和istio-demo-auth.yaml中)。在安装istio的Kubernetes环境中,执行如下命令:

2.通过浏览器访问http://localhost:9090/graph,在网页顶部的“Expression”输入框中,输入要查询的命令,Prometheus能够根据输入自动提示可输入的命令,然后单击 Execute 按钮。

1) 查询所有服务的请求总数:istio_request_bytes_count

2) 查询指定服务的请求总数:(如查询对 productpage 服务的所有请求的总数)istio_request_bytes_count{destination_service="productpage.default.svc.cluster.local"}

3) 查询指定时间范围内对指定服务的请求总数:(如查询过去5分钟内对所有 productpage 服务的请求率)

istio_request_bytes_count {destination_service=~"productpage.*", response_code="200"}[5m])

如下图,Prometheus在图形界面中也提供了直观的显示。将鼠标放到图中的折线可以看到请求的详细信息,详细信息中的每一项都可以作为选定参考指标的特性。

同时Istio支持和允许用户自己定义新的遥测数据,用户可以自定义需要的监控指标进而再使用Prometheus查看监控数据结果。

Istio通过mixer组件无缝对接Prometheus监控服务,满足用户对路由网关、应用服务、资源使用以及自定义指标等实时监控,帮助用户在使用istio的过程中,快速实现对关键业务的运维需求。

相关服务请访问https://support.huaweicloud.com/cce/index.html?cce_helpcenter_2019

idou老师教你学Istio 24:如何在Istio使用Prometheus进行监控的更多相关文章

  1. idou老师教你学Istio11 : 如何用Istio实现流量熔断

    在之前的最佳实践中,已经带大家通过一系列的实践任务领略了Istio的无穷魅力.今天,将向大家介绍如何用Istio实现流量熔断. 熔断机制是创建弹性微服务应用程序的重要模式.熔断可以帮助您自由控制故障影 ...

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

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

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

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

  4. idou老师教你学istio1:如何为服务提供安全防护能力

    之前,已为大家介绍过 Istio 第一主打功能---连接服务. 凡是产生连接关系,就必定带来安全问题,人类社会如此,服务网格世界,亦是如此. 今天,我们就来谈谈Istio第二主打功能---保护服务. ...

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

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

  6. idou老师教你学istio :基于角色的访问控制

    istio的授权功能,也称为基于角色的访问控制(RBAC),它为istio服务网格中的服务提供命名空间级别.服务级别和方法级别的访问控制.基于角色的访问控制具有简单易用.灵活和高性能等特性.本文介绍如 ...

  7. idou老师教你学Istio 17 : 通过HTTPS进行双向TLS传输

    众所周知,HTTPS是用来解决 HTTP 明文协议的缺陷,在 HTTP 的基础上加入 SSL/TLS 协议,依靠 SSL 证书来验证服务器的身份,为客户端和服务器端之间建立“SSL”通道,确保数据运输 ...

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

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

  9. idou老师教你学Istio:如何用 Istio 实现速率限制

    使用 Istio 可以很方便地实现速率限制.本文介绍了速率限制的使用场景,使用 memquota\redisquota adapter 实现速率限制的方法,通过配置 rule 实现有条件的速率限制,以 ...

随机推荐

  1. iOS从App跳转至系统设置菜单各功能项

    跳到系统设置里的WiFi界面 info里面设置: 在项目中的info.plist中添加 URL types 并设置一项URL Schemes为prefs,如下图 代码: 复制代码 代码如下: NSUR ...

  2. 《Django企业开发实战 高效Python Web框架指南》胡阳

    链接:https://pan.baidu.com/s/1NmN_IT5RvevCMt9bZCW1-g提取码:2ki9

  3. python爬取网页数据方法

    """#最基本,请求地址无参数# response=urllib.request.urlopen("https://www.scetc.edu.cn" ...

  4. Linux系统终端常用配置文件更改

    目录列表: 1.alias别名永久保存 2.解决vim文件没有颜色的问题 3.vim插件supertap插件安装(可支持自动补全,非函数代码补全,仅支持在当前编辑文档内补全) 4.vim插件管理 5. ...

  5. kali安装chrome

    文章搬到自己的网站上,如下: http://101.132.137.140:202/archives/2019-11-25

  6. 【VS开发】【数据库开发】libevent windows下基于VS2010的编译

    libevent是一个常用的网络库,下面就看看在windows下面编译测试的过程吧. 一 环境 系统:win8.1编译器:VS2013官方下载地址:http://libevent.org/版本:2.0 ...

  7. css3 float排序问题

    css3 float排序问题 有时候发现 会错位 那是因为有个图片大小不一致才会这样 所以要确保每个图片一样

  8. Hbuider APP打包流程

      1,下载HBuilder,注册并登陆.首先打开“文件”-“新建”-“移动APP”,输入“应用名称”,“位置”可以根据需要自己选择即可,“选择模板”建议选择空模板: 2,新建完成后, 在项目管理器会 ...

  9. 90%程序员都没有完全答对Cookie和Session的区别

    我在做面试官的时候,曾经问过很多朋友这个问题: Cookie 和 Session 有什么区别呢?大部分的面试者应该都可以说上一两句,比如:什么是 Cookie?什么是 Session?两者的区别等. ...

  10. # VsCode 配置C++调试运行

    VsCode 配置C++调试运行 打开命令面板快捷键为F1,软件上写的Ctrl+Shift+P似乎没用 先安装插件使得可以运行 先自行在vsc扩展中搜索C++安装C/C++插件 再参考知乎专栏中安装c ...