인덱스, 인덱서, 인덱서 클러스터링 / Managing Indexers and Clusters of Indexers 1 / 3

스플렁크가 데이터를 저장하는 인덱서에 대해서 알아봅니다.

인덱스(index)는 splunk의 데이터 저장소입니다.
인덱서(indexer)는 데이터(인덱스)를 저장하는 스플렁크 인스턴스입니다.
splunk에 데이터가 저장되는 것을 “인덱싱 (indexing) 된다” 라고 표현합니다.

인덱스 / Index

스플렁크에 들어온 데이터는 이벤트로 변환되어 인덱스에 저장됩니다. 데이터를 인덱스에 저장할 때 크게 2가지로 나뉘어 저장됩니다.

  • rawdata : 압축된 형태의 원시 데이터와 일부 메타데이터
  • tsidx file : 원시 데이터를 찾을 때 사용되는 책갈피(index, 색인) 데이터
    • 책갈피(index, 색인) 데이터 : 데이터를 찾을 때 사용하는 데이터, 굳이 책갈피라는 용어를 사용한 이유는 인덱스라는 용어가 splunk에서는 저장소로 사용되기 때문에 헷갈릴 수 있어서 조금 어색할 수 있지만 책갈피라는 단어를 사용했습니다.

이 데이터들은 파일로 구성되어 디렉터리에 저장되는데 이 디렉터리를 버킷 이라고 합니다. 버킷은 시간에 따라 여러 단계로 나뉘어집니다.

  • hot
  • warm
  • cold
  • frozen

처음 데이터를 저장하면 hot 버킷에 저장되고 일정 시간이 지나면 warm 버킷으로 또 일정 시간이 지나면 cold 버킷으로 상태가 변화합니다. 이렇게 버킷의 상태가 변화하는 것을 “롤링 / rolling 된다”고 부릅니다. frozen 버킷은 데이터를 archiving 할 때 사용됩니다. (데이터를 archiving해서 frozen 버킷에 저장하면 검색이 되지 않습니다.)

이런 버킷들의 모임이 인덱스입니다. 인덱스의 위치는 보통 $SPLUNK_HOME/var/lib/splunk입니다.
(인덱스를 생성할 때 변경해 줄 수 있습니다.)

인덱서 / Indexer

인덱서는 인덱스를 생성하고 관리하는 splunk 인스턴스입니다. 인덱서의 주요 기능은 두 가지입니다.

  • 수신 데이터 인덱싱
  • 인덱싱 된 데이터 검색

외부에서 데이터가 인덱서로 보내지면 인덱서는 데이터를 인덱스에 저장합니다. 저장된 데이터는 검색이 실행되면 쿼리에 맞춰 데이터를 찾아 반환됩니다.

인덱서 클러스터링 / Indexer Clustering

splunk는 규모에 따라 단일 인스턴스로 구성할 수 있지만 저장하려는 데이터 가용성 증가와 손실 위험을 줄이기 위해 인덱서를 여러 개 묶어 인덱서 클러스터링 구조로 만듭니다.

인덱서 클러스터링은 서로 데이터를 복제해 여러 복사본을 유지합니다. 클러스터의 인덱서들은 동일한 데이터 복사본을 여러 개 유지하면서 데이터의 손실을 방지하고 가용성을 증가시킵니다.

인덱서 클러스터링 구성에는 기능에 따라 세가지 노드로 나누게 됩니다.

  • manager node : 클러스터링을 관리합니다.
  • peer node : 인덱서를 지칭합니다. 데이터를 인덱싱 하고, 인덱싱 된 데이이터를 반환합니다.
  • search head : 데이터를 검색하기 위한 서치 헤드입니다.

인덱서 클러스터링을 구성하면 (최소 2개의 인덱서부터 구성 가능) 데이터는 각각의 인덱서에 복제되어 저장됩니다. 때문에 하나의 인덱서가 문제가 생겼을 때에도 데이터 수집, 검색 등 모두 정상적으로 기능하게됩니다.

인덱스 만들기

splunk web -> 앱 -> search & reporting -> 설정 -> 인덱스 -> 새로 만들기 인덱스 -> 설정, 저장

create indexer 1
  • 인덱스 이름 : 사용할 인덱스 명, 검색할 때 사용할 인덱스 명
  • 홈 경로 : hot/warm 버킷의 경로
  • cold 경로 : cold 버킷의 경로
  • Thawed 경로 : frozen 버킷의 경로
  • 전체 인덱스의 최대 크기 : 500G
    • 데이터 보관 기간 : 6년

데이터가 저장될 위치를 설정할 수 있습니다. 이 설정을 이용해서 데이터를 다른 디스크에 저장할 수 있습니다.(대용량 데이터를 다뤄야 할 경우 디스크를 분리해서 저장하는게 관리에 큰 도움이 됩니다. 저는 꼭 분리하는 것을 추천드립니다.)

데이터 보관 기간

스플렁크에서는 두 가지 조건 중 하나가 충족 되면 가장 오래된 시간의 데이터부터 삭제합니다. 두 조건은 시간, 용량입니다. 최초 기본 설정(default)은 6년과 500G입니다.

만약 test_index의 데이터가 3기가만큼 있어도 오래된 데이터의 시간이 6년 전이라면 삭제됩니다. 6년 전 데이터부터 순차적으로 삭제 됩니다. 마찬가지로 500G의 데이터가 있을 때 마지막 데이터가 3개월 전 데이터라고 한다면 500G가 넘어가는 순간 3개월 전 데이터부터 순차적으로 삭제되고 다시 수집하게 됩니다.

indexes.conf

splunk의 여러 설정들은 conf 파일로 관리됩니다. 인덱스를 설정하는 conf 파일은 indexes.conf입니다.

indexes.conf 파일은 $SPLUNK_HOME/etc/apps/search/local 위치에 생성됩니다.
(splunk web -> 앱 -> search & reporting -> 설정 -> 인덱스 -> 새로 만들기 인덱스 -> 설정, 저장 이 방법대로 생성해야 해당 위치에 생성됩니다. 만약 다른 앱에서 설정 -> 인덱스로 넘어가서 만들었다면 다른 앱에서 생성됩니다.)

indexes.conf에 들어가 보면 test_index라는 이름의 설정들이 생긴 것을 확인할 수 있습니다. indexes.conf에는 위 설정들 말고도 여러가지 기능의 설정들이 있습니다. indexes.conf – doc

인덱스 삭제

인덱스를 삭제하게 되면 저장되어 있는 데이터가 모두 삭제됩니다. 삭제하는 방법은 간단합니다.

splunk_web -> 설정 -> 인덱스 -> 삭제

삭제 후 indexes.conf파일에서 [test_index]가 사라지는 것을 확인할 수 있습니다. 지워진 데이터는 절대 복구할 수 없습니다.!

마무리

스플렁크 인덱스, 인덱서에 대해서 간단하게 알아봤습니다. 해당 개념은 splunk를 사용하면서 알아야하는 기본 개념입니다. 어려운 부분이 아니니 잘 익히셔서 스플렁크 운영에 도움 되시면 좋겠습니다. 감사합니다.

출처 – splunk doc

먼저 보면 좋을 splunk 기본 개념