2021年4月6日火曜日

Splunkのインデクサをクラスタ構成した環境で新規インデックスを作成する

先日、Splunkにて複数台のインデクサによるクラスタ構成の構築手順やバージョンアップ手順を記載した。

インデクサはログを保存する領域を「インデックス」と呼ぶ。インデクサクラスタ構成では単体のインデクサの構成と異なり、インデックスの情報はManager Nodeが保持している。したがって、インデックスを新規に作成する場合は、まずManager Nodeにて設定したのち、その設定情報を各インデクサに適用するという流れとなる。

今回、2台のインデクサを持つクラスタ構成のSplunk環境にて、新規インデックスをManager Nodeにて設定し、各インデクサに設定の適応する手順を検証した。

環境

今回の検証では、ログ送信元となるUniversal Forwarderのサーバを含めると5台のサーバが必要となる。OSはすべてCentOS 7.8を使用する。インデクサのクラスタ構成のインストール手順は以下記事を参照いただきたい。

ホスト名 IPアドレス 種類 台数 説明
t1073spmg 192.168.11.73 Manager Node 1 Splunkの各コンポーネントを管理する。
t1074spsh 192.168.11.74 Search Head 1 Indexerに対して検索を行い結果を表示する。
t1075spin 192.168.11.75 Peer Node (Indexer#1) 1 ログの受信とSearch Headからの検索を受け付ける。Peer Node間でデータがレプリケーションされ冗長化される。
t1076spin 192.168.11.76 Peer Node (Indexer#2) 1 ログの受信とSearch Headからの検索を受け付ける。Peer Node間でデータがレプリケーションされ冗長化される。
t1077spfw 192.168.11.77 Universal Forwarder 1 Peer Nodeに対してログを送信する。

手順

1. Manager Nodeにてインデックス設定を実施

インデクサをクラスタ構成している場合は、インデックスの設定ファイルであるindexes.confをManager Nodeにて設定し、その設定情報をPeer Nodeに展開する。

ただし、indexes.confはSplunk Webから設定することはできないため、CLIにて設定ファイルを直接編集し、設定する必要がある。
※Splunk Webで設定できないことは、マニュアルにも以下の通り記載がされている。

Important: You cannot use Splunk Web or the CLI to configure index settings on peer nodes. You must edit indexes.conf directly.
引用元 : Configure the peer indexes in an indexer cluster

従って、SSHなどでOSにログインして、indexes.confを直接編集する。Peer Node用の設定ファイル配置ディレクトリは、/opt/splunk/etc/master-apps/_cluster/local/となる。今回は例としてtest_indexという名前のインデックスを作成することとし、以下のようにindexes.confを作成する。

# vi /opt/splunk/etc/master-apps/_cluster/local/indexes.conf
[test_index]
repFactor = auto
coldPath = $SPLUNK_DB/test_index/colddb
enableDataIntegrityControl = 0
enableTsidxReduction = 0
homePath = $SPLUNK_DB/test_index/db
maxTotalDataSizeMB = 512000
thawedPath = $SPLUNK_DB/test_index/thaweddb

2. 設定バンドルの検証

Manager Nodeが保持しているPeer Nodeへ配布する設定情報を「設定バンドル」と呼ぶ。設定バンドルの展開前にsplunk validate cluster-bundleコマンドを使用して、Peer Node
に対して設定バンドルの更新要否や再起動要否の検証を行う。

設定バンドルが更新されている場合は、下記のようにCreated new bundleと表示される。実際に、Peer Nodeへの適用要否は次の手順にて確認する。

# /opt/splunk/bin/splunk validate cluster-bundle --check-restart -auth admin:my_password
Validating new bundle and checking if its application results in a restart. Please run 'splunk show cluster-bundle-status' to check the status of the bundle validation.
Created new bundle with checksum=FF229E88CDE5C1E8795AC2DDB0E60BD3

3. 設定バンドルの確認

splunk show cluster-bundle-statusコマンドを使って、各Peer Nodeに適用されている設定バンドルと、先ほど検証した設定バンドルの差異を確認する。

出力結果において、確認するポイントは以下となる。

  • active_bundleが適用中の設定バンドルであり、last_validated_bundleが検証した最新の設定バンドルとなる。この2つが異なっている場合は、更新が必要と判断する。
  • last_check_restart_resultは設定バンドルの適用後のSplunkの再起動要否を示す。今回はrestart not requiredと記載されており、再起動は不要であることが確認できる。再起動が必要となる場合はrestart requiredと表示される。
# /opt/splunk/bin/splunk show cluster-bundle-status

master
         cluster_status=None
         active_bundle
                checksum=9D5C0600199B13E786336B83E577576A
                timestamp=1617456895 (in localtime=Sat Apr  3 22:34:55 2021)
         latest_bundle
                checksum=9D5C0600199B13E786336B83E577576A
                timestamp=1617456895 (in localtime=Sat Apr  3 22:34:55 2021)
         last_validated_bundle
                checksum=FF229E88CDE5C1E8795AC2DDB0E60BD3
                last_validation_succeeded=1
                timestamp=1617457038 (in localtime=Sat Apr  3 22:37:18 2021)
         last_check_restart_bundle
                last_check_restart_result=restart not required
                checksum=FF229E88CDE5C1E8795AC2DDB0E60BD3
                timestamp=1617457038 (in localtime=Sat Apr  3 22:37:18 2021)

 t1076spin       AFACC80F-3E52-4B65-9AAC-06E2CEA6575E    default
         active_bundle=9D5C0600199B13E786336B83E577576A
         latest_bundle=9D5C0600199B13E786336B83E577576A
         last_validated_bundle=FF229E88CDE5C1E8795AC2DDB0E60BD3
         last_bundle_validation_status=success
         last_bundle_checked_for_restart=FF229E88CDE5C1E8795AC2DDB0E60BD3
         last_check_restart_result=restart not required
         restart_required_apply_bundle=0
         status=Up

 t1075spin       CDC8B6AA-B56B-471A-A411-36AE8E494A03    default
         active_bundle=9D5C0600199B13E786336B83E577576A
         latest_bundle=9D5C0600199B13E786336B83E577576A
         last_validated_bundle=FF229E88CDE5C1E8795AC2DDB0E60BD3
         last_bundle_validation_status=success
         last_bundle_checked_for_restart=FF229E88CDE5C1E8795AC2DDB0E60BD3
         last_check_restart_result=restart not required
         restart_required_apply_bundle=0
         status=Up

4. 設定バンドルをPeer Nodeに適用

設定バンドルの適用は、splunk apply cluster-bundleにて行う。通常は展開前に確認を求められるが、すべてyesで回答をする場合は、--answer-yesのオプションを付与することでスキップすることができる。

# /opt/splunk/bin/splunk apply cluster-bundle --answer-yes
Created new bundle with checksum=FF229E88CDE5C1E8795AC2DDB0E60BD3
Applying new bundle. The peers may restart depending on the configurations in applied bundle.
Please run 'splunk show cluster-bundle-status' for checking the status of the applied bundle.
OK

もし設定に変更がない場合は、以下の通りNo new bundle will be pushedというメッセージが表示され、設定は更新されない。

# /opt/splunk/bin/splunk apply cluster-bundle --answer-yes

Encountered some errors while applying the bundle.
No new bundle will be pushed. The master and peers already have this bundle with bundle id = 9D5C0600199B13E786336B83E577576A

5. 新規インデックスのログを確認

以上でPeer Nodeに設定が反映されたため、実際にtest_indexのインデックスにログが保管され、Search Headから検索できることを確認する。

Universal Forwarderからインデックスにtest_indexを指定して、/var/log/secureのログを送信する設定を行う。

# ./splunk add monitor "/var/log/secure*" -index test_index
Added monitor of '/var/log/secure*'.

この状態でSearch Headからindex=test_indexをサーチ文として検索をすると、問題なくログが出力された。

また、Manager Nodeにおいても[設定]→[インデクサークラスタリング]の画面にて、test_indexが追加されていることを確認できた。

以上で、インデクサをクラスタ構成にした環境におけるインデックス追加手順は完了となる。

参考

0 件のコメント:

コメントを投稿

人気の投稿