Logstash에서 수집한 데이터를 Elasticsearch에 저장할 때, KST를 인덱스명에 사용하고 싶다면 아래와 같이 ruby
코드를 활용해 날짜를 선언하여 사용해야 합니다. ruby
코드를 통해 field
를 선언하고, 해당 필드를 output
에서 사용하는 방식을 통해 원하는 날짜를 설정할 수 있습니다. 만약, 설정하지 않은 채 날짜를 입력하면 UTC
를 기준으로 생성됩니다.
input {
beats {
port => 5044
}
}
filter {
ruby {
code => "event.set('index_day', event.get('@timestamp').time.localtime('+09:00').strftime('%Y%m%d-%H%M'))"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "practice-%{index_day}"
}
}
strftime
에서 날짜를 지정할 때 사용하는 형식은 다음과 같습니다.
Format | Description | Example |
---|---|---|
%b | Shortened month name | "Jan" |
%B | Full month name | "January" |
%m | Numbered month of the year (01..12) | "01" |
%d | Day of the month (01..31) | "15" |
%j | Day of the year (001..366) | "123" |
%a | Shortened weekday name | "Mon" |
%A | Full weekday name | "Monday" |
%w | The numeric day of the week (0..6) | "1" |
%U | Numeric week number in the year (0..53) [starting with the first Sunday] | "22" |
%W | Numeric week number in the year (0..53) [starting with the first Monday] | "22" |
%y | Two-digit year (00..99) | "99" |
%Y | Four-digit year | "2022" |
%H | Hour of the day (military time) (00..23) | "18" |
%I | Hour of the day (12-hour clock) (01..12) | "08" |
%M | Minute of the hour (0..59) | "15" |
%S | Second of the minute (0..59) | "30" |
%p | AM or PM | "PM" |
%Z | Time zone name | "Central Time (US & Canada)" |