我实际上正在分析一些日志数据,并试图实现spark日志的grok解析器。
实际上,这是spark日志的一个输出:
14/04/14 18:51:52 INFO Client: Command for the ApplicationMaster: $JAVA_HOME/bin/java -server -Xmx640m -Djava.io.tmpdir=$PWD/tmp org.apache.spark.deploy.yarn.ApplicationMaster --class SimpleApp --jar ./spark-example-1.0.0.jar --args 'yarn-standalone' --worker-memory 1024 --worker-cores 1 --num-workers 3 1> <LOG_DIR>/stdout 2> <LOG_DIR>/stderr
这是我之前试过的grok滤镜:
(?<logtime>d{2}/d{2}/d{2} d{2}:d{2}:d{2})%{SPACE}%{LOGLEVEL:level}%{SPACE}%{WORD:srcclass}:%{SPACE}%{GREEDYDATA:data}"
这对我不起作用。有人能帮帮我吗?
多谢!
你就快成功了。唯一的问题是你的grok模式的末尾的双引号,如果你把它去掉,你就没事了。你也不需要%{SPACE}
模式,除非你想捕获那些空格。
这是我的工作:
(?<logtime>d{2}/d{2}/d{2} d{2}:d{2}:d{2}) %{LOGLEVEL:level} %{WORD:srcclass}: %{GREEDYDATA:data}
它会产生这个
{
"logtime": [
[
"14/04/14 18:51:52"
]
],
"level": [
[
"INFO"
]
],
"srcclass": [
[
"Client"
]
],
"data": [
[
"Command for the ApplicationMaster: $JAVA_HOME/bin/java -server -Xmx640m -Djava.io.tmpdir=$PWD/tmp org.apache.spark.deploy.yarn.ApplicationMaster --class SimpleApp --jar ./spark-example-1.0.0.jar --args 'yarn-standalone' --worker-memory 1024 --worker-cores 1 --num-workers 3 1> <LOG_DIR>/stdout 2> <LOG_DIR>/stderr"
]
]
}