개발하는 두부

Logstash에서 Elasticsearch 인덱스 한국 시간(KST) 추가해서 생성하기

by 뚜부니

Elasticsearch에 인덱스를 추가할 때, index-20241111 과 같이 날짜를 넣어 보려고 합니다.

근데 Logstash에서 Elasticsearch에 데이터를 인입한 시간이 기록되는 @timestampUTC 기준이에요..!!

(당황)(황당)

Logstash에서 Elasticsearch 인덱스 한국 시간(KST) 추가해서 생성하기

Logstash에서 수집한 데이터를 Elasticsearch에 저장할 때, KST를 인덱스명에 사용하고 싶다면 ruby 코드를 활용해 날짜를 선언하여 사용해야 합니다. Logstash 설정 파일(.conf)를 보며 설명드릴게요 😊

input {
	beats {
		port => 5044
	}
}

filter {
    ruby {
      code => "event.set('index_day', event.get('@timestamp').time.localtime('+09:00').strftime('%Y%m%d'))"
    }
}

output {
    elasticsearch {
        hosts => ["localhost:9200"]
        index => "practice-%{index_day}"
    }
}
  • input : Filebeat로부터 데이터를 가져오기 위한 설정입니다.
  • filter : KST 시간대로 인덱스를 생성하기 위한 필터링을 적용하는 설정입니다.
  • output : elastiscsearch로 데이터를 내보내기 위한 설정입니다.

여기서 filter에 ruby 플러그인을 사용하여 @timestamp 필드에 KST를 적용한 시간을 index_day라는 필드로 가져옵니다.

filter {
    ruby {
      code => "event.set('index_day', event.get('@timestamp').time.localtime('+09:00').strftime('%Y%m%d'))"
    }
}
  • event.set('index_day', ...) : 새로운 필드인 index_day  설정
  • time.localtime(기준 시간) : 시간대 설정
    • 한국 표준시(KST, UTC+09:00) 설정을 위해 '+09:00'를 기준 시간으로 입력

참고

 

블로그의 정보

개발하는 두부

뚜부니

활동하기