Logstash에서 Grok Pattern을 적용해서 사용중에 있다.
그러다가 같은 log에서UUID
, MongoDB의ObjectId
등을 Grok Pattern으로 걸러내고 싶은 경우가 생겨 여러 시도를 해본결과 Grok Pattern을 여러개 적용한 방법을 기록해볼려고 한다.
# ...
filter {
grok {
match => {
"message" => "%{TIMESTAMP_ISO8601:timestamp} \[%{LOGLEVEL:logLevel}\s?\] %{DATA:method}:%{NUMBER:line} \- %{GREEDYDATA:msg}"
}
}
}
# ...
2023-03-16 12:43:29,528 [INFO ] com.test.service.Service.findTest:218 - ObejctId: 6bbdd18c24b0473d9a8cd983, uuid: 94600563-5af3-4f62-8a3b-b90bba92c79e
{
"_index": "test-dev-log-2023.03.16",
"_version": 1,
"_score": 0,
"message": "2023-03-16 12:43:29,528 [INFO ] com.test.service.Service.findTest:218 - ObejctId: 6bbdd18c24b0473d9a8cd983, uuid: 94600563-5af3-4f62-8a3b-b90bba92c79e",
"timestamp": "2023-03-16 12:43:29,528",
"logLevel": "INFO",
"method": "com.test.service.Service.findTest",
"line": 218,
"msg": "ObejctId: 6bbdd18c24b0473d9a8cd983, uuid: 94600563-5af3-4f62-8a3b-b90bba92c79e"
},
기존 grok 패턴 하나일 때 output을 보면 걸러내고 싶던
objectId
와uuid
가 인덱스에 적용안된 것을 확인 할 수 있다.
UUID
+ MongoDB ObejctId
# ...
filter {
grok {
match => {
"message" => "%{UUID:uuid}"
}
}
grok {
match => {
"message" => "(?<objectId>[a-z0-9]{24})"
}
}
grok {
match => {
"message" => "%{TIMESTAMP_ISO8601:timestamp} \[%{LOGLEVEL:logLevel}\s?\] %{DATA:method}:%{NUMBER:line} \- %{GREEDYDATA:msg}"
}
}
}
# ...
2023-03-16 12:43:29,528 [INFO ] com.test.service.Service.findTest:218 - ObejctId: 6bbdd18c24b0473d9a8cd983, uuid: 94600563-5af3-4f62-8a3b-b90bba92c79e
{
"_index": "test-dev-log-2023.03.16",
"_version": 1,
"_score": 0,
"message": "2023-03-16 12:43:29,528 [INFO ] com.test.service.Service.findTest:218 - ObejctId: 6bbdd18c24b0473d9a8cd983, uuid: 94600563-5af3-4f62-8a3b-b90bba92c79e",
"timestamp": "2023-03-16 12:43:29,528",
"logLevel": "INFO",
"method": "com.test.service.Service.findTest",
"line": 218,
"msg": "ObejctId: 6bbdd18c24b0473d9a8cd983, uuid: 94600563-5af3-4f62-8a3b-b90bba92c79e",
"obejctId": "6bbdd18c24b0473d9a8cd983",
"uuid": "94600563-5af3-4f62-8a3b-b90bba92c79e"
},
여러 grok 패턴을 적용했을 때
objectId
와uuid
가 인덱스에 적용된 것을 볼 수 있다.
따라서하나의 로그
에서여러 다른 패턴을 적용
하기 싶으면 위와 같이 사용하면 됩니다.