Universal forwarderについて

## 目的

この記事では、Splunkのコンポーネントの中で、リモートサーバからのデータ収集を実現するために必要となるUniversal forwarderについて、概要、インストール手順、ならびにデータ転送手順（リモートサーバ to Splunk Cloud）を解説します。


## About Universal forwarder

Universal forwarderは、データをデータソースあるいはその他のForwarderから収集して、ForwarderやSplunkデプロイメントへ送る機能を持っています。Splunkデプロイメントは、Splunk Enterprise、Splunk Light、ならびにSplunk Cloudが含まれます。 Universal forwarderは、その用途に応じてheavyと forwarder とlight forwarderに分けることができます。その言葉が示す通り、複雑な（重たい）処理が必要となる場合は、heavy forwarderをインストールする必要であり、そうでない場合はlight forwarderをインストールします。


Universal forwarderの最も有益な点は、その他Splunkのソフトウェア製品と比較して、非常に少ないハードウェアリソースで動作する点です。これは、インストール先ホストやネットワークへの負荷を抑えることができます。高いパフォーマンスを実現するためにUniversal forwarderは、Splunkのサブセットの機能を具備しています。Splunkの機能と比較した場合のUniversal forwarderの特徴を以下に示します。


- Cannot search or index data.
- Cannot send alerts.
- Does not parse incoming data, except in certain cases, such as structured data or some forms of Windows data.
- Cannot send data to syslog servers as it has no syslog pipeline.
- Does not include a version of Python.

もう一つ優位な点を挙げるとすると、多種多少なデバイスにインストール可能な点です。Splunk Enterpriseよりも多くの動作プラットフォームを持ち、ユーザーのニーズに合わせた動作プラットフォームを選択することができます。

Universal forwarderは、必要最小限のコンポーネントにて構成されます（これはハードウェアリソースの削減にも繋がります）。ウェブインターフェースは持たず、ユーザーはコンフィグレーションファイルを編集するか、Splunk Webのマネージメント近ソース経由で設定することとなります。

## Universal forwarder system requirements

Universal forwarderのハードウェアリソースの要求仕様は以下の通りとなります。


| Recommended | Dual-core 1.5GHz+ processor, 1GB+ RAM |
|:--|:--|
| Minimum | 1.0Ghz processor, 512MB RAM |

Universal forwarderのライセンスは、Splunkに同梱されており、別々に購入することはできない。Universal forwarderのライセンスはIndexerに対する無制限のデータ送信を許可します（あくまでSplunkのIndexerの容量のみ課金対象。課金対象を増やすために、Universal forwarderの送信容量に制限を加えないのは納得がいく）。

Universal forwarderとIndexerとの互換性にも注意したい。使用するIndexerのバージョンに合わせて、Universal forwarderのバージョンを選定する必要がある。

## Example forwarder deployment topologies

Universal forwarderは、多くのユースケースが存在しますが、ここではData consolidation topologyを紹介します。下の図が示す通り、このユースケースでは複数のForwarderが一つのSplunkデプロイメントに対してデータを送信します。他にもロードバランシング、データの中継、ルーティングおよびフィルタリング、セキュリティポートの制限などのユースケースが存在しますが、本投稿では割愛します。

![30_admin13_forwardreceive-dataforward_60.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482612/cea8fd04-261e-a6c6-1667-b9312e16b192.png)

## How to forward data to Splunk Cloud

Universal forwarderからSplunk Cloudに対して、データを送信するためには以下の処理手順を実行する必要があります。
なお、インストール手順については、[こちら](https://medium.com/@devopsprosiva/splunk-install-linux-universal-forwarder-3e115d51e751)の手順を一部参考にさせていただきました。


### Step 1: Download the universal forwarder

以下コマンドを実行して、Universal forwarderのパッケージを対象のLinuxマシンにダウンロードします。

```
wget -O splunkforwarder-8.0.1-6db836e2fb9e-linux-2.6-x86_64.rpm 'https://www.splunk.com/bin/splunk/DownloadActivityServlet?architecture=x86_64&platform=linux&version=8.0.1&product=universalforwarder&filename=splunkforwarder-8.0.1-6db836e2fb9e-linux-2.6-x86_64.rpm&wget=true'
```


### Step 2: Install the universal forwarder

以下コマンドを実行して、インストールを実行します。

```
yum -y localinstall splunkforwarder-6.0.2-196940-linux-2.6-x86_64.rpm
```

splunkコマンドが叩けるように、環境変数の内容を変更します。

```
$ vi ~/.bashrc
 export SPLUNK_HOME="/opt/splunkforwarder"
 export PATH=$PATH:$SPLUNK_HOME/bin 
$ exec bash
```

splunk startコマンドを実行します。

```
splunk start —accept-license
```


### Step 3: Download and install the universal forwarder credentials

Universal forwarderがSplunk Cloudに対してデータを送信することを可能にするためには、Universal forwarder credentials fileをダウンロードする必要がある。このファイルには、ユーザー個々のSplunk Cloudの認証情報が含まれております。この認証情報は、それぞれのSplunk Cloudで異なるため、必ず自身のSplunk Cloud環境を使用しなければなりません。
Universal forwarderのデフォルトのユーザー名およびパスワードは、admnin:changemeとなっているので、明示的に変更しない限りは以下コマンドでUniversal forwarder credentials fileをUniversal forwarderに認識されることができます。
credentials fileはSplunk Cloud経由で入手し、Universal forwarderが動作するインスタンスの任意のディレクトリ配下に格納します。
以下の例では、credentials fileの格納先は、```/home/ec2-user/splunkclouduf.spl```となります。


```
splunk install app /home/ec2-user/splunkclouduf.spl -auth admin:changeme
App '/home/ec2-user/splunkclouduf.spl' installed 
```

credentials fileのインストールが完了すると、以下図のようにSplunk Cloud上でデータ格納を確認することができました。
公式サイトでは他にも手順が存在していましたが、私はここまでの手順で取り込むことが確認できました。

<img width="1486" alt="スクリーンショット 2020-01-14 12.28.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482612/2a7031fb-9cb3-347f-e0c8-2b2c688e1aba.png">



上記データは、Splunk Cloud上のindex=_internalに対して、Universal forwarderのメトリックデータを自動的に収集したものです。host名などの情報はUniversal forwarder側で自動的に認識してデータとして送信していました。