現在Splunk6.0.2に対して、curlコマンドで直接JSONデータを入力できないかと試しています。
TCP:10000をtcp-rawポートに設定しています。
curl -X POST -d 'json={"tag":"value"}' http://[splunkserver]:10000
のコマンドを外部サーバで実行すると、応答がなくCtrl + Cで終了させる必要がありました。
一方でSplunk側では
POST / HTTP/1.1
User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.12.9.0 zlib/1.2.3 libidn/1.18 libssh2/1.2.2
Host: [SplunkサーバIP]:10000
Accept: /
Content-Length: 20
Content-Type: application/x-www-form-urlencoded
json={"tag":"value"}
のイベントがhost=[外部サーバホスト名]、source=tcp:10000、sourcetype=tcp-rawで認識されています。
目的としてはjson部分のみSplunkで認識されればいいのですが、そもそもcurlコマンドを使う方法で上6行のヘッダを除去することはできますか?
以上です。
アドバイスよろしくお願いいたします。
HTTPで投げられてるので、HeaderもそのままIndexしてしまいますね。
HeaderをIndexしないようにprops.confとtransforms.confで制御するなどの必要があります。
もし、単純にテストでJSON形式のデータをSplunkに投げつけたいということであれば、
以下が単純でいいかと思いますが、いかがでしょうか。
$ echo "{\"tag1\":\"value1\", \"tag2\":\"value2\"}" | nc Splunk 10000
HTTPで投げられてるので、HeaderもそのままIndexしてしまいますね。
HeaderをIndexしないようにprops.confとtransforms.confで制御するなどの必要があります。
もし、単純にテストでJSON形式のデータをSplunkに投げつけたいということであれば、
以下が単純でいいかと思いますが、いかがでしょうか。
$ echo "{\"tag1\":\"value1\", \"tag2\":\"value2\"}" | nc Splunk 10000
返答が遅れてしまい申し訳ありません。
HTTPで投げられてるので、HeaderもそのままIndexしてしまいますね。
HeaderをIndexしないようにprops.confとtransforms.confで制御するなどの必要があります。
Splunkのポートが単なるTCP用であること、curlコマンドがHTTP用であることを意識していませんでした。
設定ファイルの記述を検討したいと思います。
もし、単純にテストでJSON形式のデータをSplunkに投げつけたいということであれば、
以下が単純でいいかと思いますが、いかがでしょうか。$ echo "{"tag1":"value1", "tag2":"value2"}" | nc Splunk 10000
今回の目的はこちらのイメージでした。
ただ、環境上netcatが許可されるかということもあり、標準で入っているcurlで出来れば、ということでした。
ご回答、ありがとうございました。