43
page Sep, 2014 9th Fluentd のお勧めシステム構成パターン 1

Fluentdのお勧めシステム構成パターン

Embed Size (px)

DESCRIPTION

2014年9月9日開催の『サーバ/インフラエンジニア養成読本 ログ収集〜可視化編』 出版記念!執筆者が語る大講演会! での発表スライドです。

Citation preview

Page 1: Fluentdのお勧めシステム構成パターン

page

Sep, 20149th

!

Fluentdのお勧めシステム構成パターン

1

Page 2: Fluentdのお勧めシステム構成パターン

page

1. 自己紹介

2

Page 3: Fluentdのお勧めシステム構成パターン
Page 4: Fluentdのお勧めシステム構成パターン

page 4

Page 5: Fluentdのお勧めシステム構成パターン

page

1. 自己紹介 2. はじめに 3. Fluentdのある世界 4. Fluentd構成パターン 5. まとめ

本日の流れ

5

Page 6: Fluentdのお勧めシステム構成パターン

page

2. はじめに

6

Page 7: Fluentdのお勧めシステム構成パターン

page

はじめに

7

第2特集の執筆を担当「ログ収集ミドルウェアFluentd徹底攻略」 !

第1章:ログ収集の目的とミドルウェアの特徴 第2章:はじめてみようFluentd 第3章:Fluentd設計のコツ 第4章:Fluentd運用ノウハウ 第5章:逆引きFluentdプラグイン

Page 8: Fluentdのお勧めシステム構成パターン

page

はじめに

8

入門記事はネット上に多くあれど、まとまった解説が無い問題を解決 Fluentd運用・監視の方法

安定稼働するためのFluentd構成

逆引きFluentdプラグイン集

約300に及ぶプラグインのソースコードを追った上で分類

Page 9: Fluentdのお勧めシステム構成パターン

page

3. Fluentdのある世界

9

Page 10: Fluentdのお勧めシステム構成パターン

page

Fluentdとは

10

Page 11: Fluentdのお勧めシステム構成パターン

page

Fluentdとは

11

Page 12: Fluentdのお勧めシステム構成パターン

page

Fluentdとは

12

ログ/メッセージの集約を賢く実現するプロダクト

Rubyで書かれたミドルウェア 依存ミドルウェア無しで動く、小さなフットプリント 再送処理など、ネットワーク周りの例外処理を任せられる 豊富なプラグインにより様々な要件の集約に対応できる プラグインによる容易な入力/フィルタ/出力機能の拡張

Rubyを用いたプラグイン記述のハードルはとても低い

使い慣れた言語でデータ出力/保存を伴うフィルタ処理も書ける

標準入力で外部プログラムを実行する“exec_filter”を利用する

Page 13: Fluentdのお勧めシステム構成パターン

page

Fluentdとは

13

ログ収集コストの最小化 ログ収集を行う定期バッチはFluentdに置き換えると保守が楽になる

ファイルのローテーションにも対応するtailプラグインを用ると、手軽にログの収集を準リアルタイム化できる レインテンシの改善・帯域バーストの緩和という効果もある

Page 14: Fluentdのお勧めシステム構成パターン

page

Fluentdの導入前後

14

Page 15: Fluentdのお勧めシステム構成パターン

page

Fluentdの導入前後

15

導入前 logディレクトリを踏み台サーバにNFSマウントし、各エンジニアが編み出した秘伝のワンライナーでtailコマンド出力をフィルタリングする

踏み台サーバのLoad Averageが常時数十越えのため、非常に重たい

意図せぬファイルロックが残り、本番WEBサーバのログローテートに失敗することもある 本番WEBサーバのNetwork I/O・Disk I/Oが平日勤務中のみ異様に多い 非エンジニアによるログ集計を行うためのハードルが高い

Page 16: Fluentdのお勧めシステム構成パターン

page

Fluentdの導入前後

16

導入後 エンジニアの数にスケールしたLoad Averageではなくなる

集約ログを踏み台サーバへファイル出力することで、tailコマンドという互換性を保ちながらスケールする仕組みを実現さらに踏み台サーバのファイルバッファに載るため処理が高速化 NFSを使わないため本番WEBサーバのNetwork I/O・Disk I/Oが激減

構造化されたLTSV形式で出力することで、awkを用いた高機能なログ調査や分析が出来るようになる

集約ログをTreasureData(Hadoop)に格納することで、SQLを用いた集計が実現し、非エンジニアによる分析や施策が打てるようになる

Page 17: Fluentdのお勧めシステム構成パターン

page

Fluentdの基本的な使い方

17

Page 18: Fluentdのお勧めシステム構成パターン

page

Fluentdの基本的な使い方

18

基本的な使い方 ログ/メッセージの集約と保存 ネットワーク周りで手間の掛かるリトライ実装を任せられる !

利用例 アプリログ、アクセスログをFluentdに流し、集約して保存する

ファイルやDBといった、複数データストアへの同時保存にも最適

Page 19: Fluentdのお勧めシステム構成パターン

page

Fluentd導入後に実現するログ活用

19

Page 20: Fluentdのお勧めシステム構成パターン

page

Fluentd導入後に実現するログ活用

20

Fluentd導入による効果

ログ/メッセージ収集の実装や運用保守の手間が激減する 準リアルタイムに収集されたログデータを活用できる 新鮮なデータを用いたストリーミングデータ処理が実現できる 新鮮なログ/メッセージの可視化が行えるデータストアが作れる

Page 21: Fluentdのお勧めシステム構成パターン

page

Fluentd導入後に実現するログ活用

21

利用例 Norikraを用いて単位時間毎にSQL集計した結果を収集する ダッシュボードアプリに収集データをグラフ等を用いて可視化する リアルタイム分析によるログの活用 時系列解析によるインシデントの早期予測 不達メールアドレスのクリーニング 不正ユーザ抽出

Page 22: Fluentdのお勧めシステム構成パターン

page

Fluentdが適さない使い方

22

Page 23: Fluentdのお勧めシステム構成パターン

page

Fluentdが適さない使い方

23

QoSの最高レベル“Exactly Once”を必要とするデータ収集

FluentdはAt Most Onceを採用している

メッセージを確実に1回だけ配信するという、厳密なトランザクション処理を求める要件には不向き 例)取りこぼしが絶対に許されない課金データ

!

CPUコア1つでは処理しきれない負荷の掛かるフィルタ処理

複数コア利用や分散処理を行うためのFluentdクラスタ構成が必要

Page 24: Fluentdのお勧めシステム構成パターン

page

Fluentdが適さない使い方

24

Fluentdのサービス再起動を伴う設定変更が日常的に発生する使い方 日々変化するビジネスロジックをプラグイン設定に織り込まない Fluentdは基本的に変更のないシンプルな処理のみを担うと良い

扱いやすい形式で集約する所までをFluentdが担うと良い インフラ層とアプリ層の責任範囲を明確化するためにもそうすべき

Page 25: Fluentdのお勧めシステム構成パターン

page

Fluentdが適さない使い方

25

メトリクス収集を超えた、死活監視システムとしての利用 複雑になるため、NagiosやZabbixの得意とすることは任せるべき 現実的にはサービスのモニタリングデータ収集に留めてファイル出力し、閾値やアラート通知部分は一般の監視システムに任せるべき

Page 26: Fluentdのお勧めシステム構成パターン

page

4. Fluentd構成パターン

26

Page 27: Fluentdのお勧めシステム構成パターン

page

Fluentdのシングル構成

27

Page 28: Fluentdのお勧めシステム構成パターン

page

構成パターン(シングル構成)

28

シングル構成 任意のソースからデータを集めた後に適宜フィルタ加工を行い、1つ以上のアウトプット先に保存する用途 ユースケース アプリ等からのメッセージをバッファに蓄えて即座に応答を返し保存 定期的にポーリングすることで収集したデータを保存する

APIで収集できるTwitterやAWSなどのログ/メッセージ収集 製造機械や温度センサーデータの収集

Page 29: Fluentdのお勧めシステム構成パターン

page

Fluentdクラスタの汎用構成

29

日々の変更がある/負荷の掛かるような加工や集計を行わない場合は、Aggregatorから各種データ保存先に入れる構成が一般的です。

Page 30: Fluentdのお勧めシステム構成パターン

page

構成パターン(汎用構成)

30

汎用構成 複数のFluentdからのログ/メッセージを集約する場合に、forwardプラグインを用いて一度集約し、適切な保存先へ仕分ける構成 ユースケース 複数サーバのアクセスログなどを収集・集約しバッファした後に適宜フィルタ加工を行い、1つ以上のアウトプット先に保存する フィルタ加工の例

GeoIPを用いてIPアドレスから位置情報を付与する 別ファイルとして保存するために、サービス毎にタグを分ける

elasticsearch + Kibanaを組み合わせたダッシュボードを構築する

Page 31: Fluentdのお勧めシステム構成パターン

page

Fluentdクラスタの応用構成

31

負荷や用途に応じてサーバを分けると、保守もしやすくなります。 Aggregatorの後ろをまとめて1台にする構成も良く取られます。

Page 32: Fluentdのお勧めシステム構成パターン

page

構成パターン(応用構成)

32

応用構成 演算コストの掛かるフィルタ処理など行うケースには、相乗りせずにAggregatorノードの先に専用のFluentdインスタンスを構成する 応答性能の安定化や障害リスクを下げる観点で分けるケースもある 基本的に設定変更が発生しないAggregatorノードと比較して、Processor/Watcherノードの方が設定変更が多い傾向がある

ユースケース フィルタ系プラグインやNorikraを用いた時系列データ集計

Processor/Watcherノードにてファイル出力を行い、監視ミドルウェア(Nagiosなど)を用いて、監視のファイル文字列監視・通知を行う

Page 33: Fluentdのお勧めシステム構成パターン

page

安定運用する上で意識したいこと

33

各ノードは単一責任とすることで、障害に強い構成とする Fowarder:収集したログ/メッセージをAggregatorへ転送する

Aggregator:Forwarderからのイベントの集約を行う

Processor:イベントの集計や加工を行う

Watcher:イベント内容に応じた処理や監視連携、通知を行う

末端のインスタンスからはログをAggregatorへforwardするだけにすることで、最終保存先を記述する設定ファイルの配布対象サーバが減る これらは単なる用途の呼称のため、それ専用の設定がある訳では無い

転送 元 ノ ー ド

集 約 ノ ー ド

フィルタ処理ノード

Page 34: Fluentdのお勧めシステム構成パターン

page

5. まとめ

34

Page 35: Fluentdのお勧めシステム構成パターン

page

まとめ

35

まずは小さくFluentdを導入してみましょう

依存ミドルウェアの無いパッケージインストールで始められます

syslog等を用いた既存収集システムがあっても、並行稼働できます

ログ/メッセージ管理のDevOpsをFluentdで実現できます

固い運用をするには向き不向きがあるので、適切な使い方をしよう

遊び用途なら、手軽なストリーミングデータプロセッサとしてFluentdを活用して使い倒してみましょう!例:Twitterのタイムラインから特定画像を取得し、Tumblrへ投稿するhttps://speakerdeck.com/bash0c7/fluentd-in-my-sweet-home

Page 36: Fluentdのお勧めシステム構成パターン

page

宣伝

36

より詳細な内容はこの書籍にまとめております。PDF版はGihyo Digital Publishingにて販売中!

サーバ/インフラエンジニア養成読本ログ収集~可視化編 [現場主導のデータ分析環境を構築!] (Software Design plus)

出版社/メーカー: 技術評論社

発売日: 2014/08/08

定価: 本体1,980円+税

Page 37: Fluentdのお勧めシステム構成パターン

お知らせ

Page 38: Fluentdのお勧めシステム構成パターン
Page 39: Fluentdのお勧めシステム構成パターン
Page 40: Fluentdのお勧めシステム構成パターン
Page 41: Fluentdのお勧めシステム構成パターン
Page 42: Fluentdのお勧めシステム構成パターン
Page 43: Fluentdのお勧めシステム構成パターン

page

Thanks!

43

ご清聴ありがとうございました。