오픈소스 인사이트
home
오픈소스 기술 동향
home
🚀

최대 65% 공간 절감 : Elasticsearch LogsDB 기능 알아보기

7 more properties

대량 로그 수집은 디스크 사용률, 필요 라이선스 수 ↑

Elasticsearch 클러스터를 운영하다 보면, 빈번하게 디스크 사용량 관련 경고를 확인할 수 있습니다.
디스크 사용량이 올라갈수록, 필요한 노드 수는 많아지고 자연스럽게 비용이 함께 증가합니다.
8.15v부터 릴리즈된 Logsdb 기능을 통해 효율적인 자원 절감 효과를 누릴 수 있습니다!

Logsdb란?

Logsdb는 로그 데이터를 위한 ‘datastream’을 위한 기능으로, 기존 방식 대비 압축 개선 및 색인 시 유사한 데이터를 가까이 배치하여(호스트 명, @timestamp) 저장 효율성을 높입니다. 이는 최대 디스크 사용률을 65%까지 낮추는 효과가 있습니다.
릴리즈 버전: 8.15v에 최초 릴리즈, 8.17v에서 GA 
라이선스: 모든 라이선스에서 사용 가능
기능: ZSTD 압축, 향상된 코덱, 스마트 인덱스 정렬로 효율 향상 (+ enterprise 라이선스 사용 시 ‘synthetic _source’ 기능 자동 적용)
효과: 압축률 개선으로 디스크 스토리지 절감 효과 (기존 대비 65% )

적용 시 인덱스 변경 사항

Index의 Setting
ignore_malformed : true
필드에 설정된 것과 다른 타입의 데이터 수집 허용
ignore_dynamic_beyond_limit : true
설정된 필드 수 제한을 넘더라도 계속 색인
keyword 타입 : ignore_above : 1024
해당 필드에 허용되는 글자 수 제한
Index의 Mapping
변경 사항 없음
기본 정렬 조건 변경
host.name, @timestamp로 정렬 필드 변경
단, host.name 필드를 수집하지 않을 경우, @timestamp 기준 정렬

Limitation

‘synthetic _souce’는 원본 데이터를 ‘_source’에 저장하는 방식이 아닌, ‘doc-values’ 형태로 저장하는 기능, (필요 시 재가공 하는 방식) 20~40%의 추가적인 디스크 사용량 절감 효과가 있고 Logsdb 적용 시 자동 적용. 다만, enterprise 라이선스에서만 적용이 가능.
‘datastream’ 인덱스만 적용 가능, 일반 인덱스 적용 불가
9.0 버전부터 ‘logs’ 인덱스 템플릿에 자동 적용 (기본 인덱스 템플릿)
APM 인덱스도 적용 가능하지만, 리스크가 확인되지 않아 권장되지 않음
trade-off로 색인 및 수집 시 CPU 사용률 증가 및 인덱싱 성능 감소 (기존 대비 10~20% ↑)

설정 방법 및 부하 테스트

다음으로 Logsdb 기능이 알려진대로 실제로 어떤 효과가 있고 부하가 발생하는지 참고 용도로 부하 테스트를 진행했습니다. 우선 Logsdb 설정 방법은 인덱스 템플릿에서 ‘index.mode’를 변경하여 적용 가능합니다. 단, 해당 인덱스가 오로지 ‘datastream’인 경우에만 적용이 가능합니다.
테스트 환경
VM Elasticsearch Node (4Core, 30GB Heap, 2TB) * 3대
테스트 방법
텍스트 데이터 색인 (건 당 10,000자)
총 5분간, 초 당 100건, 1,000건씩 색인 후 해당 기간 평균 CPU, Heap, Index Latency등을 비교
인덱스 샤드 설정 (P1:R1)
결 과
100/s 색인 요청에 대해 standard, logsdb 모드의 큰 차이는 없었음
평균 CPU는 오히려 감소, 평균 Heap 사용량은 2% 증가
1000/s 색인 요청에 대해서도 유의미한 차이는 없었음
기존대비 유의미하게 큰 부하를 가져오지는 않은 것으로 확인됨
다만, 클러스터의 규모와 색인 요청 분에 따라 결과는 달라질 수 있을 것으로 예상
측정 지표
100/s (standard)
100/s (Logsdb)
1000/s (standard)
1000/s (Logsdb)
CPU Avg.
8.7%
6.9%
19%
18%
CPU Min
4%
4%
14%
8%
CPU 95th
13%
10%
25%
26%
CPU MAX
23%
24%
37%
36%
Heap Avg.
42%
44%
42%
43%
Heap Min.
13%
13%
13%
8%
Heap 95th
68%
70%
71%
70%
Heap Max.
72%
75%
75%
76%
Index Latency Avg,
0.08ms
0.09ms
0.09ms
0.09ms
Index Latency Min.
0.08ms
0.08ms
0.08ms
0.09ms
Index Latency 95th
0.09ms
0.09ms
0.09ms
0.09ms
Index Latency Max
0.09ms
0.09ms
0.09ms
0.09ms

마무리

Elasticsearch에서 제공하는 Logsdb 기능을 살펴보았습니다. 전반적인 기능과 성능을 확인하고, 부하 테스트를 통해 실제 적용 시 성능에는 어느 정도 영향을 보여주는지 체크할 수 있었습니다.
Elasticsearch 9.0 버전부터는 ‘logs-*’ 패턴의 인덱스에 대해 자동으로 적용할 정도로 권장되는 기능으로 생각되며, 디스크 사용량을 비롯해 전반적인 클러스터의 성능 및 비용 개선에 큰 도움을 줄 수 있는 기능으로 소개드립니다.

참고 자료

반윤성 프로
에스코어에서 Elastic Stack 구축 및 기술지원 업무를 수행하고 있습니다.