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

这里我们依然以Bookinfo应用程序作为贯穿此任务的示例程序。首先在集群中安装并部署Istio。

1  收集遥测数据

创建一个新的YAML文件,用来保存Istio将自动生成和收集的新度量标准和日志流的配置。如下图所示:

通过命令$ kubectl apply -f new_telemetry.yaml推送刚刚配置的YAML文件。然后去请求应用程序来生成流量,例如在本用例中就可以访问Bookinfo完成访问。

接下来我们就可以验证是否采集到了刚刚的请求数据。在Kubernetes环境中,通过执行以下命令为Prometheus设置端口转发:

$ kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=prometheus -o jsonpath='{.items[0].metadata.name}') 9090:9090 &

通过Prometheus UI查看新指标的值。执行对istio_double_request_count度量值的查询。Console选项卡中显示的表 包含类似于以下内容的条目:

验证是否已创建日志流并正在为请求填充日志流。在Kubernetes环境中,搜索istio-telemetry pod的日志,如下所示:

从打印的信息中,我们可以清楚的看到日志级别、生成时间、实例名称、访问组件名称等等信息。

2  遥测配置

在上面的实践中,我们已经完成了Istio收集数据并打印日志的一个过程。

那么Istio是如何做到的呢?其实我们已经给Istio做了配置,指示Mixer自动生成并上报服务网格中采集的metric信息和日志流。在这个配置中我们主要设置了mixer的三个功能:

  • 从Istio的属性中生成实例信息,比如在我们上面的实践中打印的metric和日志信息。

  • 创建出adapter适配器,可以帮助我们处理生成的实例。

  • 根据定义的规则向adapter发送实例信息。

3     metrics配置

配置metrics是为了指示Mixer将metric发送到Prometheus。它使用三个模块来进行配置:实例配置、处理程序配置和规则配置。

metric配置的模块定义了用于生成metric。此实例配置根据Envoy报告的属性(由Mixer自身生成)告诉Mixer 如何为任何给定请求生成metric。

dimensions为每个实例指定一组维度。提供了根据查询的不同需求和方向对metric据进行分片,聚合和分析的方法。例如,可能需要在对应用程序行为进行故障排除时仅考虑对特定目标服务的请求。

4  日志配置

日志配置指示Mixer将日志条目发送到stdout。它同样使用三个模块来进行配置:实例配置,处理程序 配置和规则配置。

logentry配置的部分定义了用于生成日志条目实例。此实例配置告诉Mixer 如何 根据Envoy报告的属性为请求生成日志条目。

severity参数用于指示任何生成的日志级别 logentry。在此示例中,使用了参数值"warning"。此值将由logentry 处理程序映射到支持的日志记录级别。

Timestamp参数提供所有日志条目的时间信息。在此示例中,时间request.time由Envoy 提供的属性值提供。

variables参数允许操作员配置每个值中应包含的值logentry。一组表达式控制从Istio属性和文字值到构成a的值的映射logentry。在此示例中,每个logentry实例都有一个名为latency使用属性值填充的字段response.duration。如果没有已知值response.duration,则该latency字段将设置为持续时间 0ms。

stdio配置定义了处理程序命名newhandler。处理程序spec配置stdio适配器代码处理接收 logentry实例的方式。该severity_levels参数控制字段的logentry 值如何severity映射到支持的日志记录级别。这里,值"warning"被映射到WARNING日志级别。该 outputAsJson参数指示适配器生成JSON格式的日志行。

rule配置定义一个新的规则命名newlogstdio。该规则指示Mixer将所有newlog.logentry实例发送到 newhandler.stdio处理程序。由于match参数设置为true,因此将对网格中的所有请求执行规则。

idou老师教你学Istio :如何用istio实现监控和日志采集的更多相关文章

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

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

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

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

  3. idou老师教你学Istio05: 如何用Isito实现智能路由配置

    要介绍istio请求路由,我们不由得先从pilot 和 envoy开始谈起. 在服务网格中,Pilot管理和配置所有的envoy实例.在pilot中,你几乎可以配置所有的关于流量导向规则及其他故障恢复 ...

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

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

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

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

  6. idou老师教你学Istio 24:如何在Istio使用Prometheus进行监控

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

  7. idou老师教你学Istio 09: 如何用Istio实现K8S Ingress流量管理

    前言 在Istio的世界里,如果想把外部的请求流量引入网格,你需要认识并会学会配置Istio Ingress Gateway 什么是Ingress Gateway 由于Kubernetes  Ingr ...

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

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

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

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

随机推荐

  1. chattr -lsattr 文件加锁解锁简单用法

    chattr: 加锁文件,无修改,无删除权限. 常用参数:        +a:  可给文件追加内容,但无法删除. +i  加锁文件(文件不能被删除.改名.设定链接关系,同时不能写入或追加内容) -i ...

  2. tp查询顺序

    tp竟然可以跟据商品的id来进行排序查询的数据 记一些php中排序: sort()方法一维索引数组进行值升序排序 rsort()方法一维索引数组进行值降序排序 unsort()方法负责编写自定义排序操 ...

  3. Spring hibernate 事务的流程

    1 在业务方法开始之前 ①获取session ②把session和当前线程绑定,这样就可以在Dao中使用SessionFactory的getCurrentSession()方法来获取session了 ...

  4. mnist手写数字检测

    # -*- coding: utf-8 -*- """ Created on Tue Apr 23 06:16:04 2019 @author: 92958 " ...

  5. Idea2018版本建的项目总是找不到主类

    最近更新idea到2018,总是遇见无法加载到主类,刚开始以为是装的过程有什么搞错了,但重装好几遍都是,换成2017又恢复正常,最后发现聪明的同学找到了个偏门可以解决. 那就是先创建文件夹,然后在创建 ...

  6. Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine

      在开发中用到Microsoft.ACE.OLEDB.12.0,但是,出现了Microsoft.ACE.OLEDB.12.0' provider is not registered on the l ...

  7. java将Excel文件上传并解析为List数组

    前端 //导入excel文件 layui.use('upload', function() { var upload =layui.upload; //指定允许上传的文件类型 var uploadIn ...

  8. MD5+DES在C#.NET与Java/Android中的加解密使用

    一.背景后台(C#.NET)使用一个MD5+DES的加解密算法,查了下,很多网友都使用了这个算法.在Android里,也需要这个算法,如何把这个加解密算法切换成Java版,成了难题.毕竟好久没涉及到这 ...

  9. docker swarm英文文档学习-7-在集群中管理节点

    Manage nodes in a swarm在集群中管理节点 List nodes列举节点 为了查看集群中的节点列表,可以在管理节点中运行docker node ls: $ docker node ...

  10. day2-课堂笔记

    #面向对象 函数=方法 系统内建函数:len().id() 对象函数