FortiGate さんごめんなさい、悪いのは rsyslog でした

その昔 「続オレオレFortiAnalyzer」という記事を書きました。
何故か FortiGate のログの時刻フォーマットに余計なスペース(0x20)が入ってて困るという話。

ががが!!今日見てみたらスペースが入ってなかったのです。あれ?

FortiOS の更新してないのになぜ?あっ、rsyslog から syslog-ng に変えたせいかっ!

ということで、再度 rsyslog で確認してみるとやっぱり date=2015-03-20,time=12: 34:56 となる。
どうやら rsyslog は tag が必須なのかログメッセージの最初のコロン(:)までをタグとして扱い、
tag: msg というフォーマットで書きだすようです。

確かに tcpdump で見ても送られてくるデータにこのスペースは含まれていませんでした。

そう、FortiGate さんのバグではなかったのです。ごめんなさい。
"FortiGate さんごめんなさい、悪いのは rsyslog でした"の続きを読む

続オレオレFortiAnalyzer

Fluentd + Kibana3 で FortiAnalyzer いらず の続きです。

前回、CSVフォーマットに対応しようと書いたので対応させてみました。Parser はまたベンチマークとってみたところ、CSVじゃないバージョンよりも軽くなってました。

これも Gist に置いてあります。
https://gist.github.com/yteraoka/7043113

ただ、 CSV フォーマットにも罠がありました! strptime になぜかコケる...

Oct 19 00:00:00 fortigate date=2013-10-18,time=23: 59:59,...

ん?んんん?時と分の間に謎の空白が!!

FortiGate の Syslog 設定について

Webインターフェースでは Syslog に traffic ログや webfilter ログを出力する設定が無いのですが、CLI で操作することで出力することができます。 Syslog も FortiAnalyzer 用出力もそれぞれ3つの出力設定が可能です。
fortigate-cli-40-mr3.pdf

  • syslogd
  • syslogd2
  • syslogd3
  • fortianalyzer
  • fortianalyzer2
  • fortianalyzer3

2,3 は GUI からアクセスできません。GUI からアクセスできる syslogd も traffic ログなどを設定する項目は GUI に無いので、これは触らないことにしておいて syslogd2 を使ってこれらのログを出力することにします。

$ show log syslogd2 setting
config log syslogd2 setting
    set status enable
    set server "10.20.30.40"
    set csv enable
    set facility local6
end

syslog (2じゃない) の出力項目の確認をしてみます。

$ show log syslogd filter
config log syslogd filter
    set email disable
    set traffic disable
    set web disable
    set infected disable
end

email, traffic, web, infected が disable にされています。だから syslog2 では filter は空っぽにしておけば全部出せます。

strptime の cache

strptime って実は結構重い処理だったということで、最近、Fluentd の TextParser には strptime の結果を cache する仕組みが入りました。FortiGate のログも traffic ログや webfilter ログを出してると秒間そこそこの量のログが吐き出されます。こういう場合は cache が欲しいです。追加してみよう。

パフォーマンス面

30,000〜50,000 lines / min くらいでは特に問題は発生していないですね。
不要な項目は ElasticSearch に送らないようにしているので 5GB のログファイルから生成される ElasticSearch のインデックスファイルは 1GB 程度。
ElasticSearch のサーバーは KVM Guest で 2GB RAM、 JVM の heap は 1GB.
KVM Host の Storage は RAID5 でそんなに速くない。CPU は Xeon 5570 で 2 vCPU 割り当てている。でも CPU はあまり使われていない。
特に困ったこともないのでチューニングもしていない。
syslog サーバーでの Fluentd の CPU 使用率は高い。