用于提取部分字符串的 Logstash grok 模式以开头和结尾
Logstash grok pattern to extract a part of String starts with and ends with
我正在尝试提取应用程序 ID。
作为示例,我需要提取
application_1621858977521_0074
来自以下日志行
/yarn/container-logs/application_1621858977521_0074/container_1621858977521_0074_01_000004 [2021-06-08 05:40:06,231] INFO Changing view acls groups to: (org.apache.spark.SecurityManager)
我尝试了以下自定义 grok 模式,但没有用。
%{(^application_:/$):appID}%
感谢您的建议和帮助
您可以使用
/(?<applicationId>application(?:_[0-9]+)+)/
快速备选方案是:
/(?<applicationId>application(?:_\w+)+)/
/(?<applicationId>application_[^/]*)
参见regex demo。
模式(添加 /
作为路径分隔符):
/
- 一个 /
字符
(?<applicationId>application(?:_[0-9]+)+)
- 组“applicationId”:application
然后 _
和一个或多个数字 的一次或多次重复
/
- 一个 /
字符
[^/]*
- /
. 以外的零个或多个字符
Grok 调试器使用您给定的字符串显示以下输出:
{
"applicationId": [
[
"application_1621858977521_0074"
]
]
}
我正在尝试提取应用程序 ID。
作为示例,我需要提取
application_1621858977521_0074
来自以下日志行
/yarn/container-logs/application_1621858977521_0074/container_1621858977521_0074_01_000004 [2021-06-08 05:40:06,231] INFO Changing view acls groups to: (org.apache.spark.SecurityManager)
我尝试了以下自定义 grok 模式,但没有用。
%{(^application_:/$):appID}%
感谢您的建议和帮助
您可以使用
/(?<applicationId>application(?:_[0-9]+)+)/
快速备选方案是:
/(?<applicationId>application(?:_\w+)+)/
/(?<applicationId>application_[^/]*)
参见regex demo。
模式(添加 /
作为路径分隔符):
/
- 一个/
字符(?<applicationId>application(?:_[0-9]+)+)
- 组“applicationId”:application
然后_
和一个或多个数字 的一次或多次重复
/
- 一个/
字符[^/]*
-/
. 以外的零个或多个字符
Grok 调试器使用您给定的字符串显示以下输出:
{
"applicationId": [
[
"application_1621858977521_0074"
]
]
}