オンプレミスでRHEL9にSplunk9をインストールしてフリーライセンスで使ってみた

どうも、Tです。

ログを収集するサーバが欲しくてSplunkをインストールしてみたので備忘録です。

やりたいこと

Splunkとは?

Splunk (スプランク) | 企業のレジリエンス強化の鍵となる
Splunkは、企業がレジリエンスを強化する上で鍵となります。世界中の組織がSplunkのプラットフォームを活用して大規模なインシデントの発生を防止し、その影響を最小限に抑え、デジタルトランスフォーメーションを加速させています。

何やらいろいろとログを収集し可視化することに特化したソフトウェアです。

なぜSplunkなのか?

検証環境のsyslog回りを集められたらなぁと感じだったので、OSSのGraylogを使おうと思っていたのですが、Splunkのフリー版でも検証環境程度なら問題なさそうだったことと仕事で関わるとすればSplunkの方が出会う可能性が高そうかと感じたためです。

フリー版については公式から説明されていました。

About Splunk Free - Splunk Documentation

機能制約はあるものの1日のログデータが500MB以下であれば、個人的に行う検証環境程度では問題なさそうだったので採用!

環境

RHEL9にSplunk9をインストールしました。

  • OS:Red Hat Enterprise Linux release 9.2 (Plow)
  • カーネル:Linux k-splunk 5.14.0-284.11.1.el9_2.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Apr 12 10:45:03 EDT 2023 x86_64 x86_64 x86_64 GNU/Linux
  • Splunk Enterprise:9.1.2

オンプレミスで使う場合のOS要件については、下記にまとめされています。

System requirements for use of Splunk Enterprise on-premises - Splunk Documentation

RHEL9は、Firewalldを無効にして作業はrootユーザーで行います。

いろいろと細かいことはありそうですが、とりあえず動くものを用意するため細かい点は無視して進めています。下記の記事にいろいろまとめられているので参考にいただくのもよいかと思います。

簡単だけど注意しておきたいSplunkインストール前の考慮点 - Qiita
本記事は、Splunk Advent Calendar 2019 の2日目の内容になります。はじめに普段、主に業務でSplunkを0からインストールし各種設定を行うことを対応しております石橋と申…

事前準備

アカウント登録

インストールパッケージをダウンロードするために、下記のサイトからSplunkアカウントを作成します。

Splunkフリートライアル(無料)版をインストール | Splunk
無料トライアル版をダウンロードしてSplunk製品をぜひお試しください。Splunk Cloud Platform、Splunk Enterprise、ユニバーサルフォワーダーなど、幅広い製品のトライアル版をご利用いただけます。

独自ドメインのメールアドレスであれば登録できました。

ダウンロード

Splunkアカウントの登録が終わると、Splunk EnterpriseのインストールパッケージがダウンロードできるようになるためLinuxのrpmパッケージをダウンロードして、インストール先のOSへアップロードしておきます。

インストール方法は、いくつかありますが今回はrpmでインストールを進めていきます。その他のインストール方法は下記を参照ください。

Install on Linux - Splunk Documentation

Splunkインストール

インストール

ダウンロードしたパッケージを/tmpあたりにコピーしておきます。

パーミッションを変更してrpmコマンドでインストールします。

# chmod 644 splunk-9.1.2-b6b9c8185839.x86_64.rpm
# rpm -i splunk-9.1.2-b6b9c8185839.x86_64.rpm
警告: splunk-9.1.2-b6b9c8185839.x86_64.rpm: ヘッダー V4 RSA/SHA256 Signature、鍵 ID b3cd4420: NOKEY
useradd: ディレクトリ /opt/splunk を作成できません
complete

「useradd: ディレクトリ /opt/splunk を作成できません」が表示されたのですが、/opt/splunkは作成されていたため問題なしで進めています。

/opt/splunkにインストールされました。

# cd /opt/splunk/
# ls -lh
合計 3.2M
-r--r--r--. 1 splunk splunk 522 11月 14 11:25 README-splunk.txt
drwxr-xr-x. 4 splunk splunk 4.0K 11月 27 17:10 bin
drwxr-xr-x. 2 splunk splunk 66 11月 27 17:10 cmake
-r--r--r--. 1 splunk splunk 57 11月 14 11:20 copyright.txt
drwxr-xr-x. 16 splunk splunk 4.0K 11月 27 17:10 etc
-rw-r--r--. 1 splunk splunk 428 11月 27 17:10 ftr
drwxr-xr-x. 3 splunk splunk 45 11月 27 17:10 include
drwxr-xr-x. 9 splunk splunk 4.0K 11月 27 17:10 lib
-r--r--r--. 1 splunk splunk 84K 11月 14 11:20 license-eula.txt
drwxr-xr-x. 3 splunk splunk 58 11月 27 17:10 openssl
drwxr-xr-x. 2 splunk splunk 55 11月 27 17:10 quarantined_files
drwxr-xr-x. 4 splunk splunk 109 11月 27 17:10 share
-r--r--r--. 1 splunk splunk 3.1M 11月 14 11:45 splunk-9.1.2-b6b9c8185839-linux-2.6-x86_64-manifest
drwxr-xr-x. 2 splunk splunk 54 11月 27 17:10 swidtag

以下のコマンドでsplunkを起動しウィザードに従い設定していきます。

–accept-licenseは利用規約に従い、規約文書を表示しないオプションです。

# /opt/splunk/bin/splunk start --accept-license

This appears to be your first time running this version of Splunk.

Splunk software must create an administrator account during startup. Otherwise, you cannot log in.
Create credentials for the administrator account.
Characters do not appear on the screen when you type in credentials.

Please enter an administrator username: ←そのままEnter(デフォルトのadminになる)
WARN: You entered nothing, using the default 'admin' username.
Password must contain at least:
* 8 total printable ASCII character(s).
Please enter a new password: ←adminのパスワード入力
Please confirm new password: ←adminのパスワード再入力

--割愛--

If you get stuck, we're here to help.
Look for answers here: http://docs.splunk.com

The Splunk web interface is at http://k-splunk:8000

#
usernameをデフォルトのadminで進めていますが、後ほどフリーライセンスに変更するとこのユーザーは使用しなくなります。

http://<サーバIP or ホスト名>:8000で接続するとログイン画面が表示されるのでadminとパスワードを入力し、「サインイン」をクリックします。

ログインできました。

自動起動

インストールしただけでは自動起動設定がされていないため、splunkサービスの自動起動設定をしていきます。今回はsystemdを用いた起動を設定いていきます。

Run Splunk Enterprise as a systemd service - Splunk Documentation

下記のコマンドでsplunkを停止しておきます。

# /opt/splunk/bin/splunk stop
Stopping splunkd...
Shutting down. Please wait, as this may take a few minutes.
...
Stopping splunk helpers...

Done.

公式の手順にはありませんが、初回起動をrootで行っているためrootユーザー権限設定のディレクトリ・ファイルが作成されているため、起動ユーザーとグループの「splunk」にパーミッションを変更します。

# cd /opt/
# chown -R splunk:splunk splunk/
起動ユーザーをsplunkにしているのはrpmのインストール時にsplunkユーザーとsplunkグループが自動的に設定され、インストール時のファイルなどもsplunkになっていたため使用しました。

以下のコマンドを実行すると起動ユーザー・グループをsplunkでユニットファイルを作成してくれます。

# /opt/splunk/bin/splunk enable boot-start -systemd-managed 1 -user splunk -group splunk

Systemd unit file installed at /etc/systemd/system/Splunkd.service.
Configured as systemd managed service.

起動ユーザーsplunkは特権ユーザーではなく、一般ユーザーのままにしています。特権ユーザーではない場合、以下のような留意点がでてきます。

  • ログを外部から取り込むときは、ログパーミッションが考慮が必要。
  • ウェルノウンポートを設定できない。

ユニットファイルが作成されました。

# cat /etc/systemd/system/Splunkd.service
#This unit file replaces the traditional start-up script for systemd
#configurations, and is used when enabling boot-start for Splunk on
#systemd-based Linux distributions.

[Unit]
Description=Systemd service file for Splunk, generated by 'splunk enable boot-start'
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
Restart=always
ExecStart=/opt/splunk/bin/splunk _internal_launch_under_systemd
KillMode=mixed
KillSignal=SIGINT
TimeoutStopSec=360
LimitNOFILE=65536
LimitRTPRIO=99
SuccessExitStatus=51 52
RestartPreventExitStatus=51
RestartForceExitStatus=52
User=splunk
Group=splunk
Delegate=true
CPUShares=1024
MemoryLimit=8061087744
PermissionsStartOnly=true
ExecStartPost=-/bin/bash -c "chown -R splunk:splunk /sys/fs/cgroup/system.slice/%n"

[Install]
WantedBy=multi-user.target

systemctlで起動し、起動していることを確認します。

# systemctl start Splunkd
# systemctl status Splunkd
● Splunkd.service - Systemd service file for Splunk, generated by 'splunk enable boot-start'
Loaded: loaded (/etc/systemd/system/Splunkd.service; enabled; preset: disabled)
Active: active (running) since Mon 2023-11-27 17:41:33 JST; 4s ago
Process: 6045 ExecStartPost=/bin/bash -c chown -R splunk:splunk /sys/fs/cgroup/system.slice/Splunkd.service (code=exited, status=0/SUCCESS)
Main PID: 6044 (splunkd)
Tasks: 9 (limit: 48800)
Memory: 68.7M (limit: 7.5G)
CPU: 4.113s
CGroup: /system.slice/Splunkd.service
├─6044 splunkd --under-systemd --systemd-delegate=yes -p 8089 _internal_launch_under_systemd
├─6087 "[splunkd pid=6044] splunkd --under-systemd --systemd-delegate=yes -p 8089 _internal_launch_under_systemd [process-runner]"
└─6114 /opt/splunk/bin/python3.7 /opt/splunk/etc/apps/splunk_assist/bin/selfupdate_modular_input.py --scheme

11月 27 17:41:35 k-splunk splunk[6068]: Checking indexes...
11月 27 17:41:35 k-splunk splunk[6068]: Validated: _audit _configtracker _internal _introspection _metrics _metrics_rollup _telemetry _thefishbucket>
11月 27 17:41:35 k-splunk splunk[6068]: Done
11月 27 17:41:35 k-splunk splunk[6044]: Checking filesystem compatibility... Done
11月 27 17:41:35 k-splunk splunk[6044]: Checking conf files for problems...
11月 27 17:41:35 k-splunk splunk[6044]: Done
11月 27 17:41:35 k-splunk splunk[6044]: Checking default conf files for edits...
11月 27 17:41:35 k-splunk splunk[6044]: Validating installed files against hashes from '/opt/splunk/splunk-9.1.2-b6b9c8185839-linux-2.6-x86_64-manifest'
11月 27 17:41:36 k-splunk splunk[6044]: PYTHONHTTPSVERIFY is set to 0 in splunk-launch.conf disabling certificate validation for the httplib and urllib libraries sh>
11月 27 17:41:36 k-splunk splunk[6044]: 2023-11-27 17:41:36.129 +0900 splunkd started (build b6b9c8185839) pid=6044

自動起動も有効になっています。

# systemctl list-unit-files | grep Splunkd
Splunkd.service enabled disabled

フリーライセンスへ変更

インストール後は、トライアルライセンス(60日有効)で稼働しています。途中で切れて操作方法などが変わっても嫌なのでフリーライセンスへ変更しておきます。

Splunkへログインし、「設定」->「ライセンス」をクリックします。

「ライセンスグループの変更」をクリックします。

「フリーライセンス」をチェックし「保存」をクリックします。

再起動確認画面が表示されるので「今すぐ再起動」をクリックします。

私の環境問題かもしれませんが、下記のポップアップで「OK」を教えてもポップアップが表示され続ける事象がありました。「キャンセル」をクリックして一旦ポップアップを閉じます。

下記の画面が表示されるので「Splunkの再起動」をクリックします。

ポップアップで「OK」をクリックします。

再起動完了まで待ちます。

再起動完了後、ログイン画面なしでSplunkの画面が表示されます。フリーランスでは、ログイン機能がなくなるためです。

ライセンスを確認するとフリーライセンスに変更されています。ライセンスの有効期限が14年後になっていました。

参考

Installation overview - Splunk Documentation

まとめ

とりあえず動いたので力尽きました。