什么是处理插件
概述
处理插件用于对采集到的数据进行解析、过滤和加工。LoongCollector 提供了三种处理模式,以满足不同场景的数据处理需求:
- 原生插件(C++)
- 扩展插件(Golang)
- SPL处理
这三种处理模式可以灵活组合使用,通过统一的 Event 数据模型,支持处理包括日志、指标、追踪、事件、性能剖析等多种可观测数据。
介绍
原生插件
- 采用C++实现,性能最优,资源开销极低
- 提供常用的数据处理算子
- 适用于大部分标准的数据处理场景
- 推荐作为首选的处理方案
扩展插件
- 采用Golang实现,性能和资源开销适中
- 支持更丰富的处理功能
- 开发门槛低,易于定制开发
- 适用于复杂的数据处理场景
SPL处理
- 基于C++实现的列式计算
- 采用向量化执行,性能优异
- 提供全面的数据处理算子
- 支持管道式处理,可以灵活组合处理逻辑
- 通过配置即可完成复杂数据处理,无需编码
特性对比
类型 | 实现语言 | 性能特点 | 功能特点 | 开发难度 |
---|---|---|---|---|
原生插件 | C++ | 性能最优 资源开销极低 | 常用算子 标准处理场景 | 中等 需要C++开发能力 |
扩展插件 | Golang | 性能适中 资源开销较低 | 丰富算子 支持复杂处理 | 较低 Golang开发门槛低 |
SPL处理 | C++ | 性能优异 向量化执行 | 算子全面 管道式处理 配置驱动 | 极低 仅需编写SPL语句 |
使用约束与限制
原生处理插件支持的输入插件
下表列出了可以与原生处理插件组合使用的输入插件:
输入插件 | 说明 |
---|---|
input_file | 文本日志输入插件 |
input_container_stdio | 容器标准输出插件 |
input_observer_network | eBPF网络观测插件 |
input_file_security | 文件安全监控插件 |
input_network_observer | 网络观测插件 |
input_network_security | 网络安全监控插件 |
input_process_security | 进程安全监控插件 |
更多输入插件说明请参考输入插件文档。
插件组合规则
LoongCollector支持以下两种处理插件组合方式:
1. 单一插件模式
- 原生插件模式:
- 组合方式:仅使用原生处理插件
- 限制: 仅支持原生输入插件
- 扩展插件模式:
- 组合方式:仅使用扩展处理插件
- 支持所有类型输入插件
2. 级联模式
- 组合方式: 原生处理插件后接扩展处理插件
- 限制条件:
- 仅支持原生输入插件
- 原生处理插件必须位于扩展处理插件之前
选型建议
- 追求性能: 优先使用原生插件
- 处理复杂数据: 选择SPL处理
- 需要定制开发: 使用扩展插件
- 混合处理场景: 采用级联模式