fluentd+elasticsearch+kibanaの王道構成環境があるのだがelasticsearchの容量がいっぱいになってきたのでcuratorを使って容量削減する方法を調べていたらNetflowを受ける事ができるという記事を見かけたのでちょっと試してみた。
AristaSWではNetflowの機能は無く、代わりにsFlowの機能があるので今回はsFlowで試してみる。
■参考にさせて頂いたサイト
・http://komeiy.hatenablog.com/entry/2014/09/26/212000
■fluentdの設定
今回の構成はfluentd+elasticsearch+kibanaを同一筐体で全てサービスさせている。
まずはfluentdで「fluent-plugin-netflow」をgem installする
#/usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-netflow
Fetching: bindata-2.1.0.gem (100%)
Fetching: fluent-plugin-netflow-0.0.4.gem (100%)
Successfully installed bindata-2.1.0
Successfully installed fluent-plugin-netflow-0.0.4
2 gems installed
Installing ri documentation for bindata-2.1.0...
Installing ri documentation for fluent-plugin-netflow-0.0.4...
Installing RDoc documentation for bindata-2.1.0...
Installing RDoc documentation for fluent-plugin-netflow-0.0.4...
正常に終了した。
これでfluentdの設定でtype netflowが使えるようになった。
次にfluentdの設定で以下のように設定する。
<source> type netflow tag netflow.event port 5141 </source> <match netflow.**> type elasticsearch host 10.1.1.1 port 9200 type_name netflow include_tag_key true logstash_format true logstash_prefix flow buffer_type file buffer_path /tmp/out_elasticsearch.netflow.*.buffer buffer_chunk_limit 8m buffer_queue_limit 256 flush_interval 10s retry_limit 17 retry_wait 1s </match>
一度サービスを再起動して正常に起動することを確認する
#service td-agent restart
■AristaSWの設定
次にArista-SWでsFlowを有効にする。
Cisco機器等のNetflowとsFlowの違いは以下サイトで学んだ。
http://blogs.manageengine.jp/an-introduction-to-sflow-technology-and-a-brief-on-sflow-vs-netflow-technology/
Aristaで以下設定を行う
次にArista-SWでsFlowを有効にする。
Cisco機器等のNetflowとsFlowの違いは以下サイトで学んだ。
http://blogs.manageengine.jp/an-introduction-to-sflow-technology-and-a-brief-on-sflow-vs-netflow-technology/
Aristaで以下設定を行う
sflow polling-interval 30
sflow destination 10.1.1.1 5141
sflow source 192.168.1.1
sflow run
destination(宛先)の設定は先ほど設定したfluentdのSVを指定する。ポートも5141を指定する。
#sh sflow コマンドを実行するとsflowが動作しているか確認する事が出来る
arista#sh sflow
sFlow Configuration
-------------------
Destination(s):
10.1.1.1:5141 ( VRF: default )
Source(s):
192.168.1.1 ( VRF: default )
:: ( default ) ( VRF: default )
Sample Rate: 1048576 ( default )
Polling Interval (sec): 30.0
Status
------
Running: Yes
Polling On: Yes
Sampling On: Yes ( default )
Send Datagrams:
Yes ( VRF: default )
Hardware Sample Rate: 65535
Statistics
----------
Total Packets: 3399559
Number of Samples: 0
Sample Pool: 0
Hardware Trigger: 0
Number of Datagrams: 46
Running:Yesになっているのでsflowが動作し、TotalPacketsの値も増えているので送れているようだ。
■kibanaで確認してみる。
ここまでで正常にAristaからsflowがSVに送られている筈
fluentdのタグ設定などに誤りがなければelasticsearchのDBに情報が入り、kibanaから確認出来る、筈・・・
と思って見てみたら情報が入っていない・・・
td-agentのログを見てみたところ
#tail -n 100 /var/log/td-agent/td-agent.log
2015-01-29 21:11:45 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:12:15 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:12:45 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:13:15 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:13:45 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:14:15 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:14:45 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:15:15 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:15:45 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:16:15 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:16:45 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:17:15 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:17:45 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:18:15 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:18:45 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:19:15 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:19:45 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:20:15 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:20:45 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:21:15 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:21:45 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:22:15 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:22:45 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:23:15 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:23:45 +0900 [warn]: Ignoring Netflow version v0 2015-01-29 21:24:15 +0900 [warn]: Ignoring Netflow version v0
いい感じに30秒毎にログが出力されているのでどうやらAristaから送っているsFlowのversionがtd-agentのNetflow-Pluginでは受け取れないようだ。
https://github.com/repeatedly/fluent-plugin-netflow
にも
versions [5, 9]
しか受け取れなさそうな記述があるし・・・
■終わり
Aristaではversionを指定出来そうな設定がないので今回は諦めました。
今度CiscoのNetflowで送れるかを試してみようと思います。
私の体験が誰かの生産性向上に役立っていただけることを祈って