* memo for Fluentd meetup in Japan #2
authormitty <mitty@7d2118f6-f56c-43e7-95a2-4bb3031d96e7>
Fri, 31 Aug 2012 04:46:01 +0000 (04:46 +0000)
committermitty <mitty@7d2118f6-f56c-43e7-95a2-4bb3031d96e7>
Fri, 31 Aug 2012 04:46:01 +0000 (04:46 +0000)
 * http://www.zusaar.com/event/355006

git-svn-id: https://lab.mitty.jp/svn/lab/trunk@157 7d2118f6-f56c-43e7-95a2-4bb3031d96e7

Commentary/Fluentd/fluentd.#2.log [new file with mode: 0644]

diff --git a/Commentary/Fluentd/fluentd.#2.log b/Commentary/Fluentd/fluentd.#2.log
new file mode 100644 (file)
index 0000000..68b7301
--- /dev/null
@@ -0,0 +1,369 @@
+古橋
+       cedec awards 2012
+               fluentdで受賞
+       
+       self-introduction
+               treasure data
+                       hadoop, big data
+                       logを入れる仕組みを誰も作っていなかった -> fluentd
+                       
+       video
+               概要
+                       logをjson形式で集めて蓄積する
+       
+       次のバージョンどうするか
+       アンケート
+               ログ解析に何を使っているか
+                       7割の方がfluentd
+               保存先?
+                       mongdb 46%くらい
+                       RDBMS 40%強
+       導入障壁
+               検討中
+               ドキュメントが不足
+                       英語のDocが足りない、と思っている人は? -> 12人ぐらい
+                       日本語のDoc欲しい人は? -> 4人ぐらい(ほとんど居ない)
+               プラグインなど機能が少ない
+               実績が…
+       なぜロギングするのか
+               error notify
+                       new reric
+               performance monitor
+                       資源の仕様傾向をみて、あらかじめサーバを増強など
+               user segment analysis
+                       ユーザの使用傾向
+               funnnel analysis
+                       TOPページに来た人 -> サインアップしてくれた人はそのうち何%?
+               heatmap
+                       時刻と曜日の二軸グラフ化
+       なぜロギングにfluentdを?
+               alerting / analysis / archiving で様々な使い方をする
+               log sourceも様々な物がある
+               log sourceと蓄積先・alalysisをどうつなげるか
+                       bash script? perl?
+                       悪魔的なスクリプトは…
+                       メンテナンスできる人がいなくなると困る
+                       スクリプト書く人と、フロントエンドを書く人が別
+                               期待するログのフォーマットが違う
+               logrotate
+                       最大24h待たされる
+               fluentd をhubに使えば上記の問題は解決する!
+       Input / Output / buffering
+               それぞれpluginになっている
+       input pluginですべてjsonにする
+               output pluginはjsonに対応すればよい
+       logの必須3要素
+               時刻
+               タグ
+               jsonレコード
+       fluentdの特徴
+               拡張可能な plugin 形式
+               json という統一フォーマット
+               インストールが楽
+       
+       plugins一覧
+               DL人気順に並んでいる
+       
+       既存システムとの比較
+               scribe
+                       拡張可能ではない
+                       統一フォーマット無い
+                       ....
+       
+       誰がfluentdを使っているのか
+               slide share
+               viki
+               context logic
+               nhn japan
+               cookpad
+               quora.com にどのように使われているのか、実績が書かれている
+       
+       fluentdの次バージョンについて
+               filter pluginの導入
+               <source> に filterを書けるようにする予定
+               filter pluginによるpipelineが可能になる予定
+               <label>
+                       デフォルトではマッチしない
+                       別のサーバでラベルを付けてからforwardされてくると、マッチするようになる
+                       設定ファイルは一緒だが、サーバごとに違う挙動をさせられる
+       
+       MessagePack for Ruby v5
+       
+       td-agent-lite
+               in_tail = out_forward in "single" binary
+       
+       new process model & live restart
+               現在は中央のプロセスを経由している
+               
+               live restart
+                       ログを取りこぼさずに再起動する
+       
+       後方互換性
+               fluentd::new
+               fluentd::old
+               の名前空間で対応
+       
+       Q&A
+               時刻の単位が秒なのだが、もっと細かくならないか
+                       ミリ秒とかが欲しい
+               互換性の問題があるので、変更は難しい
+               
+               jsonで構造化されているのが売りだとのことだが、
+                       テキストベースの製品もまだある。どちらが良いのか
+               Hadoopなどでパースするときに、jsonだと難しい
+                       ただし、ログの構造を知らない人がテキストファイルをパースするのは無駄が大きい
+                       なのでjsonにあらかじめ強制しておけば混乱がない
+               
+               日本語Docあるとうれしいので、お手伝いしたい
+               オフィシャルのリポジトリ以外で、どんどん翻訳するというのはむしろ歓迎する
+                       どんどん広報して、力を合わせて欲しい
+                       公式Docと乖離してしまう問題はあるが、無いよりは全然良いので是非
+               
+               coolioを捨てる計画はあるか
+               pluginとしては残すが、fluentd本体としてはthreadに移ろうと計画している
+       
+佐々木 @yssk22 with ワリ @wallyqs
+       loggin infrastructure in PasS with fluentd
+       
+       Cloud Foundry (tm)
+               VMware の PaaS
+               ruby
+               main points
+                       open source
+                       separation of concerns from IaaS
+                       Scalable architecture
+               Easy to deploy applications
+                       node.js の deploy 4行くらい
+               mission criticalなappはまだ難しい
+                       ソースをいじりながら対応しようとしている
+       Cloud Foundry + Fluentd
+               $ vmc target api.cloudfoundry.com
+               $ ...
+               $ vmc push yssk22-myapp -n
+               $ ...
+               $ curl http:// ...
+               $ vmc logs yssk22-myapp
+               アプリケーションのupdateをするとログが消えてしまう
+                       現在の仕様
+                       FileSystemが永続化されていない
+                       解析が不能
+       
+       fluentd はrubyで書かれているので、cloudfoundryのエコシステムに組み込むのは優しい
+       droplet execution agent
+       どのようにログを蓄積するか
+               [ App -> fluentd ] -> log storage
+                       log storageを外に用意する
+                       fluentd側でファイルなどから自由にログを収集してくれるので、
+                       app側でどのファイルにはき出すかなどを心配しなくて良くなる
+               
+               [ appA -> fluentd ] -> [ another fluentd -> storage ]
+                                      ^
+               [ appB -> fluentd ] ---^
+       
+       Fluentd Pros & Cons
+               Pros
+                       Easy to include in CloudFoundry compared to other solutions
+                       Easy to extend
+                       Easy to change storage tech depending on scale
+               Cons
+                       ....
+       NATS input plugin
+               adding new forwarding nodes dynamiccally through NATS
+       
+       github:rakutentech/dea
+               https://github.com/rakutentech/dea
+               https://github.com/rakutentech/dea/commit/64d271904de1e195cc90ca1958eadf704f530d94
+       
+       nginx + lua
+               luaのloggerがあるとうれしい
+       appをdeployするたびにfluentdが立ち上がる点がちょっと複雑
+       
+       Q&A
+               ログの流量はどれくらい?
+               まだまだ全然
+                       CloudFoundryの上で動くappの数に依存すると思われる
+
+Q&A
+       fluentという名前で最初は開始したが、既に同じ名前があったので、fluentdとした
+       
+       プラグインのデバッグがとても難しい、どのようにやっているのか
+       test frameworkのできがとても良くない
+       rspecを次バージョンで入れる予定
+       input -> fluent cat or 出力に stdioを入れるなどの対応
+
+
+外道父@GedowFather
+Fluentdを優しく見守る監視事例
+       自己紹介
+               ドリコム
+               インフラエンジニア
+               
+       動作環境について
+               IDCがいっぱいある環境
+                       それぞれにfluent agentが入っている
+                       Global IP/暗号化
+                       vpnは使っていない
+                       HDFSに保存
+       プラグイン
+               改造したtail コマンドでagentへ
+               ローカルで保存ししつつforward
+               agent -> collector -> HDFS
+       collector
+               test / production のログ切り分けを tagによって行っている
+       Fluentd vs flume OG
+               flume OG
+                       十分な機能(暗号化は無かったので追加した)
+                       Java
+                       agentが数百台オーダーになるとメモリ不足
+                       agentからのキュー再送が不安定
+                       -> fluentdへ
+                       flume NG -> 知識の引き継ぎが出来ない感じだった
+               td-agentにした
+                       パッケージ管理は重要
+                       Rubyエンジニア対応できる
+       ローカル監視
+               必要な理由
+                       プロセス操作はローカルでやるべき
+                       サーバが社外にある場合
+                               サーバを調査したり、煩瑣な設定変更 -> ローカルに無いと面倒
+               注意点
+                       ログの内容が正しいか・ちゃんと記録されているか
+                       td-agentがきちんと起動・動作しているのか
+                       HDFSへちゃんと送られているか
+               監視にはmonitを使っている
+                       CPUやメモリ、プロセス、ポート・プロトコルで監視できる
+                       スクリプト実行の返値でアクション
+                               起動スクリプト実行、メール、etc
+               monit
+                       td-agentの基本プロセスの監視
+                               td-agentは常に動作している必要がある
+                                       主に人災(操作ミス)対策
+                                       check process によるチェック
+                                       collectorに対しては Listen portもチェック
+                       td-agentの重複デーモン監視
+                               fluentdはtcp/udpごとに2プロセスが必要
+                               psコマンドによってプロセス数が2つ見つからなかったらNG
+                               プロセス名が ver 1.1.8 から変更になった
+                               unicornなどのほかのrubyプロセスを除外
+                               瞬間的に出てくる特権モード [td-agent] を除外
+                               もし重複して起動していたら
+                                       init.d/td-agent stop
+                                       pkill
+                                       td-agent start
+                               1.1.7までのtd-agentの起動スクリプトにはバグがある
+                                       confの内容によっては、service startの数だけプロセスが重複
+                               mazgi事件
+                                       flumeはもうオワコンなので、fluentdだ! プラグインよろしくー
+                                       作ったプラグインを確認すると18/16倍くらいに増えてる
+                                       agent分よりHDFSが多くなっていた
+                                       あれ?4プロセス動いているサーバが2台有るぞ?
+                                       mazgi先生は濡れ衣だった
+                                       結論: agentが重複するとログが増える!
+                       flowcounterで転送状態監視
+                               アプリがログを記録している証明
+                               fluentdがログを拾って配送していること証明
+                               部分的な記録ミスなどは、無視
+                               あまりやり過ぎるとアラート対象が増える
+                               問題点
+                                       copyなので、forwardに失敗してもflowcounterのカウント記録は成功したことになっている
+                                       collectorやHDFSが落ちたときは考慮していない
+               fluentd + monit十分な感じ
+       リモート監視
+               アラート・グラフ作成の集約と、状態の可視化
+               特にCollectorのキャパシティ対策
+               nagios + nrpe-server
+               グラフはcactiとか
+                       cacti <- snmpd
+                       CPUとtrafficは必ず入れておかないと、fluentdを将来どうスケールするか読めなくなる
+               一行350バイト程度・毎秒500行程度
+               traffic
+                       圧縮でagent -> collector (10秒おき)
+                               0.7Mbpsくらい
+                       collector -> HDFS
+                               1.5Mbpsくらい
+               CPU
+                       25%くらい -> 秒間2000行くらいまではいけるかなぁ
+                       ただし、ログのトラフィック量が変化しても、CPU負荷はあまり変化しない
+                               agentの数や、agentからのflush間隔でCPU負荷が変わってくる? (要調査)
+               CollectorでAgentを把握したい
+                       Agentは様々な環境にたくさん配置される
+                       Collectorの位置でまとめてAgentの状態を確認できるとうれしい
+                       NATだと、source addressが一つになってしまって、IPで識別は出来ない
+                       hostnameのprefixでグループ化?
+       監視を設定することで安定した運用が望める
+
+       Q&A
+               agentの数は?
+               300-400くらい
+               
+               VPNを張らなかった理由は?
+               VPNは多様性と負荷分散性に弱い
+               増やしたときにうまく分散するようにしたかった
+               サーバの管理が社外に出てしまうこともあったため、そうなるとVPNは難しい
+               
+               圧縮・暗号化はどうやったのか
+               forwardを改造した
+               gzip/growfish
+               
+               暗号化は認証が欲しいが、どのような方法の認証が良いのか悩んでいる by 古橋
+
+Q&A
+       forwardのソースを見ると、メッセージの送り方が三つあるが?
+       tag time record
+               一番単純
+       ?
+               バッチで送る
+       packed forward
+               serialize/de serializeせずにforwardしたいとき
+       
+       公称対応限界は?
+       CPUの処理能力に単純に依存している
+       6万message / 8coreくらい
+               forwardで受けて、flowcounterして、さらにforwardしているだけのノード
+               1coreあたり8000くらい?
+       次のバージョンでマルチプロセスで並列化出来るようにする予定
+
+       forward -> UDPでkeepalive, TCP -> data connectionとなっているが、
+       message数が増えてくると、UDPの方が落ちてくることがままあった
+       次バージョンでheatbeatの改善を入れたい
+       TCPで接続が出来たら、heatbeatと見なすようにしたい
+       
+       collectorでのCPU負荷とTrafficの量に関連性が薄かったが、どこがCPU負荷になっていると考えられるか
+       リクエストの回数にbindするはず
+       lockに処理を奪われている感じがある
+       
+       Windows対応はどんな感じか? F#実装の性能は?
+       ログの発生源がWindowsの場合は、td-agent-liteをWin対応にして、ログ集積はLinux
+       F# -> テストは通って、実験は成功したが、ログ収集先をWindowsにしようとしているので手間取っている感じ
+       
+       設定ファイルをDSL化(erb)する話はどうなった?
+       DSL化すると、Rubyist以外につらい
+       設定ファイルは設定ファイルというままにした
+               設定ファイルにプログラムを書き始めるのは負けだと思っている
+       mixin プラグイン側で対応するかも
+       
+       設定のDSL化が欲しいパターンはあまりなさそう
+       config expander
+       
+池田 @mikeda
+       fluentd & TeasureDataでこっそり始めるログ集計
+       
+       自己紹介
+               450台くらい
+       
+       fluentd
+               データストリームを構造化するインフラとして認識している
+       
+       アクセスログ
+               2億/day くらい
+       アプリケーションエラーログ
+       メールログ(試験中)
+       
+       「ログとかそんなに頑張らなくても良いのでは?」
+               実際どうだったか
+               工数
+                                       ---これ以降はノートPCが電源切れたので記憶を頼りに書いている
+                       一人でやってもそうかからなかった(?)
+                       ... とs... でadmin用簡易webUIを作った
+                               100行+100行くらい
+                               SQLっぽいクエリで結果をtableで得られる