🏷️ 标签(1)

🗂️ 分类(1)

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 字段规范化

返回目录 | 返回首页