自动发现和监视

自动发现和监控功能可提供高效且自适应的系统管理,有助于确保对大型应用程序中的物理、逻辑和业务组件实现全面覆盖。 该方法能够实时检测异常,从而将故障的影响降至最低。 这一先进的监控解决方案为系统管理提供了全面且灵活的方案,这对维护现代动态应用程序的可靠性和性能至关重要。

传统的应用性能管理( Application Performance Management ,APM)工具可帮助您手动检查和关联数据,从而在生产环境中发现瓶颈和错误。 然而,传统的APM工具面临着诸多挑战,例如解决由大规模系统的复杂性以及现代系统的动态特性所引发的问题。 您必须将相互关联的组件和指标进行关联分析,以找出问题所在。

基于机器学习的方法能显著提升系统管理水平。 为了取得最佳效果,该方法的基础必须建立在一个强大且全面的核心模型之上。 微服务应用程序由许多构建模块组成,这些模块在不断演进。 因此,您必须了解所有模块及其依赖关系,这需要采用一种高级的发现方法。

自动发现与监控的组成部分

自动发现和监控涵盖物理组件、逻辑组件和业务组件。

物理组件

下表概述了物理组件及其说明:

组件 描述
数据中心或可用区 这些区域分布于各大洲和各地。 它们可能失败或具有不同的性能特征。
主机或计算机 无论是物理形式、虚拟形式,还是以服务形式提供。 每台主机都拥有CPU、内存和I/O等资源,这些资源可能会成为瓶颈。 每个主机在一个区域中运行。
容器 它在主机上运行,并需要一个调度程序(例如 Kubernetes )来管理容器。
进程 可在容器内或主机上运行。 这些进程可能包括运行时环境(例如 Java 或 PHP )以及中间件(例如 Tomcat、 Oracle 或 Elasticsearch )。
集群 许多服务可以组成一个组或集群,从而对外呈现为一个统一的分布式进程。 集群中的实例数可能会发生更改,并且会对集群性能产生影响。

逻辑组件

下表概述了逻辑组件及其说明:

组件 描述
服务 可以在前述物理构建块之上运行的逻辑工作单元,其可能包含多个实例和不同版本。
端点 服务的公共 API ,用于向系统其他部分暴露特定命令。
应用视角或应用 对一组服务和端点的概述,这些服务和端点由共同的上下文定义,并通过标签进行声明。
跟踪 服务之间同步和异步通信的流程。 服务相互通信,并为用户请求交付结果。 在数据流中变换数据的过程可能涉及许多服务。
调用数 两个服务之间的请求。 一个跟踪由一个或多个调用组成。

业务组件

下表概述了业务组件及其说明:

组件 描述
业务服务 由服务和应用程序组成的组合,旨在提供独特的商业价值和服务。
业务流程 构成一个过程的技术痕迹的组合。 例如,它可能代表电子商务中的“购买”流程,随后是ERP系统中的订单流程,接着是 FedEx's 物流系统中向客户交付的流程。

通常情况下,一个应用程序会通过数千个不同版本的服务实例,在横跨多个区域和各大洲的数百台主机上运行,从而为用户提供服务。 这将创建组件之间的依赖关系网络,这些组件必须完美地协同工作,以便确保应用程序的服务质量,并交付业务价值。 当单个组件超过阈值时,传统监视工具可能会发出警报。 但是,这些组件中有一个或多个组件发生故障,并不意味着一定会影响应用的质量。 因此,现代监控工具需要全面了解网络中的所有组件及其相互依赖关系,才能有效地监控、分析并预测服务质量。

识别和记录变更

现代应用程序中的服务数量及其依赖关系比基于面向服务架构(SOA)的应用程序更多,这对监控工具构成了挑战。 由于持续交付方法、自动化工具和容器平台,应用程序的变更频率大幅增加,这使得问题更加严重。 在这种动态环境中,手动跟进变化并不断为新部署的区块配置监控工具是不切实际的。

为应对这一挑战,现代监控解决方案必须在分析和理解区块之前,自动且即时地发现每个区块。 此功能有助于确保后续变更相互关联,从而能够随时还原特定时刻的状态,以便调查事件。

可随时在任何构建块中进行更改,如下图所示:

图 1. 自动发现
更改

Instana 的全面探索流程

Instana 动态 APM 基于 Instana 代理架构,该架构采用传感器。 传感器是专为监控特定对象而设计的紧凑型自动化程序。 这些传感器由一个代理(每台主机一个)进行管理,该代理可作为独立进程部署在主机上,或通过容器调度器作为容器进行部署。

该代理会自动检测并监控各种物理组件,例如 AWS 可用区、 Docker 在主机上运行的容器或 Kubernetes ,以及各类进程,例如 HAProxy、 Nginx、 JVM、 Spring Boot、 Postgres、 Cassandra 或 Elasticsearch ,甚至包括这些进程的集群,例如 Cassandra 集群。 对于每个检测到的组件,代理都会收集其配置数据,并开始监控其变更情况。 它还会每秒发送每个组件的关键指标。 该代理会自动检测并使用服务提供的指标,例如 JMX 或 Dropwizard。

图 2. 代理的自动发现
代理

随后,代理将追踪函数注入到服务代码中。 例如,它拦截针对 Elasticsearch 的 HTTP 调用、数据库调用和查询。 该代理会捕获每次调用的上下文信息,例如堆栈跟踪或有效载荷。

将捕获的数据处理并分析为跟踪记录、识别依赖关系和服务、以及检测异常和问题的工作,均在服务器上进行。 因此,该代理程序体积小巧,可部署在数千台主机上。

Instana 旨在为新一代监控解决方案提供自动、即时且持续的发现功能。

收集数据

Instana 这是一款监控解决方案,采用单个代理配合多个传感器,支持数百种技术。 系统会自动发现并监控传感器,并将数据传输至代理。 该代理负责处理与 Instana 服务质量引擎之间的所有通信。 发现后,传感器会收集有关组件状态的详细数据,这些数据是根据具体技术量身定制的。 代理程序将更新,装入和卸载传感器。 可选的命令行界面可用于查看代理状态、单个传感器以及代理日志。 如需更多信息,请参阅 “配置和监控受支持的技术 ”。

传感器收集以下数据:

  • 配置: 编目当前设置和状态以跟踪任何更改。
  • 事件: 初始发现,状态更改 (联机和脱机) ,根据实体上失败的运行状况规则触发问题或突发事件的内置事件,以及根据任何实体的单个度量的阈值触发问题或突发事件的定制事件。
  • 跟踪: 基于编程语言平台的捕获跟踪。
  • 指标: 指示性能的技术的定性属性。

Instana 的传感器会执行递归发现,例如“ Java ”机器传感器会向上追溯,以发现 Tomcat 或 SpringBoot 等框架。 根据检测结果,该传感器会协助操作员加载相应的附加传感器。 此外, Instana 凭借其数据处理与分析能力,能够识别依赖关系和服务,并检测服务器上出现的异常和问题。 因此,该代理程序体积小巧,可部署在数千台主机上。

图 3. 收集数据
管道

Instana 后端采用流式处理技术,能够每秒处理数百万个从代理端流式传输过来的事件。 此流式引擎实际上是实时的,仅需要 3 秒即可处理情境并将其显示给用户。