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