3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Splunk Universal Forwarderからのデータ送信をHTTP Proxyを通す方法

Last updated at Posted at 2022-01-05

はじめに

Splunkへのデータ転送は通常、Universal Forwarder(UF)を使いますが、たまに通信上の課題があります。

それは、UFでは独自のTCP通信を使用するためHTTP Proxyを使用できず、HTTP Proxyを介さなければUFからSplunkに到達できない環境にいる場合はデータ転送が行えないことです。
※SOCKS5 Proxyには対応していますので、それが使用可能であれば問題ありません。

そんな中、Universal Forwarder 8.1からhttpoutという機能が追加されています。
この機能を使うことでSplunkのHEC(HTTP Event Collector)を使用したHTTP通信に切り替えられ、HTTP Proxyを利用することができます。
また、ロードバランサーで負荷分散できるようにもなるというメリットもあります。

早速試してみましょう。

構成

こんな感じで環境を用意しました。
UF、Splunk Enterpriseはインストールだけした状態とします。
ちなみに、SplunkはEnterpriseで用意していますがSplunk Cloudでも同様に行えます。

image.png

httpoutを設定しよう

HECを用意

SplunkでHECを追加します。

  1. ヘッダーメニューから設定 > データ入力
  2. HTTPイベントコレクターの「新規追加」をクリック
  3. 適当に設定
    1. 名前:任意(「UF httpout」など)
    2. ソースタイプ:自動
    3. インデックス:いじらない ※indexもsourcetypeもUF側で指定するため
  4. 払い出されたトークン値をメモしておく
  5. 再びヘッダーメニューから設定 > データ入力
  6. HTTPイベントコレクターをクリック
  7. グローバル設定ボタンをクリック
  8. 全トークンが「有効」であることを確認(無効だったら有効にしておく)

httpoutの設定(outputs.conf)

UFでHTTP送信するためのhttpoutの設定を行います。

$SPLUNK_HOME/etc/system/local/outputs.confを開き(なければ新規作成)、以下を追記。

$SPLUNK_HOME/etc/system/local/outputs.conf
[httpout]
httpEventCollectorToken = 払い出したトークン
uri = https://Splunkのホスト名orIPアドレス:8088

Splunk CloudのURLとポートはこちら。
https://docs.splunk.com/Documentation/Splunk/latest/Data/UsetheHTTPEventCollector#Send_data_to_HTTP_Event_Collector_on_Splunk_Cloud_Platform

なお、通常はCLIでsplunk add forward-serverで送信先を設定しますが上記のhttpout設定だけでOKです。
※もし通常の設定(tcpout)とhttpoutが両方存在しても、httpoutが優先されます。

Proxyの設定(server.conf)

HTTP Proxyを使用するための設定を行います。

$SPLUNK_HOME/etc/system/local/server.confを開き(なければ新規作成)、以下を追記。

$SPLUNK_HOME/etc/system/local/server.conf
[proxyConfig]
http_proxy = http://ProxyサーバURLまたはIPアドレス:Proxyサーバポート
https_proxy = http://ProxyサーバURLまたはIPアドレス:Proxyサーバポート

UF再起動

設定を反映するために再起動を行います。

$SPLUNK_HOME/bin/splunk restart

確認

これでHTTPデータ送信が可能になりました。
諸々確認してみます。

データ取り込み確認

Splunk側でサーチ実行。UFからデータ受信できていることが確認できました。

index=_internal | stats count by host

image.png

通信データの確認

念のため、ちゃんとProxy経由しているよねということを確認。

Proxyサーバでtcpdumpしてみます。
UF: 10.202.37.190
Proxy: 10.202.37.20
Splunk: 10.202.6.7

UF > Proxy(TCP:3128通信)

tcpdump dst port 3128 -nn

image.png

Proxy > Splunk(TCP:8088通信)

tcpdump dst port 8088 -nn

image.png

問題なさそうです。

パフォーマンス確認

UFのスループットはデフォルト256KB/sです。httpoutでも同様に適用されるか確認します。

この上限値はlimits.confのmaxKBpsで定義されています。

UFでバカでかファイルを用意してadd monitorします。

$SPLUNK_HOME/bin/splunk add monitor <バカでかファイルのパス>

Splunk側でモニターコンソールから確認すると・・・
※設定 > モニターコンソール > インデックス化 > パフォーマンス > インデックスパフォーマンス:インスタンス

image.png

253 KB/sでています(他に取り込みはしていない)。
だいたい上限値で取り込めています。

UFでmaxKBpsを倍の512にしてみると

$SPLUNK_HOME/etc/system/local/limits.conf
[thruput]
maxKBps = 512

image.png

きっちり倍になりました。

限界にチャレンジ(ダメ絶対)。

$SPLUNK_HOME/etc/system/local/limits.conf
[thruput]
maxKBps = 0  #上限なし

image.png

この環境だと3599 KB/sでました。

まとめ

簡単な設定でHTTP送信に切り替えられました。
もしHTTP Proxyが必須な場合は使えますね。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?