Index: /trunk/Commentary/Fluentd/fluentd.#2.log
===================================================================
--- /trunk/Commentary/Fluentd/fluentd.#2.log	(revision 157)
+++ /trunk/Commentary/Fluentd/fluentd.#2.log	(revision 157)
@@ -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で得られる
