2021년 10월 30일 토요일

하위 디렉토리 재귀 접근

C:\log 하위 디렉토리의 모든 로그를 가져와보자.
C:\log>dir /b/s
C:\log\1001
C:\log\1002
C:\log\1003
C:\log\1004
C:\log\1005
C:\log\1001\1001.log
C:\log\1002\1002.log
C:\log\1003\1003.log
C:\log\1004\1004.log
C:\log\1005\1005.log
C:\log\1005\last
C:\log\1005\last\last.log

다음은 로그스태시 설정.
input {
 file {
  path => "c:/log/*/*.log"
  start_position => "beginning"
  sincedb_path => "nul"
 }
}

filter {
 mutate { remove_field => [ "@timestamp", "@version", "host", "message" ] }
}

output {
 stdout {}
}

실행 결과는 이렇다. C:\log\1005\last 경로는 접근하지 못함.
[2021-10-30T19:59:02,048][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
{
    "path" => "c:/log/1001/1001.log"
}
{
    "path" => "c:/log/1002/1002.log"
}
{
    "path" => "c:/log/1003/1003.log"
}
{
    "path" => "c:/log/1004/1004.log"
}
{
    "path" => "c:/log/1005/1005.log"
}

2단계 이상의 하위 디렉토리에 접근하려면 재귀 접근을 지원하는 ** 패턴을 사용해야 한다. 설정 변경.
 file {
  path => "c:/log/**/*.log"
  start_position => "beginning"
  sincedb_path => "nul"
 }

C:\log\1005\last 경로 접근 성공.
[2021-10-30T20:00:18,937][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
{
    "path" => "c:/log/1001/1001.log"
}
{
    "path" => "c:/log/1002/1002.log"
}
{
    "path" => "c:/log/1003/1003.log"
}
{
    "path" => "c:/log/1004/1004.log"
}
{
    "path" => "c:/log/1005/1005.log"
}
{
    "path" => "c:/log/1005/last/last.log"
}

filebeat

beat 역시 로그스태시와 똑같이 동작한다. 다음 설정은 1단계 하위 디렉토리만 접근 가능
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - c:\log\*\*.log
{
  "@timestamp": "2021-10-30T11:03:38.449Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "7.15.0"
  },
  "log": {
    "file": {
      "path": "c:\\log\\1001\\1001.log"
    }
  }
}
{
  "@timestamp": "2021-10-30T11:03:38.449Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "7.15.0"
  },
  "log": {
    "file": {
      "path": "c:\\log\\1002\\1002.log"
    }
  }
}
{
  "@timestamp": "2021-10-30T11:03:38.449Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "7.15.0"
  },
  "log": {
    "file": {
      "path": "c:\\log\\1003\\1003.log"
    }
  }
}
{
  "@timestamp": "2021-10-30T11:03:38.450Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "7.15.0"
  },
  "log": {
    "file": {
      "path": "c:\\log\\1004\\1004.log"
    }
  }
}
{
  "@timestamp": "2021-10-30T11:03:38.450Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "7.15.0"
  },
  "log": {
    "file": {
      "path": "c:\\log\\1005\\1005.log"
    }
  }
}

다음 설정은 2단계 이상 접근 가능.
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - c:\log\**\*.log
{
  "@timestamp": "2021-10-30T11:15:04.639Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "7.15.0"
  },
  "log": {
    "file": {
      "path": "c:\\log\\1001\\1001.log"
    }
  }
}
{
  "@timestamp": "2021-10-30T11:15:04.639Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "7.15.0"
  },
  "log": {
    "file": {
      "path": "c:\\log\\1002\\1002.log"
    }
  }
}
{
  "@timestamp": "2021-10-30T11:15:04.639Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "7.15.0"
  },
  "log": {
    "file": {
      "path": "c:\\log\\1003\\1003.log"
    }
  }
}
{
  "@timestamp": "2021-10-30T11:15:04.640Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "7.15.0"
  },
  "log": {
    "file": {
      "path": "c:\\log\\1004\\1004.log"
    }
  }
}
{
  "@timestamp": "2021-10-30T11:15:04.640Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "7.15.0"
  },
  "log": {
    "file": {
      "path": "c:\\log\\1005\\1005.log"
    }
  }
}
{
  "@timestamp": "2021-10-30T11:15:04.640Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "7.15.0"
  },
  "log": {
    "file": {
      "path": "c:\\log\\1005\\last\\last.log"
    }
  }
}


관련 글

댓글 없음:

댓글 쓰기

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