使用动态图表
动态图是应用程序的一个模型,它捕捉了应用程序组件之间的所有物理和逻辑依赖关系。 该图表包含主机、操作系统、 Java 虚拟机(JVM)、 Cassandra 节点以及 MySQL 数据库等物理组件。 该图还包括逻辑组件,如跟踪、应用程序、服务、群集和表空间。 通过 Instana 代理和传感器自动发现组件及其依赖关系,该图会实时持续更新,以反映当前状态。
该图不断更新每个节点的状态信息。 状态信息包括指标、配置数据和计算出的健康值。 健康值的计算结合了语义知识和机器学习方法。 Instana 分析图中的依赖关系,以识别逻辑分组,例如服务和应用程序。 通过确定逻辑分组,可以更深入地了解问题如何影响这些更高层次的组成部分,并有助于确定这些问题的关键性。 整个图结构是持久的, Instana 可以在时间轴上自由穿梭,从而利用图的全部知识库来处理多种业务场景。
借助动态图, Instana 可计算变更和问题对应用程序或服务的影响。 如果影响非常严重, Instana 会将一组相关的问题和变更合并为一个事件。 事件能够追踪问题随时间推移的演变过程,从而使 Instana 能够直接定位事件的根本原因。 系统会自动检测到变更, Instana 会计算这些变更对周围节点的影响。
这种变化有多种表现形式:
- 健康状况恶化,然后将其确定为一个问题。
- 修改系统配置。
- 新进程、容器或服务器的部署、出现或消失。
为说明这一概念,请考虑一个简单的应用程序,该应用程序使用 Elasticsearch 集群通过 Web 界面搜索产品。 该示例是一个单一的微服务,演示了动态图如何对群集和依赖关系进行建模。
动态应用程序
为Elasticsearch集群开发了一个动态图模型,以了解动态图的工作原理及其在分布式和流动环境中的优势。
该模型从一个 Elasticsearch 节点开始。 由于 Elasticsearch 节点是一个 Java 应用程序,因此图示如下:

该图显示了主机上自动发现的组件及其关系。 对于 Elasticsearch 节点, Instana 代理会发现 JVM、进程、 Docker 容器(如果该节点在容器内运行)以及代理运行的主机。 如果应用程序在 Amazon AWS 等云环境中运行, Instana 代理会检测其可用区,并将该信息纳入图表中。
在动态图中,每个组件都是一个节点。 每个节点都有属性(例如, JVM_Version=1.7.21)。 Instana 会实时收集所有相关指标。 这些指标包括主机的网络统计信息、 JVM 的垃圾回收统计信息,以及由 Elasticsearch 节点索引的文档数量。
图中节点之间的连接表示它们之间的关系。 在这种情况下,这些关系是 "运行 "关系。 例如,ES 节点“运行”在 JVM 上。
Elasticsearch集群由多个节点组成,这些节点相互连接形成集群。

该图包括一个群集节点,代表整个群集的状态和健康状况。 它与构成群集的所有四个 Elasticsearch 节点建立了依赖关系。
Elasticsearch 的逻辑单元是索引。 Elasticsearch 客户端使用索引访问文档。 每个索引分为一个或多个分片,分布在集群中的 ES 节点上。
该图表记录了应用程序使用的索引的统计数据和健康状况。

下图包括一个访问 Elasticsearch 索引的 Spring Boot 应用程序。

Instana Java 传感器用于记录 Spring Boot 应用程序活动的分布式跟踪。 通过这些痕迹, Instana 得知 Spring Boot 应用程序访问了 Elasticsearch 索引。 动态图将这些轨迹与相应的逻辑组件关联起来,从而跟踪不同轨迹的统计数据和健康指标。
此图有助于理解各种 Elasticsearch 问题,并展示了 Instana 如何分析这些问题对整体服务健康状况的影响。
请考虑以下问题:
- 单一主机上的 I/O 问题,导致索引或分片数据的读/写性能缓慢。
- Elasticsearch 节点出现线程池超载,导致请求排队。 在有线程处理这些请求之前,无法处理这些请求。


主机 (1) 遇到 I/O 问题。 健康智能系统会将主机的健康状况显示为黄色,然后将问题发送到问题跟踪器。 然后,主机 (1) 上的 I/O 问题会影响 ES(Elasticsearch)节点 (2)。 健康智能系统检测到该节点的吞吐量下降,并将其标记为黄色。 卫生情报系统则是另一个问题。 Instana 将这两个问题关联起来,并将其合并为一个事件。 由于群组健康状况良好,服务质量未受影响,因此未将此事件标记为有问题。
在另一个 ES 节点 (3) 上,查询处理线程池超载,导致请求被池化。 由于线程池过载严重影响了性能, Instana 将该节点的状态标记为红色。 这种过载影响到 ES 集群 (4),由于吞吐量下降,该集群变为黄色。 生成的两个问题汇总为初始事件。
由于群组影响了索引的性能 (5),索引被标记为黄色,问题被添加到事件中。 现在,产品搜索事务的性能受到影响,性能健康分析将事务标记为黄色 (6),这也会影响应用程序的健康 (7)。
由于应用程序和事务都受到影响,该事件的状态为黄色,表明产品搜索性能下降,用户受到影响。
强调了两个根本原因:
- 输入/输出问题
- 线程池问题
Instana 展示了该事件的演变过程,用户可以深入查看问题发生时的系统组件,包括当时的具体环境和指标。
Instana 提供以下功能:
- 能够将物理信息、流程信息和跟踪信息整合到图表中,并了解它们之间的依赖关系。
- 智能了解单个组件、集群、应用程序和跟踪的健康状况。
- 智能影响分析,以了解某个问题是否严重。
- 能够说明问题的根本原因,并提供可行的信息和背景。
- 能够存储图表的历史、属性、指标、更改和问题。 Instana 提供“时间轴”功能,可清晰展示所有组件的状态及依赖关系,从而分析任何问题。
未来几年,在现代环境中查找问题根源将变得更具挑战性。 正如这个简单的例子所示,解决这些问题需要深入了解背景、依赖关系和影响。 在基于微服务的 "流动 "系统中,复杂性会进一步增加,因为微服务会不断添加和删除服务,并频繁发布新版本。 Instana 实时监控系统状态和健康状况,并分析这些变化或问题可能带来的影响——这一切均无需任何手动配置,且全程实时进行。