【发布时间】:2020-10-14 14:48:54
【问题描述】:
我想使用 Grok 或 Regex 解析 logstash 中的字段。 我想获取所有以 .jar 结尾的进程名称并将它们放在一个名为 "subprocess" 的字段中 样本数据是这样的
/opt/java/jdk1.8.0_241/bin/java -server -Xms256m - Xms512m -XX:CompileThreshold=7000 -cp /opt/fmw/middleware/wlserver/server/lib/weblogic-launcher.jar -Dlaunch.use.env.classpat
到目前为止,我已经尝试过关注
.*\.jar$ #This works on regex101.com but not in logstash
(?<subprocess>[$.*\w.jar$]) #This only gives j in subprocess
任何可以提取 "weblogic-launcher.jar" 并将其放入字段 "subprocess" 的正则表达式模式都将受到高度赞赏。
谢谢
【问题讨论】:
-
我已经更新了我的问题,谢谢
-
试试
(?<subprocess>[^/]+\.jar)或(?<subprocess>[^/]+\.jar)\b,见regex101.com/r/idOV1Z/1 -
非常感谢 Wiktor - 这行得通但是我有另一个类似这样的日志
/opt/java/jdk1.8.0_241/bin/java -server -Xms256m - Xms512m -XX:CompileThreshold=7000 -cp /opt/fmw/middleware/wlserver/server/lib - jar process.jar -Dlaunch.use.env.classpat在这种情况下,正则表达式正在获取所有内容,直到 .jar 但我想要它只提取 process.jar 仅供参考,我正在 Kibana 调试器上对其进行测试 我尝试过(?<subprocess>[^/]+.jar)\b但它没有用你能解释一下它是如何工作的吗?我试过了 -
如果某个日志在同一行中有多个 .jar 进程怎么办
-
似乎也可以 - regex101.com/r/idOV1Z/2
标签: regex logstash logstash-grok