传统的日志采集工具如 Filebeat 和 Fluentd 只能处理简单的"采集-转发"场景,无法满足现代云原生架构对数据管道的复杂需求。Vector 作为新一代可观测性数据管道,提供了统一的 Source-Transform-Sink 架构,能够在单一管道中完成日志、指标和追踪数据的采集、处理和路由。
Vector 核心架构
Vector 的核心设计理念是将数据管道分为三个可组合的阶段:
[sources.syslog]
type = "syslog"
address = "0.0.0.0:514"
[sources.kubernetes_logs]
type = "kubernetes_logs"
[transforms.parser]
type = "remap"
inputs = ["kubernetes_logs"]
source = '''
.level = downcase(string!(.level))
.timestamp = parse_timestamp!(.timestamp, "%+")
'''
[transforms.filter]
type = "filter"
inputs = ["syslog"]
condition = '.severity != "debug"'
[sinks.elasticsearch]
type = "elasticsearch"
inputs = ["parser", "filter"]
endpoint = "http://elasticsearch:9200"
[sinks.s3_archive]
type = "aws_s3"
inputs = ["parser"]
bucket = "logs-archive"
compression = "gzip"
toml
[sources.syslog]
type = "syslog"
address = "0.0.0.0:514"
[sources.kubernetes_logs]
type = "kubernetes_logs"
[transforms.parser]
type = "remap"
inputs = ["kubernetes_logs"]
source = '''
.level = downcase(string!(.level))
.timestamp = parse_timestamp!(.timestamp, "%+")
'''
[transforms.filter]
type = "filter"
inputs = ["syslog"]
condition = '.severity != "debug"'
[sinks.elasticsearch]
type = "elasticsearch"
inputs = ["parser", "filter"]
endpoint = "http://elasticsearch:9200"
[sinks.s3_archive]
type = "aws_s3"
inputs = ["parser"]
bucket = "logs-archive"
compression = "gzip"性能优势
Vector 使用 Rust 语言开发,内存安全且性能极佳。在同等硬件条件下,其吞吐量是 Filebeat 的 3-5 倍,内存占用仅为 Fluentd 的 1/3。其零拷贝数据传输和背压感知机制确保了在高负载下的稳定性。
数据富集与路由
通过 Vector Remap Language (VRL),可以对数据进行丰富的清洗、转换和富集操作。更强大的是,Vector 支持多 Sink 路由,一份数据可以同时发送到 Elasticsearch、Kafka、S3 和 Prometheus 等多个目标,无需部署多个 Agent。