mazinlabsのブログ

RubyとかCloudとかその辺の記事を書いたり書かなかったり

Fluentd Casual Talks #3に参加してきました

DeNAさんの会場でFluentd Casual Talks #3が開かれたので行ってきました。


申し込んでいたのをすっかり忘れていてTwitterのTLを見ていて
「へー、そんなイベントがあるのかー」と思ってATNDを見に行ったら自分が参加になっているのに気づいて、
慌てて嫁に予定を確認してから参加しました。


Fluentdは業務で使ってみたいなーと思いながらなかなか使う機会と場を見つけられないものの、
個人的な趣味では使わせてもらっていて便利なのでやはり使う機会を狙っていかねばと思う次第です。


イベントではPluginの話やv11の話が聞けてますますFluentdを使ってみたい熱が高まりました。


あと、Go言語への興味の高まりも(ぇ


そんなわけで、年末年始でFluentdを使って何かできればいいなーと思う次第です。


以下その場でとってた適当なまとめ

Fluentd でShadowサーバ用意したら捗ったった話@sonots

Haikanko
  • Fluentdクラスタ管理ツール
  • ログのパス
  • 監視ワードの設定
  • ホスト
  • デプロイボタンで設定ファイルを配布

Haikanko便利そう。

Yohoushi
  • 分散GFツール
困り事
  • UTF-8 invalidが入ってきてあぼーん
  • 本番で負荷が上がってあぼーん
Shadowサーバ

実際のリクエストをコピーしてテストするためのサーバ?

dummy_log_generator
ベンチマーク
  • 小さいデータだとkeepaliveをすると高速化する
    • socketのopen/closeが少なくなるから
  • ログ送信まとめ
    • 送信制御はout_forward側で行われる
    • fluent-agent-liteがいい
    • out_Forward安定パラメータ
      • flush_interval 0s
      • buffer_chunk_limit 1m(つまりがないなら10mのほうが性能は出る)
      • num_threadsも大きく

@stanaka

  • LTSV
    • ファイルフォーマット
  • immutable infrastructure / Docker
  • はてな
    • Web Serverのlogをmongodbやelasticsearchに流す
  • Go
    • complier language
    • 静的型付
    • ガベコレ
    • コンカレンシーモデル(goroutine, channel)
    • 高速(PerlRubyよりも10~20%高速)
    • メモリ使用量が少ない
    • コードフォーマット、ベンチマーク、テスト、ドキュメンテーションができる
    • ライブラリも多い
    • product
      • Docker
      • packer
  • Go 1.2
    • Pre-emption in the scheduler
    • performance improvement
    • library update
  • ik
    • Goによるfluentd実装
    • suit for leaf nodes
      • support only less plugins
      • in_forward, out_forward, out_stdout
    • plugin system
      • ビルドが必要
      • ハードコードが必要

Windows版 Fluentdで幸せになれますか

  • forkをspownに変更
  • どこかの中川さんがcool.ioのWindwos対応
  • in_tail
    • inodeをWin32API"GetFileInformationByHandle"で大体
    • ファイルのopen処理をWin32APIを利用する形で再実装
  • out_forward
    • TCPSocketのSO?LINGERオプションの適用を抑制
  • 引き続き考える事
    • Ctrl+Cで終了
    • buf_fileのサポート
    • etc...

注意:本番で使うな!

      • -

Fluentdのモニタリングの話

データの世界をシンプルに -> fluentd

  • 利用例
    • Nintendo
    • LINE
    • AWS
  • 監視基本
    • プロセス
    • ポート
    • システム情報(CPU/Memory/Network)
  • Fluentd特化
    • buffer溢れ
    • buffer flushのリトライ回数
    • Fluentd自体のエラー・ワーン
    • fluentdのログ

モニタエージェント

  • Fluentd内部情報をHTTP経由で取ってこれる
  • Treasure Agent Monitoring Service
    • TDのtd-agentのモニタリングサービス
    • fluent-plugin-td-monitorngをインストール
    • sslで内部情報をTDに送信
    • 設定ファイルの書き換え(8行!簡単!)

LT

  • chefを使って設定ファイルを管理
    • fluentdのinclude directiveを利用
    • include_recipeを使う
    • data_bagsで暗号化
  • Fluentd ads a Middleware Engine
    • MySQLのテーブルをElasticsearchに
    • Yamabiko
      • RDB -> Yamabiko -> elasticsearch
  • postgres関連の何か
    • 一番使われてる名前を言ってはいけないあのDBが辛い
    • potgresで頑張る
      • pg/msgpack
      • pg/json

fluentd v11の新機能

  • 無停止再起動がしたい
    • supervisorとworkerにtcp socketをもたせる
    • worker再起動時にsupervisorが新しいworkerに渡す
  • マルチプロセス化
  • エラーストリーム
    • chunk内に3event => 処理中に2 event目でエラー発生 -> 3event目はどうなる?
    • エラー処理はプラグイン依存
    • fluentdコアでエラー処理することで解決
  • プラグインのバージョン管理
    • Gemfileでバージョン管理
  • プラグインごとのログレベル
  • 変数のはいった設定ファイル
  • タグの書き換えがいらないストリーミング処理
    • matchのネスト