Universal FowarderのインストールとSplunkサーバへのデータの転送方法

###はじめに
備忘のためSplunk、UniversalFowarderのインストールとsplunk for unix and linuxを使ってサーバの性能情報を転送する方法について記載します。

##環境
- Splunkサーバ : CentOS-7-x86_64-Minimal-1708
- Forwarderサーバ：CentOS-7-x86_64-Minimal-1708
- Splunk Version : 7.1.1<br>
※OSには後からGUI化のためGNOME-DESKTOPをインストールしています。<br>
GNOME-DESKTOPをインストールする場合は以下を参照してください。<br>
[http://zero-config.com/centos/gnome-0001.html]


##◆Splunkサーバの構築


<b>1. SPLUNK_HOMEの設定</b>
`echo 'export SPLUNK_HOME=/opt/splunk >> ~/.bash_profile'`
`. ~/.bash_profile`
※rootで作業しているが本番運用等に用いる場合はインストールのタイミングで作られるsplunkユーザで運用することを推奨

<b>2. splunkをインストール</b>
以下のリンクからインストールするSplunkのtarあるいはrpmファイルをダウンロードして/tmpに配置。
[https://www.splunk.com/ja_jp/homepage.html]
※ダウンロードにはアカウントを作成する必要があります。<br>
配置後は以下コマンドでファイルを展開。
↓tarファイルをダウンロードした場合
```tar zxfv /tmp/[ファイル名] -C /opt```<br>
↓rpmをインストールした場合
```rpm -ivh --prefix /opt /tmp/[ファイル名]```<br>


<b>3. Splunkサーバの各種設定</b>
```cd $SPLUNK_HOME/etc```<br>
Splunkサーバに紐づけるIPを静的に設定。
```vi splunk-launch.conf```<br>
以下を適当なところに追記。※追記場所はどこでもいいです。
※SPLUNK_HOMEはrpmでインストールした場合は既に/opt/splunkで設定されているようです。
　記載がなければ設定するようにしてください。

```
SPLUNK_HOME=/opt/splunk
SPLUNK_BINDIP="自分のIPアドレス"
```
splunk-launch.confにSPLUNK_BINDIPを指定した場合、以下のファイルも編集する必要がある。
※デフォルトは「mgmtHostPort=127.0.0.1:8089」
`vi $SPLUNK_HOME/etc/system/default/web.conf`

```
mgmtHostPort=”自分のIPアドレス”:8089
```
<b>4. splunkサーバの初期設定</b>
`cd $SPLUNK_HOME/bin`

以下コマンドでsplunkを起動。※ついでにサーバ起動時にもsplunkが起動するようにしておく。
`./splunk enable boot-start`
`./splunk start --accept-license`
※起動の途中でライセンスの同意確認が出ます。'y'を押すとsplunkにログインする際のパスワードの設定を行います。

HTTPとforwarderの通信を許可。
`firewall-cmd --add-port=8000/tcp --add-port=9997/tcp --add-port=8089/tcp --zone=public --permanent`
`firewall-cmd --add-port=8000/tcp --add-port=9997/tcp --add-port=8089/tcp --zone=public`
`firewall-cmd --list-all`

<b>5. splunkに接続し、Forwarderからの通信の受付を設定</b>
ブラウザを開きURLに以下を入力。
`http://自分のIP:8000`
※splunk6.4.4など古いバージョンのsplunkをインストールしている場合、またFree版にライセンスを切り替えた場合はデフォルトでリモートアクセスが出来ないので以下のファイルを編集してください。
　$SPLUNK_HOME/etc/system/default/server.confのallowRemoteLoginをAlwaysに切り替え

Settings-Forwarding and receiving-Add newで9997をForwarderからの待ち受けポートとして設定。
詳細は以下の画像を参照。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/206715/bbf1e88f-bda1-be31-2de9-7ef5b4042ecb.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/206715/a1c9d8dd-b127-d99c-1c8b-4cffdfb4d407.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/206715/e5b3a269-fdc7-4eed-5f76-c4f9bc989cec.png)

<b>7. splunkサーバへのnixのインストール</b>
UFと*nixでログ転送する場合splunkサーバ側にも*nixをインストールする必要があります。
※ターミナルからtarなどでインストールしても構いません。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/206715/057d1302-b555-70e3-6df7-f7bf3e756916.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/206715/f4aed812-1940-4700-9d8d-db76c1cff255.png)

最後にsplunkプロセスを再起動
`$SPLUNK_HOME/bin/splunk restart`
※nixのインストール後に再起動するかどうか聞いてくるのでそこでやっても問題ないです。

##◆Forwarderサーバの構築
<b>1. SPLUNK_HOMEの設定</b>
`echo 'export SPLUNK_HOME=/opt/splunkforwarder >> ~/.bash_profile'`
`. ~/.bash_profile`

<b>2. tarファイルの配置と展開</b>
以下リンクから自分の環境に合うUniversalForwarder(以下UF)のtar或いはrpmをダウンロード。
[https://www.splunk.com/ja_jp/download/universal-forwarder.html]

<b>3. UFのインストール</b>
ダウンロードしたファイルを/tmpに配置して以下のコマンドで展開。
↓tarファイルをダウンロードした場合
`tar zxfv /tmp/[ファイル名] -C /opt`

↓rpmファイルをダウンロードした場合
`rpm -ivh --prefix /opt /tmp/[ファイル名]`

<b>4. UFの初期設定</b>
`cd $SPLUNK_HOME/etc`

splunkサーバと同様に起動時のSPLUNK_HOMEとIPを指定。
`cp splunk-launch.conf.default splunk-launch.conf`
`vi splunk-launch.conf`

```
SPLUNK_HOME=/opt/splunkforwarder
SPLUNK_BINDIP="自分のIPアドレス"
```

`vi $SPLUNK_HOME/etc/system/default/web.conf`

```
mgmtHostPort=”自分のIPアドレス”:8089
```

HTTPの通信を許可。
`firewall-cmd --add-port=8000/tcp --add-port=9997/tcp  --zone=public --permanent`
`firewall-cmd --add-port=8000/tcp --add-port=9997/tcp --zone=public`
`firewall-cmd --list-all`

以下コマンドでUFの起動。こちらもついでにサーバ起動時にUFが立ち上がるように設定。
`$SPLUNK_HOME/bin/splunk enable boot-start`
`$SPLUNK_HOME/bin/splunk start`

転送先サーバを指定して再起動。
`$SPLUNK_HOME/bin/splunk add forward-server "転送先のIP":9997`
`$SPLUNK_HOME/bin/splunk restart`
※forwarderプロセスを再起動しないと転送先の設定がactiveにならない。
　試しに次のコマンドを再起動前に打ってみるとConfigured but inactive forwardsの欄に転送先が記載されている。

Active forwardsに転送先が設定されていることを確認。
` $SPLUNK_HOME/bin/splunk list forward-server`


<b>7. *nixのインストール</b>
以下のページからSplunk App for Unix and Linuxをダウンロードし、Fowwarderサーバの/opt/splunkforwarder/etc/apps/に配置。
[https://splunkbase.splunk.com/app/273/]

以下のコマンドで展開しforwarderのプロセスを再起動。
`cd $SPLUNK_HOME/etc/apps/`
`tar zxfv /opt/splunkforwarder/etc/apps/splunk-add-on-for-unix-and-linux_524.tgz`
`$SPLUNK_HOME/bin/splunk restart`

<b>7. 転送項目の設定</b>
setup.shを実行することで転送項目を設定できる。
実行後はガイドが標準出力されるためそちらを参照。
`cd $SPLUNK_HOME/etc/apps/Splunk_TA_nix/bin`
`./setup.sh`

設定完了後はforwarderのプロセスを再起動する。
`$SPLUNK_HOME/bin/splunk restart`

##◆転送データの確認
ブラウザからsplunkにログインしてデータが転送されているか確認。
HOSTの欄に転送元のIPアドレスがあれば設定完了。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/206715/6aa2ecb5-8b65-3207-668e-aeda277bad87.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/206715/7fb09cfe-2528-5795-ce9a-5397217b4f6a.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/206715/aeb2034a-45cd-4fab-1365-74603b0626ac.png)