输出插件
输出插件(Flusher)位于采集配置末端,负责将聚合后的 Event / EventGroup 写出到下游:日志服务、消息队列、时序库、搜索与分析引擎、本地文件或标准输出等。每个采集配置必须至少配置 一个 Flusher;也可配置 多个 Flusher,实现一条数据多路投递。
LoongCollector 提供两类输出插件:
- 原生输出插件(C++):与核心进程同构,路径短、默认集成度高,适合作为云上默认链路与高稳定场景。
- 扩展输出插件(Golang):由插件运行时加载,易于对接开源与自建系统,功能覆盖面广。
插件类型介绍
原生插件
原生 Flusher 采用 C++ 实现,常见特点:
- 与主进程共享运行时,默认链路上延迟与资源占用更可控
- 适合云上默认写入(如
flusher_sls)、调试丢弃(flusher_blackhole)、本地落盘(flusher_file)、Kafka C++ 实现(flusher_kafka_native)等 - 路由 并非独立「网络输出」,而是由
router与若干支持分流的 Flusher 协同完成多路输出;适用条件见 多 Flusher 路由
| 名称 | 提供方 | 功能简介 |
|---|---|---|
flusher_blackhole黑洞 |
SLS 官方 | 丢弃事件,常用于压测或占位。 |
flusher_file本地文件 |
SLS 官方 | 将数据写入本地文件(如自监控指标落盘)。 |
flusher_kafka_nativeKafka |
ChaoEcho | 使用 C++ 实现将数据输出到 Kafka。 |
flusher_slsSLS |
SLS 官方 | 将数据写入阿里云日志服务(SLS)。 |
router多 Flusher 路由 |
SLS 官方 | 在原生处理链路与支持的 Flusher 上按事件类型或 Tag 分流。 |
上表按插件 Type 字典序排列。
扩展插件
扩展 Flusher 基于 Golang 实现,特点包括:
- 对接种类多(HTTP、ClickHouse、Doris、ElasticSearch、Kafka、Loki、OTLP、Prometheus Remote Write、Pulsar 等)
- 参数与批处理、重试、认证等多在各篇文档中单独说明,需按目标系统调优
- 与 扩展机制(如
ext_basicauth、ext_request_breaker等)组合使用时,见 插件概览 - 扩展
| 名称 | 提供方 | 功能简介 |
|---|---|---|
flusher_clickhouseClickHouse |
社区 kl7sn |
写入 ClickHouse。 |
flusher_dorisApache Doris |
社区 | Stream Load 写入 Apache Doris。 |
flusher_elasticsearchElasticSearch |
社区 joeCarf |
写入 ElasticSearch。 |
flusher_httpHTTP |
社区 snakorse |
以 HTTP 方式推送到自定义后端。 |
flusher_kafkaKafka |
社区 | 输出到 Kafka(旧版实现)。 |
flusher_kafka_v2Kafka V2 |
社区 shalousun |
输出到 Kafka,优先推荐。 |
flusher_lokiLoki |
社区 abingcbc |
推送到 Grafana Loki。 |
flusher_otlp_logOTLP 日志 |
社区 liuhaoyang |
兼容 OpenTelemetry Logs 的后端。 |
flusher_prometheusPrometheus |
社区 | Remote Write 写入 Prometheus 兼容时序库。 |
flusher_pulsarPulsar |
社区 shalousun |
写入 Apache Pulsar。 |
flusher_stdout标准输出/文件 |
SLS 官方 | 标准输出或文件,便于本地调试与排障。 |
上表按插件 Type 字典序排列。完整稳定性等级与其它交叉引用仍以 插件概览 为准。
插件特性对比
| 特性 | 原生 Flusher | 扩展 Flusher |
|---|---|---|
| 实现语言 | C++ | Golang |
| 典型用途 | 默认上云、路由、本地文件/黑洞、C++ Kafka | 开源栈与自定义 HTTP/SDK 对接 |
| 加载方式 | 核心内建 | 插件运行时动态加载 |
| 与 router 配合 | router 仅在与原生处理链及支持的 Flusher 组合下生效 |
视具体 Flusher 是否支持 Match 等字段,见单篇文档 |
使用说明
- 必填:每个采集配置的
flushers列表至少包含一项;Aggregation 完成后数据由 Flusher 消费并写出。一级字段与约束见 采集配置。 - 与 Input / Processor 的衔接:仅扩展 Input 时,处理链须遵守 处理插件 中的组合规则(仅扩展 Processor 或级联模式等);Flusher 侧通常同时受数据形态与下游协议影响,需在单篇 Flusher 文档中核对 TelemetryType、Format 等参数。
- 路由:需要按事件类型或 Tag 拆流到不同下游时,在支持的场景下使用 router,并为各 Flusher 配置匹配规则。
- 认证与加密:云上 AK/SK 等常通过 系统参数 与
flusher_sls配合;HTTP 类扩展 Flusher 可使用概览中的 扩展 表内认证、熔断等能力。
选型建议
- 写入阿里云 SLS:优先使用原生
flusher_sls,并正确配置 Endpoint、Project、Logstore(及TelemetryType等)。 - 本地调试或 CI:使用
flusher_stdout观察序列化结果;仅需吞吐压测、不需下游时使用flusher_blackhole。 - Kafka:新部署优先评估
flusher_kafka_v2;若需与核心进程最短路径对接,可了解flusher_kafka_native(C++)。 - ClickHouse / Doris / ES / Loki / Pulsar / HTTP / OTLP / Prometheus:选用对应扩展 Flusher,并按目标系统的批大小、重试、TLS、认证段落逐项配置。
- 多副本、多环境投递:在符合条件时用
router配合多个 Flusher,避免在应用外再写多套采集配置重复采同一源(仍以实际支持与单篇说明为准)。