利用鸿鹄可观测性监控Istio Ingress网关

这篇具有很好参考价值的文章主要介绍了利用鸿鹄可观测性监控Istio Ingress网关。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、需求描述

在上一篇《利用Vector和鸿鹄搭建微服务应用的可观测性平台》中,阐述了微服务的基本概念、优点及如何利用鸿鹄来处理分布式应用的日志。本文将进一步讨论微服务架构面临的问题、服务网格及鸿鹄处理Istio Gateway的独特优势。

1.1 微服务架构面临的挑战

1.1.1 云基础设施并不总是可靠

无论是公有云还是私有云,都由成千上万的硬件和软件构成。理论上,或多或少存在不可用的组件。而我们的微服务一般会部署在云上,工程师在构建微服务时,一般都会假设基础设施是非永久的且部分基础设施甚至是不可用状态。所以在架构中,必须前瞻性地考虑云基础设施的非永久性特征。

1.1.2 必须确保服务之间通信的弹性

因为云基础设施的不可靠性,在设计微服务系统的时候,需要考虑服务本身的弹性,确保部分基础设施不可用的情况下,还能持续对外提供服务。业界目前一般有如下的解决方案:

  • 客户端负载均衡: 提供多个服务端点,由客户端决定如何调用

  • 服务发现机制:定期的更新健康的服务端点

  • 短路:对于非正常的服务,实施一定时间的隔离

  • 限制措施:对连接数、线程数、会话数等进行限制

  • 超时:对API请求的时长,设置超时机制

  • 重试及重试控制:失败重试及限制最大重试次数或一定时间范围内的重试次数

  • 请求有效期限:如果请求返还超时,则丢弃,不做进一步处理

1.1.3 实时了解系统状态

我们需要实时的知道服务之间的调用关系、某个典型服务当前的负载、失败是否在预期之内、如果服务挂了系统如何表现等。总的来说,运营一个微服务平台,除了微服务本身,利用指标类数据、日志、追踪来把握整个系统的全局是必不可少的一环。

1.2 传统的解决方案:应用程序库

早期的时候,为了解决如上的问题,业界一般采用应用程序库(如下),以方便开发人员快速地开发和实现非功能性的需求,但带来的坏处是应用程序必须和某个语言绑定。

  • Hystrix:用于短路及限流

  • Ribbon:用于客户端负载均衡

  • Eureka:服务注册和发现

  • Zuul:动态服务代理

1.3 现代的解决方案:服务网格

服务网格是一种透明的、独立于程序之外的、用于处理网络通信的分布式基础设施,它由数据平面和控制平面所组成,如下图所示:

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

微服务架构集成服务网格后,对日志收集和监控也带来了进一步要求;分析上述拓扑图,我们需要收集对应的Istio Proxy日志及进一步做关联分析,经过了解,这也是鸿鹄平台所擅长的。

二、解决方案

2.1 系统架构

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

相比于上一篇《利用Vector和鸿鹄搭建微服务应用的可观测性平台》, 此方案引入了Istio服务网格的概念,除了采集应用程序本身的日志之外,需要采集Istio Ingress Gateway和Istio Proxy的日志,以得到对全局服务网格的洞察性。

2.2 数据接入

鸿鹄具备多种数据接入功能,内置的Vector和Kafka数据接入功能,大大方便了企业收集数据,导入鸿鹄分析平台进一步挖掘数据价值的便利性。基于以上的采集系统,具体操作步骤如下:

2.2.1 启用鸿鹄数据收集接口

2.2.1.1 进入:鸿鹄 -> 数据导入 -> 从外部数据源导入

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

2.2.1.2 配置Vector接口,选择数据集范围

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

2.2.1.3 选择数据集和数据源类型,生成和下载Vector配置模版,以备后续配置Vector使用

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

2.2.2 配置及安装Vector

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

按照Vector的设计(如上图),Data Pipeline分为三个阶段:确定数据源、对数据做转换和数据汇集。以下是实际运行的配置文件(考虑到信息安全性,对部分做了脱敏处理)。

这个配置主要包含了确定采集的数据源、数据如何被加工转换(多行处理、如何进一步解析和抽取数据、丰富数据以满足鸿鹄的需求)和数据最终汇集到鸿鹄,相信大家不难理解。

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

有了Vector的配置文件,就可以安装Vector了。本文的方案需要采集运行在Kubernetes上的微服务的日志,Vector将会用Helm命令来安装,具体命令如下:

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

如果需要详细了解Vector Helm chart,可参考 Vector Helm Chart(https://github.com/vectordotdev/helm-charts/tree/develop/charts/vector)

2.3 数据加工

2.3.1 创建数据源

鸿鹄系统提供了常用的数据源类型,比如json、csv、nginx、syslog等,以方便用户开箱即用地接入数据。本文提到的Istio Ingress Gateway网关本身是基于Envoy实现的,为了更好的说明后续步骤,让我们首先来介绍下Istio Gateway日志的格式。

根据文档 Envoy Access Log(https://istio.io/latest/docs/tasks/observability/logs/access-log/),默认格式如下:

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

根据如上的信息,Envoy的日志包含了丰富的信息,为了后续方便分析和处理,需要单独创建数据源,如下图。

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

2.3.2 字段加工

字段加工是鸿鹄的核心功能,也就是在读时模式下,对字段进行进一步抽取和丰富,以满足各种业务部门对同一数据以不同视角分析的需要。那接下去以Envoy Access Log为例,看看鸿鹄是怎么做的。

2.3.2.1 打开高级搜索窗口

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

从搜索窗口可以看到,此数据包含266279条数据,因为没有对数据进行读时抽取,共用0.9s时间。

2.3.2.2 点击 “抽取新字段”,进入字段抽取向导页面

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

2.3.2.3 编辑正则表达式,抽取所需的字段

选择抽取规则为正则抽取,正则表达式如下图所示

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

按向导保存抽取规则,即可看到数据源类型增加了一条读时抽取规则。

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

2.3.2.4 支持多重可持续抽取

鸿鹄系统支持多重可持续性抽取,也就是基于新字段的基础上,可以再抽取再产生字段,比如拿UserAgent字段来说,可以再抽取,获取user_agent_os、user_agent_os_version、user_agent_name、user_agent_version等新字段。能够在读时支持字段多重可持续抽取,鸿鹄在这块应该是属于一枝独秀的。

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

2.3.2.5 验证读时抽取规则

打开高级搜索, 我们可以看到同样的数据规模,搜索时间有一定的增加,但期望的字段已经成功抽取,可以进一步分析和形成所需仪表盘。

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

2.4 数据展示

2.4.1 查询加速

前面数据加工部分,我们讲述了如何利用鸿鹄的读时建模机制来动态抽取字段。在数据展示环节,大概率会对同一数据源做搜索,这样就会大概率降低页面展现的效果。鸿鹄系统充分地考虑这一点,提供了几种机制来提高搜索加速。本文会比较细致的讲述预存查询功能。

创建预存查询

进入高级查询  --> 查询 --> 点击“另存为” --> 选择预存查询, 注意红框部分

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

从预存查询中搜索

进入高级查询  --> 利用saved_search表函数从预存查询中进行查询。

从结果来看,利用预存查询,性能提高了4-5倍。

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

2.4.2 展示效果

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

利用鸿鹄可观测性监控Istio Ingress网关,istio,云原生,大数据,信息可视化

三、鸿鹄价值

鸿鹄平台提供了一整套从数据导入、二次加工及仪表盘快速生成的一整套解决方案,方便用户能快速构建监控平台。本文着重提到的几个核心功能,围绕数据工程师的日常工作,对数据收集、收据探索、数据展示做了高度封装和抽象,减少了使用者的门槛。

3.1 技术优势

自建数据源类型:在大数据领域,存在各种半结构化和非结构化的数据,每一个数据源类型,对应的处理逻辑不尽相同。鸿鹄允许用户非常方便地定义特有的数据源类型,且对每个类型可以灵活定义ingest time和search time的抽取规则。

读时模式:满足了基于同一数据源,不同视角审视的需求。大大地减轻了数据采集端的复杂度。功能上,鸿鹄可满足不同机制的抽取规则,从简单的JSON规则、键值对规则到复杂的正则抽取规则。

查询加速:在数据展示阶段,考虑到用户大概率会对同一数据同时做查询,必然会牺牲性能的前提下,鸿鹄提供了一系列加速查询的方案,以提高页面展示的效果。

3.2 应用价值

精确定位问题,提高开发效率:比如本次使用中,我们对浏览器类型做了分析,发现某一个浏览器类型名字有错误,汇报给开发人员后,结合鸿鹄的日志,开发人员很快定位了问题,及时修复了客户端类型名字错误。

即时监控Envoy网关, DevOps团队能精确的掌握进出站的相关流量指标和访问异常信息。

四、期待的改善

本文体验了鸿鹄几个高级核心功能,能够非常方便地满足业务的需求。从个人角度来看,以下几个部分觉得可以改善以提高用户的友好性:

  • 数据抽取正则规则:自动划取字段和手工输入,这两个功能可以合并在一个功能页面上,减少用户切换操作页面。

  • 数据抽取正则表达式性能:鸿鹄社区中提供了高效正则表达式匹配文档来指导用户更高效地使用正则来做数据加工,避免正则性能陷阱。对于用户,我们期待的更多。非常期望,在将来的版本中,鸿鹄本身就可以对正则进行分析,以辅助用户修正性能不高的表达式,从而提供使用的友好性。

  • 更多的案例支撑加速查询的最佳实践:物化试图和预存查询是鸿鹄系统提供两个加速查询的高级功能,在初次使用过程中,比较难以取舍该用哪个方案来加速查询。相信随着社区的发展,会有越来越多的实际案例来指导用户在这个环节的最佳实践。文章来源地址https://www.toymoban.com/news/detail-622710.html

到了这里,关于利用鸿鹄可观测性监控Istio Ingress网关的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生 | 从零开始学istio】五、istio灰度发布以及核心资源

    灰度发布也叫金丝雀发布 ,是指通过控制流量的比例,实现新老版本的逐步更替。 比如对于服务 A 有 version1、 version2 两个版本 , 当前两个版本同时部署,但是 version1 比例 90% ,version2 比例 10% ,看运行效果,如果效果好逐步调整流量占比 80~20 ,70~30 ·····10~90 ,0,

    2024年02月01日
    浏览(31)
  • 云原生改造- istio (二)

    目录 1 VirtualService 文件 2 DestinationRule 文件 3 演示结果 前提 基于内容的灰度发布,保证在chrome下可以访问V2版本,其他浏览器可以访问v1. IE 或者 火狐 可以正常访问V1 版本 user-agent Chrome 浏览器 可以正常访问V2 版本     user-agent

    2024年02月11日
    浏览(28)
  • 云原生Istio基本介绍

    地址 :https://istio.io/ 服务网格是一个独立的基础设施层,用来处理服务之间的通信。现代的云原生应用是由各种复杂技术构建的服务体系,服务网格负责在这些组成部分之间进行可靠的请求传递。目前典型的服务网格通常提供了一组轻量级的网络代理,这些代理会在应用无感

    2024年02月04日
    浏览(32)
  • 云原生Istio架构和组件介绍

    下图展示了组成每个平面的不同组件: 先简单理解 Pilot:提供服务发现功能和路由规则 Mixer:策略控制,比如:服务调用速率限制 Citadel:起到安全作用,比如:服务跟服务通信的加密 Sidecar/Envoy: 代理,处理服务的流量 (1) 自动注入 :(由架构图得知前端服务跟后端服务

    2024年02月03日
    浏览(27)
  • 在CSDN学Golang云原生(服务网格istio)

    在Kubernetes上部署istio,可以按照以下步骤进行: 安装Istio 使用以下命令从Istio官网下载最新版本的Istio: 其中, VERSION 是要安装的Istio版本号。 将下载的文件解压到本地目录: 进入解压后的目录: 然后,安装Istio CRDs(Custom Resource Definitions): 最后,安装Istio组件和示例应用

    2024年02月15日
    浏览(34)
  • 37.云原生之springcloud+k8s+GitOps+istio+安全实践

    云原生专栏大纲 安装gitlab,将https://gitee.com/zhouwei1996/spring-cloud-bookinfo.git迁移至gitlab gitlab中创建全局变量,如镜像仓库账号密码,保证gitlab-ci.yaml中内容安全 共享runner创建,获取token如下:glrt-wfzAecJmszsZb3GorS8J 安装gitlab-runner,参考:22.云原生之GitLab CICD实战及解析 修改ConfigM

    2024年03月22日
    浏览(66)
  • 云原生之深入解析K8S Istio Gateway服务的架构分析与实战操作

    Istio 提供一种简单的方式来为已部署的服务建立网络,该网络具有负载均衡、服务间认证、监控、网关等功能,而不需要对服务的代码做任何改动。 istio 适用于容器或虚拟机环境(特别是 k8s),兼容异构架构; istio 使用 sidecar(边车模式)代理服务的网络,不需要对业务代

    2024年02月13日
    浏览(39)
  • Istio实战:Istio & Kiali部署与验证

    前几天我就开始捣腾Istio。前几天在执行istioctl install --set profile=demo -y 的时候老是在第二步就报错了,开始我用的istio版本是1.6.8。 后面查看k8s与istio的版本对应关系后发现我的k8s是1.20.0,于是我将istio升级到了1.13.4,在执行istioctl install --set profile=demo -y 的时候还是同样的问题,

    2024年02月22日
    浏览(33)
  • Istio入门体验系列——基于Istio的灰度发布实践

    导言:灰度发布是指在项目迭代的过程中用平滑过渡的方式进行发布。灰度发布可以保证整体系统的稳定性,在初始发布的时候就可以发现、调整问题,以保证其影响度。作为Istio体验系列的第一站,本文基于Istio的流量治理机制,针对最简单的几种业务场景进行了实践,为后

    2024年02月12日
    浏览(23)
  • 【Istio实际操作篇】Istio入门10分钟快速安装

    上一篇讲了什么是Istio的理论篇,这次我们就来实际操作。 想看上一篇理论篇的看这里(看完绝对有所收获): [Istio是什么?] 还不知道你就out了,一文40分钟快速理解_小叶的技术Logs的博客-CSDN博客 本文有两个版本, 详细版、简洁版 。 前者适合新手,后者适合老手**(方便大

    2024年02月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包