SplunkWebのTLS化 デフォルト証明書編
Splunk WebをTLS化します。
デフォルトではSplunk WebのTLSは無効となっているものの、TLS化するのに利用できる証明書はインストール時に自動で生成されています。
今回はこのデフォルト証明書での暗号化を行います。
なお、当該証明書はインストール時点から3年で有効期限が設定されますので、個人的な利用以外ではまず使用しないほうがいいでしょう。
利用しているSplunkはVer.8.0.2.1です。
参考URL:
Turn on encryption (https) with Splunk Web - Splunk Documentation
Turn on encryption (https) using web.conf - Splunk Documentation
Splunk WebからTLS化
adminロールを持つユーザでSplunk Webへログインします。

メニューバーの[設定]から[サーバー設定]をクリックします。

[全般設定]をクリックします。

[Splunk WebでSSL(HTTPS)を有効にしますか?]を[はい]に設定し、保存します。

※見たらわかるとは思いますが、Webのポート番号やセッションタイムアウト時間もここから設定変更可能です。
Splunkサービスを再起動します。
有効設定後にメッセージに再起動が必要な旨が通知されます。

今回はメッセージに従い、Splunk Web上からサービス再起動を実施してみます。

以前は再起動が完了すると自動で画面がリフレッシュされていたと思うのですが、このバージョンではされないようです。
※以下のように別途起動を確認後にログ見てねってメッセージが表示されてます。

ということで、サーバのローカルからSplunkサービスの起動を確認したので、画面をリフレッシュしてみます。
こんな感じでエラーが表示されましたが、これはHTTPのままアクセスしているからですね。

HTTPSに変えて再度アクセスすると、

自己署名証明書のため、証明書エラーが表示されます。
無視してアクセスすると、この通り無事表示されました。

一応証明書情報も見ておくとこんな感じです。インストールしたのが2020年3月21日なのでそこから3年に設定されているのがわかります。

コンフィグを確認
Splunk Webに関する設定はweb.confで行います。
デフォルトでは"$SPLUNK_HOME/etc/system/default/web.conf"の設定のみで、"$SPLUNK_HOME/etc/system/local/web.conf"は存在しません。
先ほどSplunk Web上から設定を変更したため、私の環境では"$SPLUNK_HOME/etc/system/local/web.conf"が作成されています。
内容を確認してみます。
$ ls -l /opt/splunk/etc/system/local/web.conf -rw-------. 1 splunk splunk 34 4月 1 15:33 /opt/splunk/etc/system/local/web.conf $ cat /opt/splunk/etc/system/local/web.conf [settings] enableSplunkWebSSL = 1
上記の通り、設定されているのは"[settings]"スタンザと"enableSplunkWebSSL=1"というパラメータの2行だけです。
TLS化に用いる証明書や秘密鍵は"$SPLUNK_HOME/etc/system/default/web.conf"側にデフォルトで設定されていて、local側で"enableSplunkWebSSL"パラメータで有効に設定するだけでTLSを利用することが可能になっているわけです。
次回は自己署名証明書を自前で作成して適用したいと思います。
今回はここまで。
Splunkのコンポーネントまとめ
Splunkのコンポーネントを簡単にまとめてみます。
Splexicon:Component - Splunk Documentation
Indexer(インデクサ)
Splunkのコアコンポーネントの一つで、データの収集と保存(インデックスへの格納)、(Search Headからクエリを受けての)インデックスデータの検索機能を提供します。
Search Head(サーチヘッド)
Splunkのコアコンポーネントの一つで、データの検索と表示を司ります。データの検索時はIndexerに対してクエリを発行し、返されたデータに対し統計処理を施すなどして表示します。
アラート/レポート等のスケジュールで動作する機能もSearch Headが提供します。
最小構成ではIndexerとSearch Headを一つのサーバ上で動作させることができます。
※できるというより、インストール直後はデフォルトで両方が動作します。
Fowarder(フォワーダ)
データを転送するためのコンポーネントです。
軽量なSplunk Universal Forwarderと、中継サーバ等の用途で使用するHeavy Forwarderがあります。
Universal Forwarderはデータ転送に特化した専用ソフトウェアです。
Heavy ForwarderはSplunk Enterpriseをフォワーダ専用機として構成することで利用可能です。WebUIが使える、REST APIによる動的なデータ取得が可能等、Universal Forwarderにはない機能を備えていますが、その分必要なサーバリソースも増えます。
License Master(ライセンスマスタ)
Splunkのライセンス管理機能を提供するコンポーネントです。
分散デプロイ環境においてはどのサーバにこの機能を持たせるかを考慮する必要があります。
必須コンポーネントですが、利用開始以降に気にすることはあまりありません。
Monitoring Console(モニタリングコンソール)
Splunk全体(分散デプロイ環境含む)でのライセンス利用状況やインデックスデータのサイズ、リソース使用率等を監視する機能を提供します。
必須機能ではないですが、使って損はないです。
以前はDistributed Management Console(DMC)と呼ばれていました。
Deployment Server(デプロイメントサーバ)
フォワーダにApp(コンフィグ)を配信する機能を提供します。
フォワーダの導入ホストに直接ログインすることなく設定の変更が可能なため、フォワーダの数が多いほどに重宝する機能です。
Cluster Master(クラスタマスタ)
Indexerをクラスタとして構成する場合の必須コンポーネントです。
※正式名(?)はIndexer Cluster Master Nodeらしいです。
License Master以外のコンポーネントと同居させることは不可です。
またクラスタ内のIndexer(クラスタピアと呼ぶ)へのコンフィグの配信は、必ずCluster Masterから行う必要があります。
※Deployment Serverから配信するのはNGです。
Deployer(デプロイヤ)
Search Headをクラスタとして構成する場合の必須コンポーネントです。
※正式名(?)はSearch Head Cluster Deployerらしいです。
Cluster Masterとは異なり、他のコンポーネントとの同居も可能です。
ちなみに、Indexer Clusterは2台以上のIndexerがあれば構成できるのに対し、Search Head Clusterは最低3台のSearch Headが必要となります。
Search head clustering architecture - Splunk Documentation
それぞれのコンポーネントについて、また別の機会に詳細など書こうと思います。
Splunkの自動起動設定について
先日書いた以下エントリで、Splunkインストール後、うっかりsysVinitで起動するように設定してしまっていた。
ojisanworld.hateblo.jp
なぜこの事実に気づいたかというとこちらのエントリを読んだから。
簡単だけど注意しておきたいSplunkインストール前の考慮点 - Qiita
読んだ瞬間、「え、Splunkってsystemdじゃないの?」って思いました。
というのも、以前仕事で構築した際はsystemdだった気がするんです。
ただ、7.2.2だった気もするんだよなぁ。。
でも、boot-startの設定後、Splunkのユニットファイルがなかったんで、おかしいと思ってはいたんです。こんな感じ。
# ls -l /etc/systemd/system/ 合計 4 drwxr-xr-x. 2 root root 31 3月 19 21:13 basic.target.wants lrwxrwxrwx. 1 root root 41 3月 19 21:13 dbus-org.fedoraproject.FirewallD1.service -> /usr/lib/systemd/system/firewalld.service lrwxrwxrwx. 1 root root 57 3月 19 21:13 dbus-org.freedesktop.nm-dispatcher.service -> /usr/lib/systemd/system/NetworkManager-dispatcher.service lrwxrwxrwx. 1 root root 41 3月 19 21:13 dbus-org.freedesktop.timedate1.service -> /usr/lib/systemd/system/timedatex.service lrwxrwxrwx. 1 root root 37 3月 19 21:15 default.target -> /lib/systemd/system/multi-user.target drwxr-xr-x. 2 root root 32 3月 19 21:12 getty.target.wants drwxr-xr-x. 2 root root 4096 3月 19 21:13 multi-user.target.wants drwxr-xr-x. 2 root root 48 3月 19 21:13 network-online.target.wants drwxr-xr-x. 2 root root 52 3月 19 21:13 sockets.target.wants drwxr-xr-x. 2 root root 207 3月 19 21:13 sysinit.target.wants lrwxrwxrwx. 1 root root 39 3月 19 21:12 syslog.service -> /usr/lib/systemd/system/rsyslog.service lrwxrwxrwx. 1 root root 9 5月 12 2019 systemd-timedated.service -> /dev/null drwxr-xr-x. 2 root root 34 3月 19 21:13 timers.target.wants drwxr-xr-x. 2 root root 29 3月 19 21:13 vmtoolsd.service.requires
systemctlでのステータス確認でも/etc/rc.d/init.d/配下のスクリプト読んでるのが確認できますし。
# systemctl status splunk ● splunk.service - SYSV: Splunk indexer service Loaded: loaded (/etc/rc.d/init.d/splunk; generated) Active: active (running) since Tue 2020-03-24 23:26:40 JST; 8min ago ...以下略
以前触ったときにsystemdだった気がするっていうのもあるけど、システム要件の記載も罠なんですよね。
System requirements for use of Splunk Enterprise on-premises - Splunk Documentation
以下の記述。
On machines that run Linux where Splunk Enterprise services are managed by systemd, you can update the /etc/systemd/system/Splunkd.service unit file to set the values shown in the table below. Review the values and adjust them depending on the machine resources available.
これだけ読んだらLinux上だとsystemdで管理されているだな、って思いますよね。。
実はこちらも読まなくちゃいけないんですよ。
Run Splunk Enterprise as a systemd service - Splunk Documentation
これ先述のシステム要件のところにリンク貼っておいてほしいです。
Splunk 7.2.2以降のバージョンで、systemd管理にするためにはboot-start実行時に"-systemd-managed 1"オプションをつける必要があると記載されています。
(デフォルトでは暗黙的に"-systemd-managed 0"となっている)
systemdについては賛否があるようですが、RHEL8も既定はsystemdですし、Splunkもsystemd管理にしたいところ。ということで手順に従ってsystemdに変更してみます。
まずはSplunkサービスの停止と自動起動の無効化
# /opt/splunk/bin/splunk stop Stopping splunkd... Shutting down. Please wait, as this may take a few minutes. .. [ OK ] Stopping splunk helpers... [ OK ] Done. # /opt/splunk/bin/splunk disable boot-start Disabled.
そして"-systemd-managed 1"オプションを追加しての自動起動有効化。
# /opt/splunk/bin/splunk enable boot-start -systemd-managed 1 -user splunk
Systemd unit file installed at /etc/systemd/system/Splunkd.service.
Configured as systemd managed service.
Splunkサービスの起動。
$ /opt/splunk/bin/splunk start Splunk> CSI: Logfiles. Checking prerequisites... Checking http port [8000]: open Checking mgmt port [8089]: open Checking appserver port [127.0.0.1:8065]: open Checking kvstore port [8191]: open Checking configuration... Done. Checking critical directories... Done Checking indexes... Validated: _audit _internal _introspection _metrics _telemetry _thefishbucket history main summary Done Checking filesystem compatibility... Done Checking conf files for problems... Done Checking default conf files for edits... Validating installed files against hashes from '/opt/splunk/splunk-8.0.2.1-f002026bad55-linux-2.6-x86_64-manifest' All installed files intact. Done All preliminary checks passed. Starting splunk server daemon (splunkd)... ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ==== 'Splunkd.service'を開始するには認証が必要です。 Authenticating as: ojisan Password: ==== AUTHENTICATION COMPLETE ==== Done [ OK ]
ここでの動作がinitとは異なる。ログインしているユーザの認証を求められます。
そして以前仕事で扱った際にはこれが出たことを記憶しています。
※表示された瞬間、「これだよ、これ!」って声が出た。
Splunkd.serviceというユニットファイルも生成されていることが確認できましたが、systemctlでステータス確認したら"not-found"が出ました。
# ls -l /etc/systemd/system -rw-r--r--. 1 root root 627 3月 24 23:56 Splunkd.service # systemctl status splunk ● splunk.service Loaded: not-found (Reason: Unit splunk.service not found.) Active: active (exited) since Tue 2020-03-24 23:26:40 JST; 34min ago ...以下略
原因調査したいけど、時間がない。
とりあえず、困ったときのOS再起動で挙動を確認してみます。
$ systemctl status splunk
Unit splunk.service could not be found.
まさかのステータスさえ確認できなくなってしまいました。。
$ /opt/splunk/bin/splunk status splunkd is running (PID: 994). splunk helpers are running (PIDs: 1733 1747 1818 1915 2086).
でもSplunk CLIより自動起動していることが確認できます。
深追いは時間がかかりそうなので、また今度。
[2020/03/25更新]
原因わかりました。原因というか、凡ミスなんですが。
systemdだとユニット名は"splunk"ではなく"Splunkd"なんですね。
ユニットファイル名確認したときに気づけよ、という話ではありますが。。
ということで、ユニット名を"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; vendor preset: disabled) Active: active (running) since Wed 2020-03-25 21:42:08 JST; 42s ago ...以下略
個人的には大文字から始まるのやめてほしいな。。
なんにせよ、これにて無事systemdへの変更が完了です。
ついでにlimit設定とTHPの無効化も行っちゃいます。
設定方法は各所で説明されているので設定値だけ。
"/etc/systemd/system/Splunkd.serive"に以下を追記しました。
ExecStartPre=/bin/bash -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"
LimitNOFILE=65536 * これは最初から設定されていました。
LimitNPROC=16000
LimitFSIZE=infinity
そして以下を実行します。
$ systemctl daemon-reload
$ systemctl restart Splunkd
正しく反映されているか確認です。
ここでlimit設定ですが、システム要件ではulimitコマンドで確認するような記載となっていますが、Splunkd.serviceへのlimit設定は起動プロセスに適用されていることに注意します。
※ulimitコマンドで確認できるのは、実行したユーザのlimit設定です。
Splunkのプロセスに適用されているlimitを確認するためには、まず起動しているプロセスを特定します。
psコマンドでもいいですが、systemctlで確認してしまうのが手っ取り早いと思います。
$ systemctl status Splunkd ● Splunkd.service - Systemd service file for Splunk, generated by 'splunk enable boot-start' Loaded: loaded (/etc/systemd/system/Splunkd.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2020-03-25 22:06:39 JST; 14min ago Main PID: 2260 (splunkd) ...以下略
Main PIDよりプロセス番号が確認できました。
次に"/proc/確認したプロセス番号/limits"ファイルを参照します。上記の場合PIDが2260なので"/proc/2260/limits"となります。
$ cat /proc/2260/limits Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file size unlimited unlimited bytes Max data size unlimited unlimited bytes Max stack size 8388608 unlimited bytes Max core file size unlimited unlimited bytes Max resident set unlimited unlimited bytes Max processes 16000 16000 processes Max open files 65536 65536 files Max locked memory 16777216 16777216 bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 7087 7087 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us
Soft Limit、Hard Limitともに、先に設定したlimitが適用されているのが確認できました。
次はTHPです。
これは簡単で以下のコマンドで"never"が"[]"でくくられているのを確認するだけです。
$ cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never] $ cat /sys/kernel/mm/transparent_hugepage/defrag always defer defer+madvise madvise [never]
RHELのサイトをみると、grubの設定でTHPを無効化する方法も記載されていますが、まあこのほうが簡単で安全でしょう。
OS周りの設定はこんなもんかと思いますので、今回はここまでとします。
BOM付UTF-8のBOMを外す
Linux上でUTF-8のBOM(Byte Order Mark)を外す方法を検索するとnkfを使う方法を多く確認できます。
ただMinimalインストール環境でどうにかできんかね?って検索したら、この辺に色々書いてあったので試してみようと思います。
linux - How can I remove the BOM from a UTF-8 file? - Stack Overflow
UTF-8ファイルからBOMを削除するにはどうすればよいですか?
環境
まずは自宅環境。
$ localectl System Locale: LANG=ja_JP.UTF-8 VC Keymap: jp X11 Layout: jp $ echo -e "field1,field2\nフィールド1,フィールド2" > utf8linux.csv $ cat utf8linux.csv field1,field2 フィールド1,フィールド2 $ file utf8linux.csv utf8linux.csv: UTF-8 Unicode text
って感じです。
BOM付UTF-8作成は、業務的な流れを想定してWindows 10(ホストOS)で作成したものをCentOS(ゲストOS)へ送ります。
※CSVにしているのは今後Splunkのエントリで扱うことを予定しているからです。
ちなみに自宅のWindows 10(1903)だと、メモ帳でも既定でBOMなしUTF-8になっていて、BOM付けることも選択できました。

ただ、業務アプリケーションが自動生成するファイルとかだと、勝手にBOM付になることがあるので、そういう環境だとBOM外す必要あるよねって感じで見ていただければと思います。
今回は検証用にBOM付にします。
$ file utf8withbom.csv utf8withbom.csv: UTF-8 Unicode (with BOM) text, with CRLF line terminators $ cat utf8withbom.csv field1,field2 フィールド1,フィールド2
sed
まずはsed。
$ sed -i $'1s/^\uFEFF//' utf8withbom.csv $ file utf8withbom.csv utf8withbom.csv: UTF-8 Unicode text, with CRLF line terminators
余裕でした。
原本を残して別名保存する場合はリダイレクトを使えばいけます。
sed '1s/^\xEF\xBB\xBF//' < utf8withbom.csv > utf8withoutbom.csv
vim
vi(vim)を使う方法。
対話形式でよければ、以下のように編集、保存するだけ。
$ vi utf8withbom.csv :set nobomb :wq!
ただこれだと、スクリプト化できないし、都度やるのはめんどうなので、BOMだけ外すのであれば以下のように1ラインでOK。
$ vi -c "set nobomb" -c wq! utf8withbom.csv $ file utf8withbom.csv utf8withbom.csv: UTF-8 Unicode text, with CRLF line terminators
tail
tailを使うパターン。BOMは先頭3バイトなので4バイト目以降を読みだしてリダイレクトする形。
$ tail --byte=+4 utf8withbom.csv > utf8withoutbom.csv $ file utf8withoutbom.csv utf8withoutbom.csv: UTF-8 Unicode text, with CRLF line terminators
この方法を使う場合は、リダイレクト先を異なるファイルにしないといけないようです。
※同名で設定したら空のファイルになってしまいました。
他にawkを使う方法もあるようですが、上記3つの方法よりコマンド内容が複雑なんで、これだけ知っておけばよいかな、と思います。
今回は以上。
CentOS 8にSplunkをインストール
CentOS 8にSplunkをインストールします。
CentOSは自宅PCのVMware Workstation Player上に最小構成(Minimal)で用意しています。
$ hostname SplunkServer $ uname -a Linux SplunkServer 4.18.0-147.el8.x86_64 #1 SMP Wed Dec 4 21:51:45 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/centos-release CentOS Linux release 8.1.1911 (Core)
Splunkは最新バージョン、インストールにはrpmパッケージを利用します。

ゲストOSはホストとNAT接続させていてインターネットアクセスが可能なので、直接ダウンロードします。
ダウンロードするためのURLはこんな感じでダウンロード画面から確認可能です。

最小構成だとwgetが利用できないので、curlを利用します。
wgetと違い、curlでファイル名を指定するオプションは小文字の"o"なので変更します。
$ curl -o ./splunk-8.0.2.1-f002026bad55-linux-2.6-x86_64.rpm 'https://www.splunk.com/bin/splunk/DownloadActivityServlet?ar chitecture=x86_64&platform=linux&version=8.0.2.1&product=splunk&filename=splunk-8.0.2.1-f002026bad55-linux-2.6-x86_64.rpm&wget=true' % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 $ ls -l 合計 0 -rw-rw-r--. 1 ojisan ojisan 0 3月 21 15:43 splunk-8.0.2.1-f002026bad55-linux-2.6-x86_64.rpm
コマンドの実行は成功しましたが、サイズ0のファイルが作成されてしまいました。
URLからしてリダイレクトされているように見えるので、"-L"オプションも付加してみます。
$ curl -L -o ./splunk-8.0.2.1-f002026bad55-linux-2.6-x86_64.rpm 'https://www.splunk.com/bin/splunk/DownloadActivityServlet ?architecture=x86_64&platform=linux&version=8.0.2.1&product=splunk&filename=splunk-8.0.2.1-f002026bad55-linux-2.6-x86_64.rpm&wget=true' % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 486M 100 486M 0 0 10.8M 0 0:00:45 0:00:45 --:--:-- 10.8M $ ls -l 合計 498180 -rw-rw-r--. 1 ojisan ojisan 510134434 3月 21 15:48 splunk-8.0.2.1-f002026bad55-linux-2.6-x86_64.rpm
無事ダウンロードできました。
ハッシュ値まで確認すべきなんでしょうがめんどいので省略します。
ここからSplunkのインストールです。
ユーザ"ojisan"はスーパーユーザではないので、sudoをつけてやります。
$ sudo rpm -ivh ./splunk-8.0.2.1-f002026bad55-linux-2.6-x86_64.rpm [sudo] ojisan のパスワード: 警告: ./splunk-8.0.2.1-f002026bad55-linux-2.6-x86_64.rpm: ヘッダー V4 RSA/SHA256 Signature、鍵 ID b3cd4420: NOKEY Verifying... ################################# [100%] 準備しています... ################################# [100%] useradd: ディレクトリ /opt/splunk を作成できません 更新中 / インストール中... 1:splunk-8.0.2.1-f002026bad55 ################################# [100%] complete $ rpm -qi splunk Name : splunk Version : 8.0.2.1 Release : f002026bad55 Architecture: x86_64 Install Date: 2020年03月21日 15時56分11秒 Group : Applications/Internet Size : 1336979287 License : Commercial Signature : RSA/SHA256, 2020年03月05日 03時03分59秒, Key ID 5efa01edb3cd4420 Source RPM : splunk-8.0.2.1-f002026bad55.src.rpm Build Date : 2020年03月05日 03時01分29秒 Build Host : 6f9d1b48bd7b Relocations : /opt Vendor : Splunk Inc. <info@splunk.com> Summary : Splunk Description : The platform for machine data.
"useradd: ディレクトリ /opt/splunk を作成できません"
は無視して問題ありません。
※"/opt/splunk"はインストールディレクトリなので、存在しなければインストールも失敗します。
rpmパッケージからインストールすると"splunk"というユーザとグループが作成され、インストールディレクトリ(/opt/splunk)配下のファイルも所有者が一律spunkになります。
$ grep splunk /etc/passwd splunk:x:1001:1001:Splunk Server:/opt/splunk:/bin/bash $ ls -l /opt 合計 0 drwxr-xr-x. 8 splunk splunk 224 3月 21 15:56 splunk
RHEL版のSplunkはインストール後に起動しませんし、自動起動設定もされていません。
※RHEL版しか利用したことないのでDebian版とかがどうかは知らない。。
まずは自動起動の設定をします。"-user"オプションで起動ユーザをsplunkにします。
※"--accept-license"をつけることで、コマンド実行後に表示されるライセンス同意をスキップ(承認)することができます。
※Splunkの初回起動コマンド実行時には管理者ユーザの設定を求められます。GUIへのログインやSplunk CLIの実行時に利用するため失念ないように。
※[2020/03/23追記]ここで”-systemd-managed”オプションの指定を失念してました。Splunk 8.0.2では当該オプションなしだと、SysVinitでの起動となるようです。
$ sudo /opt/splunk/bin/splunk enable boot-start -user splunk --accept-license [sudo] ojisan のパスワード: 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: splunk Password must contain at least: * 8 total printable ASCII character(s). Please enter a new password: Please confirm new password: Copying '/opt/splunk/etc/openldap/ldap.conf.default' to '/opt/splunk/etc/openldap/ldap.conf'. Generating RSA private key, 2048 bit long modulus ..........................................+++++ ...............................................+++++ unable to write 'random state' e is 65537 (0x10001) writing RSA key Generating RSA private key, 2048 bit long modulus ........+++++ ............................................+++++ unable to write 'random state' e is 65537 (0x10001) writing RSA key Moving '/opt/splunk/share/splunk/search_mrsparkle/modules.new' to '/opt/splunk/share/splunk/search_mrsparkle/modules'. Init script installed at /etc/init.d/splunk. Init script is configured to run at boot.
Splunkの起動はsplunkユーザで実行します。
$ sudo su splunk [sudo] ojisan のパスワード: $ /opt/splunk/bin/splunk start Splunk> The IT Search Engine. Checking prerequisites... Checking http port [8000]: open Checking mgmt port [8089]: open Checking appserver port [127.0.0.1:8065]: open Checking kvstore port [8191]: open Checking configuration... Done. Creating: /opt/splunk/var/lib/splunk Creating: /opt/splunk/var/run/splunk Creating: /opt/splunk/var/run/splunk/appserver/i18n Creating: /opt/splunk/var/run/splunk/appserver/modules/static/css Creating: /opt/splunk/var/run/splunk/upload Creating: /opt/splunk/var/run/splunk/search_telemetry Creating: /opt/splunk/var/spool/splunk Creating: /opt/splunk/var/spool/dirmoncache Creating: /opt/splunk/var/lib/splunk/authDb Creating: /opt/splunk/var/lib/splunk/hashDb New certs have been generated in '/opt/splunk/etc/auth'. Checking critical directories... Done Checking indexes... Validated: _audit _internal _introspection _metrics _telemetry _thefishbucket history main summary Done Checking filesystem compatibility... Done Checking conf files for problems... Done Checking default conf files for edits... Validating installed files against hashes from '/opt/splunk/splunk-8.0.2.1-f002026bad55-linux-2.6-x86_64-manifest' All installed files intact. Done All preliminary checks passed. Starting splunk server daemon (splunkd)... Generating a RSA private key .........+++++ ........................................................................................................................................................................................+++++ writing new private key to 'privKeySecure.pem' ----- Signature ok subject=/CN=SplunkServer/O=SplunkUser Getting CA Private Key writing RSA key Done [ OK ] Waiting for web server at http://127.0.0.1:8000 to be available... Done If you get stuck, we're here to help. Look for answers here: http://docs.splunk.com The Splunk web interface is at http://SplunkServer:8000
ここで起動状態を確認してみました。
$ sudo /opt/splunk/bin/splunk status splunkd is running (PID: 2027). splunk helpers are running (PIDs: 2028 2047 2109 2212). $ systemctl status splunk ● splunk.service - SYSV: Splunk indexer service Loaded: loaded (/etc/rc.d/init.d/splunk; generated) Active: inactive (dead) Docs: man:systemd-sysv-generator(8)
Splunk CLIでは問題なく起動が確認できますが、systemdのほうでは"inactive"となってしまっています。
Splunkの待ち受けポート(8089/tcp, 8191/tcp, 8000/tcp)も正常にリッスンされていて問題はなさそうに見えます。
$ ss -tan State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 128 0.0.0.0:8089 0.0.0.0:* LISTEN 0 128 0.0.0.0:8191 0.0.0.0:* LISTEN 0 128 0.0.0.0:8000 0.0.0.0:* LISTEN 0 5 127.0.0.1:8065 0.0.0.0:*
CentOS 8のバグとか、相性の問題でしょうか。一度OSを再起動してみました。
$ systemctl status splunk ● splunk.service - SYSV: Splunk indexer service Loaded: loaded (/etc/rc.d/init.d/splunk; generated) Active: active (running) since Sat 2020-03-21 16:31:15 JST; 1min 1s ago Docs: man:systemd-sysv-generator(8) Process: 962 ExecStart=/etc/rc.d/init.d/splunk start (code=exited, status=0/SUCCESS) Tasks: 168 (limit: 11339) Memory: 1.0G CGroup: /system.slice/splunk.service tq1736 splunkd -p 8089 start tq1742 [splunkd pid=1736] splunkd -p 8089 start [process-runner] tq1791 mongod --dbpath=/opt/splunk/var/lib/splunk/kvstore/mongo --storageEngine=mmapv1 --port=8191 --timeStampFormat=iso8601-utc --smallfile> tq1936 /opt/splunk/bin/python3.7 -O /opt/splunk/lib/python3.7/site-packages/splunk/appserver/mrsparkle/root.py --proxied=127.0.0.1,8065,8000 tq2005 /opt/splunk/bin/splunkd instrument-resource-usage -p 8089 --with-kvstore tq2175 [splunkd pid=1736] [search-launcher] mq2176 [splunkd pid=1736] [search-launcher] [process-runner]
ちゃんとactive(running)になりました。一件落着?
最後にSplunk Webにアクセスできるか確認します。デフォルトではTLSは有効化されていないので"http://[ホスト名 or IPアドレス]:8000"で接続します。
の前に、ファイアウォールの設定を確認しておきます。
$ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens160 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
アクティブなゾーンに8000/tcpの許可設定はないことが確認できましたので追加します。
※今回は本番環境でも何でもないので、publicゾーンにどーんと設定しています。
$ sudo firewall-cmd --add-port=8000/tcp --zone=public --permanent success $ sudo firewall-cmd --reload success $ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens160 sources: services: cockpit dhcpv6-client ssh ports: 8000/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
IPアドレスも確認。
$ ip a show dev ens160 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:05:d3:b3 brd ff:ff:ff:ff:ff:ff inet 192.168.121.129/24 brd 192.168.121.255 scope global dynamic noprefixroute ens160 valid_lft 1095sec preferred_lft 1095sec inet6 fe80::ba5f:b58:65a8:8ecb/64 scope link noprefixroute valid_lft forever preferred_lft forever
ではアクセス。

無事接続できました。今回はここまで。
Splunkのシステム要件をちゃんと読む
Splunkのシステム要件、ちゃんと確認してますか?
ちょいと確認してみます。
なお、対象はSplunk Enterpriseのみ、本日時点で最新バージョンである8.0.2のドキュメントを参照します。
Splunk Universal Forwarderとかはまたの機会に。
System requirements for use of Splunk Enterprise on-premises - Splunk Documentation
Supported Operating Systems
サポートされるOSの情報。
表ではSplunk Enterpriseは"Enterprise License"という列を見ていきます。
"X"と"D"がサポート対象だけど、"D"は近い将来サポート外になる可能性が高いため非推奨。
Unix/Linuxプラットフォームでは、Linux Kernel 2.6、3.x、4.x、Windowsプラットフォームでは、Windows Server 2016か2019がサポートされています。
Linux Kernel 2.6は非推奨です。まあRHELなら6とかなんで、今からこれを選択することもないでしょう。
コンテナもサポートされていて、そちらはLinux Kernel 4.xのみが対象です。
Operating system notes
Windowsについては注意事項も記載されています。
かいつまんで言うと、WindowsはSplunkを実行するユーザの権限に注意してねって感じですかね。
権限云々でいえば、Linuxでも同じだと思いますけどね。
Operating systems that support the Monitoring Consoleには、モニタリングコンソールという、Splunkの正常性等を確認できる便利機能を利用する場合には追加の要件あるよ、と書いてあります。
といっても、記載のリンクを参照しても、有用なことは書いてないように見えるので、あまり気にしなくてもいいかも。
Deprecated operating systems and features
今サポートしてても、Splunkのアップデートにあわせて非サポートになる可能性あるからね、という念押し。
Creating and editing configuration files on OSes that do not use UTF-8 character set encoding
これ、超大事。今どきUTF-8扱えないOSはないと思うけど、この"UTF-8"はSplunk触ってるといろんなところでつまづきポイントになりがち。
とくにWindows版では注意。この辺は別のエントリで書きたい。
IPv6 platform support
IPv6サポートしてます。
...これはいいよね。
Supported browsers
サポートされるブラウザ。IEがあって、Edgeはない。
IEは互換性モード非サポートってあるけど、互換性モードでなくても表示崩れたり、読み込み失敗したりと不安定なことが多い印象。
Recommended hardware
推奨されるハードウェア。これもかなり大事。
ちょっと前後するけど、推奨されるハードウェアスペックはRecommended hardware capacityに書いてある。
ここ、昔からWindowsとそれ以外で分かれているけど、結局同じことが書いてあります。意味あるのかな?
RAID0(またはRAID1+0)って書いてあるけど、Splunkが高速であるためには、ディスクの読み書きが高速である必要があるってことで、たぶん必須ではない。
必須ではないけど、まあ高速化するなら使うよねってところ。もちろん、RAID5とかでもいい。
Splunk Enterprise and virtual machines
今は仮想化やクラウド利用が主流で、Splunk用に専用の物理サーバを用意することはないと思います。
この項目には仮想化環境(IaaS含む)の利用時は、物理サーバ占有利用時よりパフォーマンスが落ちることに注意してね、ってことが書いてあります。
ハードウェアに関してはこちらを参照したほうがいいです。
Reference hardware - Splunk Documentation
Supported file systems
サポートされるファイルシステム。ファイルシステム自体は言うことないかな。
Considerations regarding Network File System (NFS)
NFSは注意が必要。原則、Hot/Warmバケツの保存場所として利用するのはNG。
Cold/Frozenなら利用可。ただし、ネットワーク経由する分サーチのパフォーマンスが落ちるので、そこは理解してねって感じ。
あと、Considerations regarding Common Internet File System (CIFS)/Server Message Block (SMB)にWindowsのSMBについても書かれているけど、だいたい同じようなこと言ってると思います。
Considerations regarding system-wide resource limits on *nix systems
Unix/Linuxだとデフォルトのリソース制限設定が引っかかってエラーになったり、パフォーマンス落ちたりする可能性があるんで、制限を緩和してね、と。
設定方法はディストリビューションによって異なるので、各自で確認する必要があります。
別途、CentOS8にSplunkインストールするエントリ書く予定なので、そこでこの辺の設定も確認したいと思います。
Considerations regarding environments that use the transparent huge pages memory management scheme
LinuxのTHPという機能が有効だと30%パフォーマンス落ちる可能性があるとのこと。他のアプリケーションでも使う必要ないなら、無効にしてねという話。
これもCentOS8で確認したいと思います。
今回は以上。
※ディスクサイジングとかも書かなきゃな気がするけど、それはまたいつか。
当ブログのプライバシーポリシー
アクセス解析ツールについて
当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。
このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。この規約に関して、詳しくはここをクリックしてください。
当ブログへのコメントについて
当ブログでは、スパム・荒らしへの対応として、コメントの際に使用されたIPアドレスを記録しています。
これはブログの標準機能としてサポートされている機能で、スパム・荒らしへの対応以外にこのIPアドレスを使用することはありません。加えて、次の各号に掲げる内容を含むコメントは管理人の裁量によって、削除する事があります。
- 特定の自然人または法人を誹謗し、中傷するもの。
- 極度にわいせつな内容を含むもの。
- 禁制品の取引に関するものや、他者を害する行為の依頼など、法律によって禁止されている物品、行為の依頼や斡旋などに関するもの。
- その他、公序良俗に反し、または管理人によって承認すべきでないと認められるもの。
当サイトへのリンクに関して
当サイトは完全リンクフリーです。トップページ、記事など、正規に公開しているページであれば、どのページにリンクしていただいても問題ありません。
免責事項
当ブログで掲載している画像の著作権・肖像権等は各権利所有者に帰属致します。権利を侵害する目的ではございません。記事の内容や掲載画像等に問題がございましたら、各権利所有者様本人が直接メールでご連絡下さい。確認後、対応させて頂きます。
当ブログからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。
当ブログのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。
当ブログに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。