본문 바로가기
DevOps

Logstash output 분리

by 헬로월드 2021. 9. 26.
반응형

Logstash에서 들어오는 데이터를 구분하여 Elasticsearch Index로 분리해서 저장할 수 있습니다.

output {
 if 조건 {
     ...
 } else if 조건 {
     ...
 } else {
     ...
 }

 위와 같이 처리할 수 있습니다.

 

아래는 제가 적용한 logstash.conf의 예시 입니다.

input {
 tcp {
  port => 5000
  codec => json_lines
 }
}

output {
 if [log_type] and [server_name]{
  elasticsearch {
   hosts => ["https://....es.amazonaws.com:443"]
   ssl => true
   index => "log-%{[server_name]}-%{[log_type]}-%{+YYYY.MM.dd}"
   user => ""
   password => ""
   ilm_enabled => false
   manage_template => false
  }
 } else if [appname] and [profile]{
  elasticsearch {
   hosts => ["https://....es.amazonaws.com:443"]
   ssl => true
   index => "log-%{[appname]}-%{[profile]}-%{+YYYY.MM.dd}"
   user => ""
   password => ""
   ilm_enabled => false
  }
 } else {
  elasticsearch {
   hosts => ["https://....es.amazonaws.com:443"]
   ssl => true
   index => "logstash-%{+YYYY.MM.dd}"
   user => ""
   password => ""
   ilm_enabled => false
  }
 }
}

로그를 보내는 서버에서 'appname', 'profile', 'log_type', 'server_name'이름으로 Custom Field를 추가해서 보내고 있습니다.

이 custom field로 로그를 구분하고 Elasticsearch의 index로도 사용하여 저장하고 있습니다.

728x90