来自其他字段的 Logstash 新字段与正则表达式

Logstash new field from other field with regex

来自字符串

""message" => "27.03.2018 07:53:39 [ERROR] at MyApp.Controllers.Controller.OnException: \nMessage: Controller exception!\nUser: TestUser  \nHost: MyLaptop\n\nSystem.Exception: Testing\n   at MyApp.Controllers.DoController.Do() in C:\Users\User\Source\Controllers\DoController.cs:line 20\n   at lambda_method(Closure , ControllerBase , Object[] )\n   at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)\n"" 

我正在尝试匹配“\n User \n”并将其放入名为 User 的新字段中。使用 gsub 我可以使用以下 conf 很好地改变它:

        mutate {
            gsub => [
                "message", "[\n]^User.*\n", "changed"
            ]
        }

但是将其放入 grok 会导致 grokparsefailure。我如何在 grok 中使用它?

我最后得到:

grok { 
     match => { 
        "message" => "User:%{GREEDYDATA:user}\n" 
     } 
}

这似乎匹配 "User:""\n"

之间的所有内容

给你,

User:%{SPACE}%{WORD:user}

这将使用用户名

创建一个新字段 user
{
  "SPACE": [
    [
      " "
    ]
  ],
  "user": [
    [
      "TestUser"
    ]
  ]
}