ELK에서 Logstash로 저장 시 시간 데이터가 US 시간으로 저장되는 문제 해결
1. 문제 발생
Logstash에서 now를 이용해 시간 데이터를 저장할 때, 기본적으로 미국(US) 시간대로 저장되는 문제가 발생했다. 이는 Kibana에서 데이터를 조회할 때 예상과 다른 시간 값이 표시되는 원인이 되었다.
2. 문제 원인
- Logstash의 기본 타임존(Timezone)이 UTC로 설정되어 있음
- Logstash는 시간 데이터를 UTC 기준으로 처리하며, 명시적으로 타임존을 설정하지 않으면 기본적으로 UTC가 적용된다.
- 따라서 한국(KST)에서 저장한 데이터도 9시간이 빠진 UTC 시간으로 저장된다.
- Elasticsearch도 기본적으로 UTC를 사용
- Elasticsearch는 시간 데이터를 ISO 8601 형식으로 저장하며, 별도의 변환 없이 UTC 기준으로 처리한다.
- Kibana에서 데이터를 조회하면 한국 시간(KST)이 아닌 UTC 기준으로 표시될 수 있다.
3. 문제 해결책 수립
해결 방법 비교
해결 방법 | 설명 | 장점 | 단점 |
Logstash에서 타임존 변환 | 필터를 적용하여 KST로 변환 후 저장 | 설정이 간단함 | 데이터 변환 과정 필요 |
Elasticsearch의 Ingest Pipeline 사용 | Ingest Pipeline에서 타임존을 변환 | Elasticsearch에서 직접 처리 가능 | 추가 설정 필요 |
Kibana에서 시간대 변환 | Kibana 설정을 변경하여 한국 시간으로 표시 | 기존 데이터 수정 불필요 | 단순 표시만 변경됨 |
4. 문제 해결: Logstash에서 타임존 변환 적용
(1) Logstash에서 타임존 변환 적용
Logstash의 date 필터를 사용하여 UTC → KST 변환을 수행한다.
filter {
date {
match => ["@timestamp", "ISO8601"]
timezone => "Asia/Seoul"
}
}
- @timestamp 필드에 대해 ISO 8601 형식을 매칭하여 KST(한국 표준시)로 변환함.
- 변환된 데이터는 Elasticsearch에 저장될 때 한국 시간으로 반영됨.
(2) Kibana에서 시간대 설정 변경 (보완책)
Logstash에서 변환하지 못한 데이터가 있을 경우, Kibana 설정에서 시간대를 변경할 수 있다.
- Kibana 설정 변경:
- Management → Advanced Settings → dateFormat:tz 값을 Asia/Seoul로 변경.
- Kibana에서 UTC 시간을 한국 시간(KST)으로 변환하여 표시한다.
5. 결론
- Logstash의 기본 타임존은 UTC이므로, 한국 시간으로 저장하려면 변환 작업이 필요하다.
- Logstash의 date 필터를 사용하여 Asia/Seoul로 변환하는 것이 가장 효율적인 방법이다.
- 추가적으로 Kibana 설정을 변경하면 데이터 표시를 한국 시간으로 맞출 수 있다.
- 이 방식으로 저장된 시간 데이터는 이후 검색 및 분석 시 혼란 없이 사용할 수 있다.
'트러블슈팅&기술선택' 카테고리의 다른 글
Elasticsearch의 클러스터링 적용 이유 (0) | 2025.03.19 |
---|---|
Elasticsearch의 실제 검색 속도 테스트 (0) | 2025.03.19 |
Elasticsearch 샤드 관리와 확장 (0) | 2025.03.19 |
Elasticsearch 데이터 접근 방법 (0) | 2025.03.19 |
Elasticsearch 기술 선택 (0) | 2025.03.19 |