1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Splunk】インデックスの実体について調べてみる

Posted at

こんにちは。torippy1024です。

本日は、Splunkのインデックスの実体について調べたことを書きます。
Splunkでは、インデックスと呼ばれる単位でデータを保管しています。
ユーザーとして利用するだけであれば、インデックスの使い方や仕様を理解すれば良いのですが、エンジニアとしてはどのような仕組みで作られているのかが気になったので、簡単に調べてみました。

インデックスとは何か

インデックスとは、Splunkにおけるデータの格納単位です。
Splunkは、Forwarderなどから転送されてきたデータを、Bucketと呼ばれる単位で時系列に分割し、保存しています。Bucketについて、あまりユーザーは意識する必要はありません。Buckerの集合がインデックスです。ユーザーは、データの保管先をインデックス単位で指定すれば、BucketはSplunkが勝手に作成してくれます。

データの保管先をインデックス単位で分割することには、以下のメリットがあります。

  • インデックス単位でアクセス権限を設定できる
    • ロールによって、インデックス単位でアクセス権限を変更することができます。例えば営業部署と開発部署と運用部署などでアクセス権限を変更したいときは、インデックスによってログデータの保管先を変更します。
  • Retension Policy(保持期間ポリシー)を設定できる
    • インデックスは、容量または保持日数によってデータの保管上限を設定できます。容量と保持日数について、両方の上限を設定することはできますが、その場合、組み合わせによってデータを保持し続けることはできません。どちらか片方の上限を満たすと、データはアーカイブされるようになります。(例えば、上限1.0GBかつ保持日数30日を設定した、1.0GBまたは30日のいずれかが満たされた場合アーカイブされます。1.0GBかつ30日の両方が満たされた場合にアーカイブすることはできません)

参考:
What's in an index?
https://docs.splunk.com/Documentation/Splunk/latest/Indexer/Howindexingworks#What.27s_in_an_index.3F
How the indexer stores indexes
https://docs.splunk.com/Documentation/Splunk/latest/Indexer/HowSplunkstoresindexes

インデックスのライフサイクル

インデックスのBucketには、Hot, Warm, Cold, Frozen, Thawedという世代があります。
最新のデータが書き込まれる場所がHot Bucketです。
最新のデータが書き込まれなくなると、BucketはWarm状態にロールし、それから別のディレクトリに移動されCold状態となります。Cold状態までがサーチが可能なBucketです。
そしてデータが完全にアーカイブされるとFrozen状態となります。
Thawedは、いったんFrozenとなったBucketを、再度サーチ可能な状態に解凍したBucketとなります。

名称 バケットの状態 ディレクトリパス
Hot 最新のデータが書き込まれるBucket. $SPLUNK_HOME/var/lib/splunk/< index_name>/db
Warm 最新のデータが書き込まれなくなったBucket. ディレクトリパスはHotと同じ。 $SPLUNK_HOME/var/lib/splunk/< index_name>/db
Cold 最新のデータが書き込まれなくなり、別のディレクトリパスに移動されたBucket.(Hot/Warmと比較して低速で安価なストレージを用いることが可能) $SPLUNK_HOME/var/lib/splunk/< index_name>/colddbdb
Frozen アーカイブされたBucket.(バックアップ用の最も安価なストレージを用いることが可能) (ユーザー側で指定)
Thawd 再度サーチ可能な状態に解凍したBucket. $SPLUNK_HOME/var/lib/splunk/< index_name>/thaweddb

※Linuxの場合、$SPLUNK_HOME=/opt/splunkです。

参考:
https://docs.splunk.com/Documentation/Splunk/latest/Indexer/HowSplunkstoresindexes#How_data_ages

インデックスの実体

インデックスの実体は、インデックス単位に分割されたBucketディレトクリに含まれるファイルの集合です。
そしてBucketは、大雑把には以下で構成されます。

  • Raw Data(Jornalファイル)
  • Time Series Indexファイル(tsidxファイル)
  • メタデータファイル(dataファイル)

すでに上の表でも記載していますが、インデックスの格納先は以下となっています。

インデックスのデフォルト格納先:
$SPLUNK_HOME/var/lib/splunk/

Bucketディレクトリの命名規則:
db_<earliest_time>_<latest_time>_<bucket_id>
ここで、< earliest_time>と< latest_time>は、Bucketデータの開始時間と終了時間をUNIXタイムスタンプ形式で示したもので、< bucket_id>はBucket IDを表します。

例えば、デフォルトのインデックス(main)のHot Bucketに格納されているディレクトリとファイルは以下となります。
(mainインデックスのみ、mainという名前でなくdefaultdbという名前のインデックス名ディレクトリとなっているようですが、通常はインデックス名がディレクトリ名になります)

ls -l /opt/Splunk/var/lib/splunk/defaultdb/db/
-rw-------   1 splunk  splunk   10  7 26 10:09 CreationTime
drwx--x---   2 splunk  splunk   64  7 26 10:09 GlobalMetaData
drwx--x---  12 splunk  splunk  384  8 19 02:56 db_1718722800_1711911201_1
drwx--x---  12 splunk  splunk  384  8 19 20:26 db_1720537200_1713106800_3
drwx--x---  13 splunk  splunk  416  8 19 02:56 db_1723561200_1719858082_2

ls -l  /opt/Splunk/var/lib/splunk/defaultdb/db/db_1720537200_1713106800_3
total 64
-rw-------  1 splunk  splunk  8352  8 19 20:26 1720537200-1713106800-10717657684032629512.tsidx
-rw-------  1 splunk  splunk   105  8 19 20:26 Hosts.data
-rw-------  1 splunk  splunk   106  8 19 20:26 SourceTypes.data
-rw-------  1 splunk  splunk   109  8 19 20:26 Sources.data
-rw-------  1 splunk  splunk   406  8 19 20:26 Strings.data
-rw-------  1 splunk  splunk    67  8 19 03:52 bucket_info.csv
-rw-------  1 splunk  splunk     0  8 19 20:26 optimize.result
drwx------  4 splunk  splunk   128  8 19 20:26 rawdata

ここで、rawdataディレクトリの中にRaw Data(Journalファイル)が可能されています。
Time Series Indexファイルが拡張子tsidxファイルで、メタデータファイルが拡張子dataファイルというわけです。(Host, Source, Sourcetypeといったデフォルトフィールドのメタデータファイルが存在していることが確認できます)

ユーザーがサーチを行うときは、tsidxファイルを使ってSplunkは指定されたデータがどのBucketにあるかを検索していますが、ここでは説明は省略します。
(興味がある人は、以下の参考資料を読んでんみてください)

参考資料

Behind the Magnifying Glass: How Search Works
https://conf.splunk.com/files/2016/slides/behind-the-magnifying-glass-how-search-works.pdf
(2016年なので超古い資料ですが、公式にインターネット公開されているため、この手の記事でだいたい参照されている重要な資料です)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?