2020년 9월 15일 화요일

Logstash 필터 mutate - 2nd

mutate 필터가 제공하는 옵션들은 다른 필터와 달리 처리 순서를 갖는다.

Processing order

Mutations in a config file are executed in this order:
  • coerce
  • rename
  • update
  • replace
  • convert
  • gsub
  • uppercase
  • capitalize
  • lowercase
  • strip
  • remove
  • split
  • join
  • merge
  • copy
다음은 message 필드 데이터를 대문자로 바꿔주는 설정.
filter {
 mutate {
  uppercase => "message" 
  remove_field => [ "@timestamp", "@version", "path", "host" ]
 }
}
{
    "message" => "192.168.124.47 - - [12/OCT/2015:07:42:21 +0900] \"GET / HTTP/1.1\" 302 -\r"
}
{
    "message" => "192.168.124.47 - - [12/OCT/2015:13:42:28 +0900] \"GET /KOR/IMG/VISION.PNG HTTP/1.1\" 206 1\r"
}

대문자 변경 후, 다시 소문자로 변경하는 설정 추가.
filter {
 mutate {
  uppercase => "message" 
  lowercase => "message" 
  remove_field => [ "@timestamp", "@version", "path", "host" ]
 }
}
{
    "message" => "192.168.124.47 - - [12/oct/2015:07:42:21 +0900] \"get / http/1.1\" 302 -\r"
}
{
    "message" => "192.168.124.47 - - [12/oct/2015:13:42:28 +0900] \"get /kor/img/vision.png http/1.1\" 206 1\r"
}

uppercase, lowercase의 순서를 바꾸면?
filter {
 mutate {
  lowercase => "message" 
  uppercase => "message" 
  remove_field => [ "@timestamp", "@version", "path", "host" ]
 }
}

uppercase 옵션은 동작하지 않는다.
{
    "message" => "192.168.124.47 - - [12/oct/2015:07:42:21 +0900] \"get / http/1.1\" 302 -\r"
}
{
    "message" => "192.168.124.47 - - [12/oct/2015:13:42:28 +0900] \"get /kor/img/vision.png http/1.1\" 206 1\r"
}

지원하지 않는 순서를 유지하고 싶다면 mutate 필터를 따로 선언해줘야 함.
filter {
 mutate {
  lowercase => "message" 
 }

 mutate {
  uppercase => "message" 
  remove_field => [ "@timestamp", "@version", "path", "host" ]
 }
}
{
    "message" => "192.168.124.47 - - [12/OCT/2015:07:42:21 +0900] \"GET / HTTP/1.1\" 302 -\r"
}
{
    "message" => "192.168.124.47 - - [12/OCT/2015:13:42:28 +0900] \"GET /KOR/IMG/VISION.PNG HTTP/1.1\" 206 1\r"
}

그런데 가끔은 순서가 틀려도 잘 된다(..)
filter {
 mutate {
  merge => { "message" => "host" }
  gsub => [ "message", "-.*", "" ]
  remove_field => [ "@timestamp", "@version", "path", "host" ]
 }
}
{
    "message" => [
        [0] "192.168.124.47 ",
        [1] "MHKANG"
    ]
}
{
    "message" => [
        [0] "192.168.124.47 ",
        [1] "MHKANG"
    ]
}

관련 글

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스