2024년 3월 10일 일요일

Logstash의 줄바꿈 문자 - 3rd



그래서 줄바꿈 문자가 없는 데이터는 가져오지 못함.
[2024-03-10T10:08:49,593][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
{
    "message" => "1\r"
}
{
    "message" => "2\r"
}

이때 이벤트 구분자를 없애면,
input {
 file {
  path => "d:/notepad.txt"
  start_position => "beginning"
  sincedb_path => "nul"
  delimiter => ""
 }
}

유실 없이 잘 가져온다. (구분자가 없는데 이벤트 구분을 어떻게 하는 거지?) 그런데 줄바꿈 문자까지 데이터로 인식해서 가져옴.
[2024-03-10T10:09:16,435][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
{
    "message" => "1"
}
{
    "message" => "\r"
}
{
    "message" => "\n"
}
{
    "message" => "2"
}
{
    "message" => "\r"
}
{
    "message" => "\n"
}
{
    "message" => "3"
}

줄바꿈 문자 삭제.
filter {
 mutate {
  remove_field => ["@timestamp", "@version", "host", "path"]
 }

 if [message] =~ "\r|\n" {
  drop {}
 }
}
[2024-03-10T10:09:46,465][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
{
    "message" => "1"
}
{
    "message" => "2"
}
{
    "message" => "3"
}

특이한 건 delimiter 옵션을 직접 지정해주면 데이터를 읽지 못한다.
input {
 file {
  path => "d:/notepad.txt"
  start_position => "beginning"
  sincedb_path => "nul"
  delimiter => "\n"
 }
}

왜죠?

관련 글

댓글 없음:

댓글 쓰기

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