目的
この記事では、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デプロイメントに対してデータを送信します。他にもロードバランシング、データの中継、ルーティングおよびフィルタリング、セキュリティポートの制限などのユースケースが存在しますが、本投稿では割愛します。
How to forward data to Splunk Cloud
Universal forwarderからSplunk Cloudに対して、データを送信するためには以下の処理手順を実行する必要があります。
なお、インストール手順については、こちらの手順を一部参考にさせていただきました。
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上でデータ格納を確認することができました。
公式サイトでは他にも手順が存在していましたが、私はここまでの手順で取り込むことが確認できました。

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