В splunk все данные хранятся в buckets, которые в свою очередь входят в индексы.
Также репликация в кластере происходит именно с помощью копирования bucket на ноды.
Виды bucket
В splunk существует 5 вида bucket:
- hot ( горячий )
- warm ( теплый )
- cold ( холодный )
- frozen ( замороженный )
- thawed ( размороженный )
Как хранятся данные ( index ) в splunk
По мере старения bucket переходит от состояния к состоянию проходя первые 4 вида.
hot bucket
Когда данные индексируются ( поступают в splunk ) впервые они находятся в hot bucket
. Количество hot bucket
множественное, ограничивается для каждого индекса в файле $SPLUNK_HOME/etc/system/local/indexes.conf
параметром maxHotBuckets. Данные в hot bucket
доступны для поиска.
Чтобы посмотреть количество hot bucket
можно выполнить запрос:
| dbinspect index=*
| search state=hot
| stats count as bucket_count min(startEpoch) as earliest_event by index splunk_server
| eval earliest_event_human = strftime(earliest_event, "%c")
warm bucket
Когда hot bucket
достигает определённого размера ( maxDataSize ) или предела maxHotBuckets то hot bucket
становится warm bucket
. Т.е файл hot bucket
переименовывается в warm bucket
и хранится в том же месте ( homePath
в $SPLUNK_HOME/etc/system/local/indexes.conf
). warm bucket
также доступен для поиска, но не доступен для записи. Количество warm bucket
множественное, ограничивается для каждого индекса в файле $SPLUNK_HOME/etc/system/local/indexes.conf
параметром maxWarmDBCount, по умолчанию 300.
Есть формула для расчета количества warm bucket
:
maxWarmDBCount = (LocalDiskSpace-minFreeSpace-(maxHotBuckets*maxDataSize))/maxDataSize
Чтобы посмотреть количество warm bucket
можно выполнить запрос:
| dbinspect index=*
| search state=warm
| stats count as bucket_count min(startEpoch) as earliest_event by index splunk_server
| eval earliest_event_human = strftime(earliest_event, "%c")
cold bucket
Когда warm bucket
достигает определённого размера или предела maxWarmDBCount то warm bucket
становится cold bucket
. Т.е файл warm bucket
переименовывается в cold bucket
и хранится в отличном от месте от warm bucket
и hot bucket
( coldPath в $SPLUNK_HOME/etc/system/local/indexes.conf
). Это сделано для возможности перенести cold bucket
на более дешевое хранилище данных.
Первым в состояние cold bucket
переходит самое старое warm bucket
. Т.е чем старее, тем раньше перейдёт в cold bucket
.
Чтобы посмотреть количество cold bucket
можно выполнить запрос:
| dbinspect index=*
| search state=cold
| stats count as bucket_count min(startEpoch) as earliest_event by index splunk_server
| eval earliest_event_human = strftime(earliest_event, "%c")
frozen bucket
Наконец, после выполнения некоторых других условий, зависящих от времени ( frozenTimePeriodInSecs ) или размера ( maxTotalDataSizeMB ) , cold bucket
переходят в frozen bucket
, после чего они удаляются из индекса после дополнительной архивации. Данные в frozen bucket
не доступны для поиска.
По умолчанию frozen bucket
удаляются а не архивируются.
Также frozen bucket
может быть переведён в thawed bucket
, который будет доступен для поиска.
Архивирование frozen bucket
Для активирования архивирования frozen bucket
нужно добавить в $SPLUNK_HOME/etc/system/local/indexes.conf
параметры coldToFrozenDir и coldToFrozenScript
coldToFrozenScript может быть $SPLUNK_HOME/bin/coldToFrozenExample.py
, который по умолчанию идёт со splunk или свой собственный скрипт.
Также стоит обратить внимание на то что при использовании кластера количество архивов будет ровняться количеству replication factor
Восстановление frozen bucket ( thawed bucket )
Копируем файлы thawed bucket
в папку thawedPath, которая назначена в $SPLUNK_HOME/etc/system/local/indexes.conf
. Когда архивные данные уже не нужны удаляем файлы.
Директории по умолчанию
Состояние bucket | Директория |
---|---|
Hot | $SPLUNK_HOME/var/lib/splunk/defaultdb/db/* |
Warm | $SPLUNK_HOME/var/lib/splunk/defaultdb/db/* |
Cold | $SPLUNK_HOME/var/lib/splunk/defaultdb/colddb/* |
Frozen | по умолчанию удаляются, можно изменить |
Thawed | $SPLUNK_HOME/var/lib/splunk/defaultdb/thaweddb/* |
Комментарии