본 포스팅은 2024년 04월 25일을 기준으로 작성되었습니다.
Down-Sampling은 메트릭 데이터와 같은 시계열(time-sries)데이터를 세분화하여 별도의 인덱스로 저장하는 방법입니다.
기존의 메트릭 데이터는 시계열 흐름에 따라 여러 개의 document로 쌓여있습니다. Down-Sampling은 특정 time interval(시간 간격)으로 이 document들의 요약 정보를 담고 있는 새로운 인덱스를 생성합니다.
Down-Sampling된 인덱스 안에 포함되는 요약된 정보에는 기존 메트릭 데이터의 max, min, sum, value_count 등의 통계 정보가 포함되어 있습니다.
그렇다면 이러한 Down-Sampling을 하는 이유는 무엇일까요?
Down Sampling이 되는 데이터는 메트릭 데이터, 즉 TSDS 타입의 인덱스여야 합니다.
그렇지 않으면, down sampling 진행시 TSDS의 설정이 없어서 발생하는 에러가 반환됩니다.
time series 데이터는 여러 개의 dimention으로 나누어지며, 이는 연속 함수로 표현됩니다.
여기서 dimention은 time series를 특정 기준으로 분해주는 기준이며, 자세한 내용은 TSDS 항목에서 확인하실 수 있습니다.(링크)
down sampling시 이 dimention 필드를 기준으로 group by하여 time series를 여러개의 dimention으로 나누어줍니다.
이렇게 Down Sampling 대상이 되는 TSDS 인덱스는 Time series를 구분해주는 dimention 필드들과 나머지 메트릭 필드로 구성됩니다.
가장 최신 데이터의 경우, 메트릭 데이터는 일반적으로 샘플링 시간 간격이 짧기 때문에 높은 데이터 해상도가 필요한 쿼리에 최적화되어 있습니다.
이에 down-sampling은 원래의 시계열을 더 높은 샘플링 간격의 data stream과 기존 데이터의 통계값들로 대체합니다.
이를 기존 인덱스(상대적으로 오래된)에 적용하여 엑세스 빈도가 낮은 dimention의 빈도를 줄입니다.
예를 들어, 원래 메트릭 샘플이 10초마다 수집되었을 경우, 데이터가 오래됨에 따라 샘플의 세분성을 시간별 또는 일별로 줄이도록 선택할 수 있습니다.
메트릭 데이터는 ILM에서 설정한 주기에 따라 지속적으로 roll-over 됩니다.
그렇게 해당 Data Stream 안에 roll-over된 backing index가 계속 쌓이게 됩니다.
ILM 설정으로 오래된 backing index를 삭제해줄 수 있지만 데이터 용량을 아낄 수 있는 더 좋은 방법이 있습니다.
그것이 바로 Down-Sampling입니다.
Down-sampling된 인덱스에는 기존 backing index를 요약한 정보가 담겨 있게 됩니다.
그리고 기존 backing index들은 down-sampling된 인덱스가 생성되면 ILM 설정에 의해 삭제됩니다.
그렇게 되면 기존 backing index들을 삭제함으로서 데이터 용량을 아끼고, 기존 backing index의 정보는 down-sampling된 인덱스의 요약 정보를 참조하여 확인할 수 있습니다. (down-sampling된 인덱스는 기존 backing index 묶음보다 용량이 훨씬 적습니다.)
이렇게 설정한 time interval(시간 간격)마다 down-sampling index를 생성합니다.
down sampling을 적용하는 방법으로는 down sampling API를 직접 활용하는 방법과 ILM에서 설정하는 방법이 있습니다.
down-sampling 대상이 될 인덱스와 down-sampling 인덱스의 이름을 직접 설정해줍니다.
fixed_interval로 down sampling index를 생성할 시간 간격을 설정합니다.
예를 들어, 60m은 60분 마다 down-sampling을 적용하며, Elasticsearch의 표준 시간 서식 구문을 따릅니다.
down-sampling된 인덱스는 기존의 _search나 _async_search로 조회 가능합니다.
가장 많이 사용하는 방법입니다.
ILM의 hot, warm, cold phase에서 설정 가능합니다.
해당 ILM이 적용된 data stream의 backing 인덱스 목록에서 data-sampling으로 생성된 인덱스를 확인할 수 있습니다.
Down sampling index가 생성되면 해당 time interval 내의 backing index는 삭제됩니다.
HOT phase에서 down-sampling을 적용하려먼 roll-over 작업이 구성되어 있어야 합니다. 그렇지 않으면 ILM은 해당 정책을 reject합니다.
따로 설정이 없으면 dowm sampling된 인덱스의 이름은 downsample-<time interval>-<original-index-name>-<random-uuid> 형식을 따릅니다.