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当前系统支持的拓扑分层有:
- HOST
- PROCESS
- RPC
一个完整的观测对象的配置结果
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),仅供参考