どうも、Tです。
ログを収集するサーバが欲しくてSplunkをインストールしてみたので備忘録です。
やりたいこと
Splunkとは?
何やらいろいろとログを収集し可視化することに特化したソフトウェアです。
なぜSplunkなのか?
検証環境のsyslog回りを集められたらなぁと感じだったので、OSSのGraylogを使おうと思っていたのですが、Splunkのフリー版でも検証環境程度なら問題なさそうだったことと仕事で関わるとすればSplunkの方が出会う可能性が高そうかと感じたためです。
フリー版については公式から説明されていました。
機能制約はあるものの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要件については、下記にまとめされています。
RHEL9は、Firewalldを無効にして作業はrootユーザーで行います。
いろいろと細かいことはありそうですが、とりあえず動くものを用意するため細かい点は無視して進めています。下記の記事にいろいろまとめられているので参考にいただくのもよいかと思います。
事前準備
アカウント登録
インストールパッケージをダウンロードするために、下記のサイトからSplunkアカウントを作成します。
独自ドメインのメールアドレスであれば登録できました。
ダウンロード
Splunkアカウントの登録が終わると、Splunk EnterpriseのインストールパッケージがダウンロードできるようになるためLinuxのrpmパッケージをダウンロードして、インストール先のOSへアップロードしておきます。
インストール方法は、いくつかありますが今回はrpmでインストールを進めていきます。その他のインストール方法は下記を参照ください。
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
/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 #
http://<サーバIP or ホスト名>:8000で接続するとログイン画面が表示されるのでadminとパスワードを入力し、「サインイン」をクリックします。
ログインできました。
自動起動
インストールしただけでは自動起動設定がされていないため、splunkサービスの自動起動設定をしていきます。今回はsystemdを用いた起動を設定いていきます。
下記のコマンドで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でユニットファイルを作成してくれます。
# /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年後になっていました。
参考
まとめ
とりあえず動いたので力尽きました。