gala-spider开发者指南如何添加自定义观测对象【免费下载链接】gala-spiderAn OS-level topology awareness service and a cause inference service.项目地址: https://gitcode.com/openeuler/gala-spider前往项目官网免费下载https://ar.openeuler.org/ar/gala-spider是一个OS级拓扑感知服务和故障根因推理服务能够帮助开发者实现系统级的监控和问题诊断。本文将详细介绍如何为gala-spider添加自定义观测对象扩展其监控能力。为什么需要添加自定义观测对象在复杂的系统环境中不同的应用场景可能需要监控特定的实体对象。gala-spider通过灵活的配置机制允许开发者添加自定义观测对象从而满足多样化的监控需求。无论是进程、容器还是自定义服务都可以通过简单的配置步骤纳入gala-spider的监控体系。gala-spider架构概览在开始添加自定义观测对象之前让我们先了解一下gala-spider的整体架构。从架构图中可以看到gala-spider主要包含spider-storage和cause-inference两个核心模块通过Kafka与Prometheus等数据源交互并将数据存储在ArangoDB中。这种架构设计使得添加新的观测对象变得简单而高效。拓扑分层结构gala-spider采用分层的拓扑结构来组织观测对象。了解这一结构有助于我们正确地定位新添加的观测对象。拓扑结构分为连接层、进程层和主机层每层包含不同的观测对象。新添加的观测对象需要被分配到合适的拓扑分层中。如何新增观测对象为了方便用户拓展新的观测对象gala-spider通过配置文件的方式来配置需要新增的观测对象的元数据信息从而支持对新观测对象的采集和拓扑绘制能力。需要配置的观测对象的元数据信息包括观测对象的类型全局唯一标识该观测对象的一个观测实例的字段集合观测对象的标签字段集合观测对象的观测指标集合观测对象所在的拓扑分层下面以观测对象proc为例详细讲解如何配置新增的观测对象的元数据信息。当前系统默认支持的扩展观测对象配置文件在gala-spider工程下的config/ext-observe-meta.yaml文件中。1. 新增一个观测对象类型proc观测对象对应Linux内核中的一个进程。在配置文件中observe_entities是一个对象的列表所有新增的观测对象元数据信息都在observe_entities下。为此我们在observe_entities下新增一个对象并指定type: proc代表这是一个观测类型为proc的观测对象的配置信息。type是一个必选的配置字段。配置结果如下observe_entities: - type: proc2. 配置观测对象的标识字段一台主机上的proc可以通过进程IDtgid进行标识这台主机可以通过一个全局的机器IDmachine_id进行唯一标识。因此proc观测对象的一个观测实例可通过tgid和machine_id全局唯一标识。我们将它们配置到keys字段中。keys是一个必须的配置字段。此时配置结果为observe_entities: - type: proc keys: - tgid - machine_id3. 配置观测对象的标签字段proc还有一些非标识类的标签信息。比如进程名comm进程组IDpgid等信息。如果proc运行在一个容器中它还包括一个所在的容器IDcontainer_id信息。这些标签信息可以配置到labels字段中。labels是一个可选的配置字段。此时配置结果为observe_entities: - type: proc keys: - tgid - machine_id labels: - comm - pgid - container_id4. 配置观测对象的观测指标字段proc包含若干的观测指标比如进程调用fork的次数fork_count进程每秒读/写IO的字节数rchar_bytes/wchar_bytes等。这些指标字段都在metrics中进行配置。如果spider的数据源是Prometheus则metrics中至少需要配置一个指标字段否则无法从Prometheus采集数据。此时配置结果为observe_entities: - type: proc keys: - tgid - machine_id labels: - comm - pgid - container_id metrics: - fork_count - rchar_bytes - wchar_bytes5. 配置观测对象所在的拓扑分层该配置信息在绘制观测对象之间的3D拓扑关系图功能时会用到。拓扑分层通过level字段进行配置是一个可选的配置字段。proc对应于拓扑分层的进程层PROCESS所以添加一行配置内容level: PROCESS当前系统支持的拓扑分层有HOSTPROCESSRPC一个完整的观测对象的配置结果proc最终的配置信息为observe_entities: - type: proc keys: - tgid - machine_id labels: - comm - pgid - container_id metrics: - fork_count - rchar_bytes - wchar_bytes level: PROCESS当我们需要给一个观测对象添加新的指标字段、标签字段等信息时只需要在配置文件中添加相应的配置即可。这种方式提供了很好的可扩展性。如何新增拓扑关系添加了观测对象后我们还需要定义它与其他对象之间的拓扑关系以便gala-spider能够正确绘制系统拓扑图。关系类型定义拓扑关系或关联关系定义了观测对象之间存在的物理上和逻辑上的关系。关联关系可分为两种一种是直接的direct关联关系是指物理上直观可见的关系另一种是间接的indirect关联关系是指在物理上不存在但逻辑上可建立的关系。gala-spider目前支持的直接关联关系有关系名称关系描述runs_on运行关系。例如进程运行在主机上则有关系进程 runs_on 主机。belongs_to从属关系。例如通信端点是从属于某个进程则有关系通信端点 belongs_to 进程。is_server服务端通信关系。例如nginx记录了一条和服务端tcp的连接则有关系服务端tcp连接 is_server nginx连接。is_client客户端通信关系。例如nginx记录了一条和客户端tcp的连接则有关系客户端tcp连接 is_client nginx连接。is_peer对端通信关系。例如客户端与服务端建立了一条tcp连接则有关系客户端tcp连接 is_peer 服务端tcp连接。反之亦然。支持的间接关联关系有关系名称关系描述connect连接关系。例如主机A和主机B上有tcp连接进行通信则有关系主机A connect 主机B 。新增拓扑关系关系类型定义好后我们可以通过配置文件的方式新增拓扑关系。当前系统默认支持的拓扑关系在gala-spider工程下的config/topo-relation.yaml配置文件中。对于proc的一个拓扑关系proc runs_on host对应的配置内容如下topo_relations: - type: proc dependingitems: - id: runs_on layer: direct toTypes: - type: host matches: - from: machine_id to: machine_id其中matches配置表明当proc.machine_id host.machine_id成立时关联关系proc runs_on host成立。总结通过本文的介绍我们了解了如何为gala-spider添加自定义观测对象。这一过程主要包括修改配置文件ext-observe-meta.yaml来定义观测对象的元数据以及修改topo-relation.yaml来定义新对象与其他对象之间的拓扑关系。这种基于配置文件的方式使得扩展gala-spider的监控能力变得简单而灵活。希望本文能够帮助开发者更好地使用gala-spider实现更全面、更定制化的系统监控。如果你在使用过程中遇到任何问题可以查阅项目的官方文档或提交issue寻求帮助。要开始使用gala-spider请先克隆仓库https://gitcode.com/openeuler/gala-spider【免费下载链接】gala-spiderAn OS-level topology awareness service and a cause inference service.项目地址: https://gitcode.com/openeuler/gala-spider创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考