무한 정보 세상 헤쳐나가기

Logstash 에서 timezone 적용하여 elasticsearch index 만드는 방법 정리


logstash에서 index를 생성할때 날짜처리는 일반적으로 다음과 같습니다.

```
output {
  elasticsearch {
    hosts => ["xxx.xxx.xxx.xxx"]
    index => "indexName.%{+YYMMDD}"
  }
}
```
이렇게 처리된 날짜는 모두 UTC 날짜가 생성됩니다.

모든 날짜 처리를 UTC로 한다면 문제 없겠지만(구글링 결과 대부분 UTC로 처리하고 사용하는 곳에서 timezone 처리를 하는것을 추천) 다른 로직에서 timezone을 적용하여 처리하는 부분이 있다면 이슈가 발생할 수 있습니다.

이 경우, 다음과 같은 filter를 사용하여 처리하면 시스템에 설정된 timezone을 따라 날짜를 설정할 수 있습니다.
```
filter {
  ruby {
        init => "require 'time'"
        code => "event.set('indexDate', Time.now.utc.getlocal.strftime('%Y%m%d'))"
    }
}

output {
  elasticsearch {
    hosts => ["xxx.xxx.xxx.xxx"]
    index => "indexName.%{indexDate}"
  }
}

```