WarpParse 是面向可观测性、安全、实时风控、数据平台团队的高性能 ETL 引擎, 专注于日志/事件接入、解析与转换,提供高吞吐解析(WPL)、转换(OML)、 路由、统一连接器 API 及极简运维体验。
curl
-sSf
https://get.warpparse.ai/setup.sh
|
bash
专为高性能日志处理和数据转换而设计
众多场景下性能全面超越 Vector,提供行业领先的日志处理能力,满足高吞吐场景需求。
WPL(解析 DSL)+ OML(转换 DSL),可读性远超正则表达式和 Lua,让规则编写更简单。
基于 wp-connector-api,便于社区生态扩展,支持多种数据源和输出目标。
单二进制部署,配置化;提供 wproj、wpgen、wprescue 工具套件,简化运维工作。
通过内存数据库支持 SQL 查询,实现数据富化,让数据更有价值。
基于规则和转换模型进行路由,支持多路复制与过滤器,灵活控制数据流向。
WarpParse vs Vector 基准测试结果 (AWS EC2 / Ubuntu 24.04 / 8 vCPU / 16 GiB RAM)
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
Linux 混合日志场景下提供 3.4x 解析性能优势,File 与 TCP 接收链路表现突出。
峰值 CPU 较高,但完成同等数据量所需总 CPU 时间更少。
规则文件小,便于快速热更新;单机处理能力强,减少中心端压力。
在 20,000 EPS 固定速率下的 CPU 和内存占用对比 (AWS EC2 / Ubuntu 24.04 / Mixed Log / TCP → BlackHole)
平均值 / 峰值 (%)
平均值 / 峰值 (MB)
54% 平均 CPU
相比 Vector-VRL 降低 68.8%,相比 Logstash 降低 80.4%
60 MB 平均内存
相比 Vector-VRL 降低 63.0%,相比 Logstash 降低 95.0%
在相同吞吐量下,WarpParse 的资源占用远低于其他引擎, 非常适合资源受限的边缘环境和大规模部署场景。
WarpParse vs Vector-VRL vs Vector-Fixed vs Logstash (Mac M4 Mini / 10C / 16G RAM)
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
EPS (Events Per Second) 对比
Mac M4 平台场景下提供 1.4-8.8x 性能优势。
峰值 CPU 较高,但完成同等数据量所需总 CPU 时间更少。
规则文件小,便于快速热更新;单机处理能力强,减少中心端压力。
工业级数据治理的强类型解析 DSL,比正则表达式更精准、高效
用更少的代码完成更复杂的解析任务,语法直观易读。
内置 alt(择一容错)、opt(可选匹配)、some_of(循环探测)等元信息,提供远超正则的容错能力。
将清洗与解析整合在一个表达式中,支持 decode/base64、unquote/unescape、decode/hex 等预处理。
{"date":1767006286.778936,"log":"180.57.30.149 - - [21/Jan/2025:01:40:02 +0800] \"GET /nginx-logo.png HTTP/1.1\" 500 368 \"http://207.131.38.110/\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36\" \"-\""}
rule nginx { (
json | take(log) | json_unescape() | (
ip:sip,
2*_,
time:recv_time<[,]>,
http/request",
http/status,
digit,
chars",
http/agent",
_"
)
) }
obj = parse_json!(string!(.message))
. = object!(obj)
.|= parse_regex!(
string!(.log),
r'^(?P<sip>\S+)\s+\S+\s+\S+\s+\[(?P<recv_time>\d{2}\/[A-Za-z]{3}\/\d{4}:\d{2}:\d{2}:\d{2})\s+[+\-]\d{4}\]\s+"(?P<http_request>[^"]*)"\s+(?P<status>\d{3})\s+(?P<digit>\d+)\s+"(?P<chars>[^"]*)"\s+"(?P<http_agent>[^"]*)"\s+"[^"]*"\s*$'
)
.status = to_int!(.status)
.digit = to_int!(.digit)
del(.log)
del(.message)
filter {
json {
source => "message"
}
dissect {
mapping => {
"log" => '%{sip} - - [%{recv_time} %{+recv_time}] "%{http_request}" %{status} %{digit} "%{chars}" "%{http_agent}" "%{ignore_tail}"'
}
tag_on_failure => ["nginx_dissect_failure"]
}
mutate {
convert => {
"status" => "integer"
"digit" => "integer"
}
}
mutate {
remove_field => ["log", "message", "ignore_tail","@timestamp","@version","event"]
}
}
声明式语法,自动重组数据字段为复杂的结构化业务模型
描述要什么,而不是如何做。只需定义最终输出的数据结构,无需编写底层处理逻辑。
read(非破坏性读取)和 take(破坏性读取)模式,支持强类型安全与自动推断。
原生 SQL 集成,在构建对象时直接查询数据库进行数据增强。
size : digit = take(size);
status : digit = take(status);
match_chars = match read(option:[wp_src_ip]) {
ip(127.0.0.1) => chars(localhost);
!ip(127.0.0.1) => chars(attack_ip);
};
str_status = match read(option:[status]) {
digit(500) => chars(Internal Server Error);
digit(404) => chars(Not Found);
};
* : auto = read();
.status = to_int!(parsed.status)
.size = to_int!(parsed.size)
if .host == "127.0.0.1" {
.match_chars = "localhost"
} else if .host != "127.0.0.1" {
.match_chars = "attack_ip"
}
if .status == 500 {
.str_status = "Internal Server Error"
} else if .status == 404 {
.str_status = "Not Found"
}
基于 wp-connector-api,支持多种数据源和输出目标