1、软件开发与应用Software Development&Application电子技术与软件工程Electronic Technology&Software Engineering36在云原生应用的快速发展中,运维可观测性已经成为了关键的一环。传统的应用监控手段已经不能满足云原生应用自动化运维的需求,需要更加智能、自动化、细粒度的监控与管理方式。在这种背景下,智能AIOps、Service Mesh 观测、OpenTelemetry 和可视化报告工具等新技术应运而生,为云原生应用的自动化运维提供了更好的解决方案。1 云原生应用自动化运维可观测性概述自动化运维和可观测性是云原生应用开发和运维中不
2、可或缺的两个方面。自动化运维指的是通过自动化工具和流程,减少人工干预的运维操作,以提高效率和减少错误风险。自动化运维可以包括自动化部署、自动化扩展、自动化备份和恢复、自动化监控和告警等方面。可观测性指的是对系统运行状态、行为和性能进行监控、分析和报告的能力。可观测性可以帮助运维人员及时发现并解决系统问题,提高系统的可靠性、可用性和性能。可观测性可以包括监控指标、日志记录、分布式追踪等方面。在云原生应用开发和运维中,自动化运维和可观测性是不可或缺的两个方面。随着云原生应用的快速发展,自动化运维和可观测性的重要性也越来越凸显。未来,随着智能化技术的不断创新和普及,自动化运维和可观测性将成为云原生应
3、用开发和运维的重要趋势。2 智能AIOps技术2.1 智能AIOps的基本概念和原理智能 AIOps 是指通过人工智能(AI)和机器学习(ML)技术来实现自动化运维(AIOps),它包括了自动故障检测、根因分析、自动修复等方面。其基本原理是通过监控系统的实时数据,将数据传输到 AI/ML 模型中进行分析和预测,然后根据模型的输出结果,自动执行相关的操作,以保证系统的稳定性和可靠性。在智能 AIOps 的实现中,需要先收集和分析系统运行数据,并将其转化为可供 AI/ML 处理的数据集。通过对数据进行训练,构建出相应的 AI/ML 模型,这些模型能够对系统状态和问题进行分析和预测,并提供相应的自动
4、化解决方案。当系统发生异常或者问题时,智能 AIOps 能够自动检测和分析,找出异常的根源,并根据模型的结果自动进行修复或升级操作,以达到自愈和自我修复的效果。智能 AIOps 的重要性在于可以大幅提高运维效率和精度,同时降低人工干预的成本和风险。2.2 智能AIOps在运维中的应用场景和优势智能 AIOps 技术在运维中的应用场景和优势主要包括以下方面:2.2.1 自动化故障检测和根因分析智能 AIOps 技术可以通过对系统实时数据的监控和分析,自动检测和诊断系统异常或故障,并找出根本原因。相比于传统的人工排查方式,智能 AIOps 可以更快速地发现和解决问题,提高故障排查的效率和精度。2.
5、2.2 自动化修复和升级智能 AIOps 技术可以根据系统实时数据分析结果,自动执行相关的修复和升级操作,例如重启服务、迁移云原生应用自动化运维可观测性技术探索与实践程锐蓝维洲张红兵陈齐彦(上海道客网络科技有限公司 上海市 200000)摘要:本文对云原生应用自动化运维可观测性进行了简要的概述,探究了云原生应用自动化运维可观测性领域的最新技术趋势,介绍了智能 AIOps、Service Mesh 可观测、OpenTelemetry 和可视化报告工具等技术在云原生应用自动化运维可观测性领域的应用和优势,并就这些技术的具体应用方法进行了介绍。旨在提高云原生应用的自动化运维效率和精度,降低人工干预的
6、成本和风险,为云原生应用的开发以及实践提供更好的支持。关键词:自动化运维;AIOps;Service Mesh 可观测;OpenTelemetry软件开发与应用Software Development&Application电子技术与软件工程Electronic Technology&Software Engineering37应用程序、更新补丁等。这些操作可以在不影响正常业务运行的情况下,快速恢复系统的正常运行状态。2.2.3 容量规划和资源优化智能 AIOps 技术可以通过对系统性能数据的分析和预测,自动进行容量规划和资源优化,以实现系统的高效运行和资源的合理分配。这可以提高系统的性能和可
7、用性,同时也能够降低运维成本和资源浪费。2.2.4 智能告警和预测性维护智能 AIOps 技术可以通过对实时数据的监控和分析,自动发现和预测潜在的问题,并及时发出告警,以避免故障的发生和扩大。通过对数据进行深入分析和挖掘,发现隐藏的关联性和规律,帮助企业做出更明智的决策。3 Service Mesh观测技术3.1 Service Mesh的基本概念和原理Service Mesh 是一种专门为微服务架构设计的应用程序网络基础设施,可以在微服务之间插入一个专门的代理层,实现对微服务间通信的控制和管理。Service Mesh 的基本概念和技术原理主要包括以下方面:(1)代理层:Service Me
8、sh 是通过在微服务之间插入一个专门的代理层来实现对微服务间通信的控制和管理。代理层可以拦截和处理微服务之间的请求和响应,实现请求路由、负载均衡、故障恢复等功能。(2)数据平面和控制平面:Service Mesh 由数据平面和控制平面两部分组成。数据平面负责处理微服务之间的请求和响应,控制平面负责管理和配置代理层,实现请求路由、负载均衡、故障恢复等功能。(3)Sidecar 模式:Service Mesh 采用 Sidecar 模式来实现代理层的部署。Sidecar 是一个附加到主容器中的辅助容器,用于提供代理层的功能。Sidecar 可以通过本地主机网络、IPC 或共享文件系统等方式与主容器
9、进行通信,实现对微服务间通信的控制和管理。3.2 Service Mesh 观测的重要性和挑战在应用程序不断演化和扩展的过程中,ServiceMesh的配置和管理变得愈发复杂,而观测 ServiceMesh 的状态和性能对于保障应用程序的可靠性和可扩展性非常重要。Service Mesh 观测的挑战主要有以下几点:(1)多样性的数据源:Service Mesh 中的各种组件会产生各种类型的数据,包括传输指标、服务度量、流量日志等,这些数据来源多样,难以集成和分析。(2)大规模集群的管理:云原生应用程序通常由成千上万个容器组成的大规模集群,Service Mesh 中的各个组件也会动态变化,这使
10、得管理和观测变得更加困难。(3)不确定性的故障诊断:当应用程序出现故障时,难以确定是哪个组件导致了问题,Service Mesh 中的各个组件相互交互,增加了故障诊断的难度。针对这些挑战,需要 Service Mesh 观测技术能够实现对各种数据源的集成和分析,以及对大规模集群的管理和故障诊断的支持。这些技术可以帮助管理员更好地管理和维护 ServiceMesh,提高应用程序的可靠性和可扩展性。3.3 最新的 Service Mesh 观测技术和应用案例随着云原生应用的快速发展,Service Mesh 观测技术也在不断地推陈出新,下面介绍一些最新的ServiceMesh 观测技术和应用案例:
11、Linkerd:Linkerd 是另一种流行的 Service Mesh 实现,它也提供了丰富的观测功能,包括服务度量、流量指标、日志管理等。Linkerd 还支持将观测数据发送到Prometheus、Grafana、Kibana 等监控和分析工具中,以便管理员进行更深入的分析和监控。4 OpenTelemetry技术4.1 OpenTelemetry 的定义和概述OpenTelemetry 是一个针对云原生环境的开源观测性技术,它由 OpenCensus 和 OpenTracing 两个开源项目合并而成。OpenTelemetry 可以帮助管理员收集、处理和分析云原生应用程序的观测数据,包括
12、分布式追踪、指标和日志等。OpenTelemetry 还提供了多种语言和框架的 SDK 和插件,以便管理员更加方便地集成和使用软件开发与应用Software Development&Application电子技术与软件工程Electronic Technology&Software Engineering38OpenTelemetry 技术。4.2 OpenTelemetry的架构和组件4.2.1 OpenTelemetry 基础架构简单来讲,OpenTelemetry 基础架构分为三层:(1)应用层:一旦应用程序通过 otel 的 sdk 完成了数据接入,日志、指标、链路数据就会源源不断地被
13、发送至 OpenTelemetry collector。(2)OpenTelemetry collector:数据收集后,进行转换、转发遥测数据,有选择性地将数据发送到数据库。(3)可视化层:利用一些支持 OpenTelmetry 的第三方软件对数据进行可视化展示(比如 Jaeger)。4.2.2 OpenTelemetry SDK 如何工作所以现在我们已经知道了 OpenTelemetry 是什么以及其技术栈组成,是时候再深入看看 OpenTelemetry SDK 是如何工作的。假设应用程序有两个服务:服务 A 和服务 B。服务 A 向服务 B 发送 API 调用,一旦发生这种情况,服务
14、B 就会被写入数据库。这两种服务都使用的是OpenTelemetry collector,也都有 OpenTelemetry SDK。如图 1,一旦服务 A 对服务 B 进行了 API 调用,服务 A 还会向 collector 发送一个对服务 B 描述调用的 span,实际上是让 collector 知道它发送了一个 API 调用(使其成为链路追踪中的父级)。现在,服务 A 和服务 B 之间存在“父/子”关系(服务 A 是后续所有操作的父项)。可以看出,OpenTelemetry 在对服务 B 的 API 调用中,注入了有关父级 span 的详细信息。它使用 HTTP headers 追踪上
15、下文(trace ID、span ID 等)并注入到自定义的 header 中。服务 B 收到 HTTP 调用后将提取相同的 header,紧接着,服务 B 的后续操作都将报告给其子项。这一步骤引起 OpenTelemetry 的另一个关键面:Trace 的全局上下文传播。这是一种能够跨服务关联 span 的途径,通过网络传输 HTTP header 等元数据。我们知道数据一般分为 header 和 body,比如 http 的 header 和 body,由于 body 一般放着业务数据,所以不宜在 body 中传递 context,应该在 header 中传递 context。在这里,每个
16、 header 会包含一个 trace ID(该 ID 表示已发生调用的 HTTP),并且还包括一个 span ID(表示刚刚发生的事件)。由于服务 B 也实现了 SDK,因此它还会将数据发送到 collector,通知 collector 已收到来自服务 A(其父级)的 API 调用。服务 B 对数据库的调用也是如此,虽然创建另一个 span,但 trace ID 与服务 A 创建的初始 trace ID 相同。4.2.3 OpenTelemetry 自动和手动检查检测:是指从不同的库收集数据中产生代表它们行为 span 的过程。这里有两种方式可以创建 span,分别为:自动检测:不需要写任
17、何代码去收集 span。手动检测:需要在你的应用程序中写一些代码去收集 span。4.3 OpenTelemetry在云原生应用观测中的应用案例OpenTelemetry 作为一种开源的观测性技术,可图 1:服务 A 和服务 B软件开发与应用Software Development&Application电子技术与软件工程Electronic Technology&Software Engineering39以帮助管理员收集、处理和分析云原生应用程序的观测数据,包括分布式追踪、指标和日志等。以下是OpenTelemetry 在云原生应用观测中的应用案例:Google Cloud Platfor
18、m:Google Cloud Platform(GCP)是一个集成了 OpenTelemetry 的云平台,可以帮助管理员更好地管理和维护云原生应用程序。GCP 提供了丰富的观测功能,包括分布式追踪、指标和日志等,管理员可以使用 OpenTelemetry 将这些数据发送到 GCP 中进行分析和监控。综上所述,OpenTelemetry 是云原生应用观测的重要技术之一,未来将继续得到广泛的应用和发展。5 可视化和报告工具5.1 可视化和报告工具的重要性和作用可视化和报告工具可以将收集到的大量数据进行整理和可视化,帮助管理员更直观地了解应用程序的状态和性能。通过可视化和报告工具,管理员可以迅速发
19、现应用程序中的问题、瓶颈和异常,以及分析和监控应用程序的性能和可靠性。这些工具还可以提供报告和警报功能,以便管理员及时采取措施来保障应用程序的稳定性和可扩展性。5.2 最新的可视化和报告工具技术和应用案例Grafana 是一款功能强大的可视化报告工具,它提供了各种图表和面板,可以帮助管理员更好地理解应用程序的状态和性能。管理员可以使用 Grafana 创建仪表板,将不同的图表和面板组合在一起,以便更好地监控和分析应用程序的各个方面。Grafana 还具有可扩展性,管理员可以使用各种插件和扩展来增强其功能。Grafana 作为一款功能强大的可视化报告工具,已经被广泛应用于云原生应用观测中。它可以
20、与各种数据源集成,包括 Prometheus、InfluxDB、Elasticsearch 等,管理员可以使用它来创建各种图表和面板,以便更好地监控和分析应用程序的状态。6 结论和展望本文主要介绍了云原生应用自动化运维中的可观测性技术。在云原生应用中,自动性、智能性和可观测性是非常重要的,可以帮助管理员快速识别应用程序中的问题和瓶颈,并监控应用程序的性能和可靠性。同时,可视化工具也非常重要,可以将大量数据进行整理和可视化,帮助管理员更直观地了解应用程序的状态和性能。未来,随着云原生应用的发展,自动化运维的可观测技术和可视化工具也将继续得到发展和改进。智能 AIOps 技术可以通过监控和分析实时
21、数据,自动发现和预测潜在问题,并及时发出告警,避免故障的发生和扩大。Service Mesh 可观测则可以在微服务架构下实现对服务间通信的可视化和监控,帮助运维人员快速定位和解决问题。OpenTelemetry 则是一个开源的分布式跟踪和度量系统,可以对多种语言和框架进行统一的性能监控和数据采集。而可视化报告工具则可以将复杂的数据转化为直观、易于理解的图表和报告,方便运维人员进行决策和优化。随着云原生应用自动化运维可观测性领域的技术趋势不断发展,这些新技术的应用和优势也越来越明显。我们期待未来在这个领域中会涌现出更多的创新和突破。参考文献1 Observability PrimerZ.http
22、s:/opentelemetry.io/docs/concepts/observability-primer,2023,3,30.2 高巍.可观测性技术研究 J.科技创新与应用,2023.3 王雪.智能运维下故障预警和故障根因定位问题的研究 D.南京大学,2022.作者简介程锐(1996-),女,安徽省淮南市人。大学本科学历,研究方向为云原生技术、软件产品。蓝维洲(1986-),男,畲族,浙江省丽水市人。硕士研究生学历。研究方向为云原生网络、观测性、网格技术、混沌测试等领域。张红兵(1981-),男,重庆市人。硕士研究生学历。研究方向为云计算、观测性、开源软件、IOT、边缘计算等。陈齐彦(1980-),男,福建省福清市人。硕士研究生学历,高级技师。研究方向为操作系统、云原生。