============================================ fluent-plugin-kafka: fluentd と Kafka の連携 ============================================ (最終更新:2016 年 1 月 1 日) `fluentd `_ 自体の詳しい説明は他に譲るとして、本文書では fluentd と Kafka を組み合わせる方法を紹介する。本文書を読むと、fluentd で syslog を読み取り、Kafka に流す設定がわかる。Kafka の起動手順は `Apache Kafka Quick Start `_ を参照のこと。 本文書で作成するシステムは下図のようになる。 .. image:: ../images/fluent-plugin-kafka.png :alt: fluent kafka architecture fluentd で syslog を読み取る ============================ fluentd と Kafka を組み合わせる練習として fluentd で syslog を読み取ってみよう。syslog は適度にいろいろなログが出力されるので見ていて楽しい。はじめはデバッグのために、読み取ったログデータを標準出力に垂れ流すことにする。 まずは syslog の出力フォーマットを確認する。Ubuntu 15.04 では標準で rsyslog が稼働しているので、その設定を確認する。 /etc/rsyslog.conf:: $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat 標準ではこのような設定になっているはずだ。 `rsyslog のドキュメント `_ によれば、 ``RSYSLOG_TraditionalFileFormat`` は事前定義されたテンプレートで、次のような内容になっている:: "%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n" 実際に /var/log/syslog を確認するとそうなっていることがわかる。タイムスタンプ、ホスト名、タグ、メッセージがスペース区切りになっている。設定の中の ``sp-if-no-1st-sp`` は、メッセージの先頭にスペース文字が入っていた場合に、スペース文字が重複しないようにするための設定だ。 このログを読み取るための fluentd の設定を次に示す:: @type tail format /^(?