4.3 Pipeline 规则实战
4.3 Pipeline 规则实战
目标
通过示例演示如何解析 Nginx 访问日志,并标准化字段。
示例日志
127.0.0.1 - - [16/Feb/2026:10:00:00 +0800] "GET /api/ping HTTP/1.1" 200 12 "-" "curl/7.81.0"
Grok 规则示例
rule "nginx_access_grok"
when
has_field("message")
then
let m = grok("%{IP:client_ip} - - \[%{HTTPDATE:ts}\] \"%{WORD:method} %{URIPATHPARAM:path} HTTP/%{NUMBER:http_version}\" %{INT:status} %{INT:bytes} \"%{DATA:ref}\" \"%{DATA:ua}\"", to_string($message.message));
set_fields(m);
end
字段标准化
rule "normalize_fields"
when
has_field("status")
then
set_field("http_status", to_long($message.status));
remove_field("status");
end
建议
-
日志格式复杂时,优先使用 Pipelines
-
统一字段命名(client_ip、http_status、request_path)
小结
本章演示了规则实战。下一章介绍字段规范化策略。
下一节:4.4 字段规范化