Fluentd Meetup #2 @外道父 Fluentdを優しく見守る監視事例

14,869 views

Published on

Published in: Technology
0 Comments
52 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
14,869
On SlideShare
0
From Embeds
0
Number of Embeds
6,791
Actions
Shares
0
Downloads
0
Comments
0
Likes
52
Embeds 0
No embeds

No notes for slide

Fluentd Meetup #2 @外道父 Fluentdを優しく見守る監視事例

  1. 1. Fluentdを優しく見守る監視事例 2012/08/22 Fluentd Meetup #2外道父@GedowFather Copyright © DRECOM Co., Ltd All Rights Reserved. 1
  2. 2. 自己紹介 Copyright © DRECOM Co., Ltd All Rights Reserved. 2
  3. 3. 自己紹介■私は 外道父@GedowFather■所属 ドリコム■職種 インフラエンジニア■ブログ http://blog.father.gedow.net/ Copyright © DRECOM Co., Ltd All Rights Reserved. 3
  4. 4. 目 次 Copyright © DRECOM Co., Ltd All Rights Reserved. 4
  5. 5. 目次  動作環境  ローカル監視  リモート監視 ・・・の3本くらいです Copyright © DRECOM Co., Ltd All Rights Reserved. 5
  6. 6. 動作環境 Copyright © DRECOM Co., Ltd All Rights Reserved. 6
  7. 7. IDC (2) IDC (3) Agent Agent Agent Agent GLOBAL  圧縮  暗号化 ☓ VPNIDC (1) Agent Collector HDFS Agent Copyright © DRECOM Co., Ltd All Rights Reserved. 7
  8. 8. プラグイン Agent 大事なログ flowcount log  path に * tail (改)  tag に basename copy forward (改) flowcounter  圧縮/暗号化 flowcount log Collector  復号化/解凍  特定hostnameのtag改変(*test*) forward (改) copy forest flowcounter HDFS webhdfs  path /logs/__TAG__/%Y%m%d-%H%M___HOSTNAME__.log Copyright © DRECOM Co., Ltd All Rights Reserved. 8
  9. 9. Fluentd VS Flume OG Copyright © DRECOM Co., Ltd All Rights Reserved. 9
  10. 10. Flume OG 十分な 機能 信頼の (暗号化以外) CDH付属 Javaだから うんぬん 1 Copyright © DRECOM Co., Ltd All Rights Reserved.
  11. 11. Flume OG 不安定 数百台規模で MASTERが不安定 メモリ不足 Agentのキューからの再送が不安定(タンス貯金現象)不安 配送途中に余計な改行が 入ったり復号化にたまに定 失敗するもJavaは難しい 1 Copyright © DRECOM Co., Ltd All Rights Reserved.
  12. 12. VS Fluentd 一択 Copyright © DRECOM Co., Ltd All Rights Reserved. 12
  13. 13. td-agent にした方針としてパッケージ管理は大事社内にRubyエンジニアだらけ機能不足はプラグインでなんとかなる?全機能を満たせたインストール簡単で周知しやすい少し頑張ったら満足いく安定度になった Copyright © DRECOM Co., Ltd All Rights Reserved. 13
  14. 14. ローカル監視 Copyright © DRECOM Co., Ltd All Rights Reserved. 14
  15. 15. ローカル監視が必要な理由 プライベートアラートメール ネットワークグラフ作成 でやる ローカルでプロセス操作 やるべき Copyright © DRECOM Co., Ltd All Rights Reserved. 15
  16. 16. 管理制限 IDC (3) Agent Agent サーバが社外管理の場合  サーバ調査  頻繁な設定変更  プライベートネットワーク経由監視 Copyright © DRECOM Co., Ltd All Rights Reserved.
  17. 17. ログ配送の注意点 ログを記録しているか Agent ログの内容が正しいか → ジョブで td-agentが正しく起動しているか Collectorに送っているか Collector td-agentが正しく起動しているか HDFSに送っているか HDFS HDFSに記録されているか → ジョブで Copyright © DRECOM Co., Ltd All Rights Reserved. 17
  18. 18. ローカル監視に monit 使ってます プロセスの監視やリソース監視 HTTPリクエストのステータス条件 スクリプト実行の返り値条件 ※  条件判定によるアクション実行  起動スクリプト実行  スクリプト実行  アラートメール ※check program >= v5.3 Copyright © DRECOM Co., Ltd All Rights Reserved. 18
  19. 19. monit でやってる監視内容 ① td-agent 基本プロセス監視 ② td-agent 重複デーモン対策 ③ flowcounterで転送状態監視 Copyright © DRECOM Co., Ltd All Rights Reserved. 19
  20. 20. monit (1) td-agent 基本プロセス監視 Memo 常に起動している必要があり、主に人災対策Check point Agentは check process によるチェック (run/pidファイルのIDとプロセスの存在) Collectorはさらに LISTEN 24224 if failed /etc/init.d/td-agent restart Copyright © DRECOM Co., Ltd All Rights Reserved. 20
  21. 21. monit (2) td-agent 重複デーモン対策 Memo (1) fluentd は UDP/TCP の2プロセスで成る プロセスの過不足は異常とみなす  1プロセスしかない  3プロセス以上ある  run/pid のプロセス番号で動いていない Copyright © DRECOM Co., Ltd All Rights Reserved. 21
  22. 22. monit (2) td-agent 重複デーモン対策 Check point プロセスの表示 ps w -C ruby -C td-agent --no-heading | ¥ ① grep td-agent | ¥ ② grep -v "¥]$“ ③ プロセス数のカウントが2 Memo (2)① プロセス名は td-agent v1.1.8 (fluentd v0.10.25) から ruby でそれ以前は td-agent② unicornなど他のrubyプロセスを除外③ 瞬間的に出現する特権モード [td-agent] を除外 Copyright © DRECOM Co., Ltd All Rights Reserved. 22
  23. 23. monit (2) td-agent 重複デーモン対策 if failed /etc/init.d/td-agent stop ① pkill -KILL -f td-agent ② /etc/init.d/td-agent start Memo (3)① 可能な限り正常終了し② 残りは名前を含むプロセスを強制終了 Copyright © DRECOM Co., Ltd All Rights Reserved. 23
  24. 24. monit (2) td-agent 重複デーモン対策 Memo (4) v1.1.7 までの td-agentの起動スクリプトに はバグがあり、td-agent.conf の内容により  start を実行した数だけデーモンが起動  ファイルのIDが誤った値に変わる v1.1.8 で修復されたが、どのようなログ配送 システムにおいてもデーモンの正常性は確認す べきである・・・でないと・・・ Copyright © DRECOM Co., Ltd All Rights Reserved. 24
  25. 25. @mazgi事件 ※@mazgi = プラグイン製作者 Copyright © DRECOM Co., Ltd All Rights Reserved. 25
  26. 26. @mazgi事件 ~ 開発 ~ @mazgi は、はぁ・・・ 頑張りますflumeアカンな~ fluentdの時代やプラグインいるな @mazgi先生のこんな感じで 出番やで よろしく~ @GedowFather @matsuou1 Copyright © DRECOM Co., Ltd All Rights Reserved. 26
  27. 27. @mazgi事件 ~ 導入 ~ @mazgi できました! pull request 送っちゃうぞ~えぇ感じやん さすが1アプリに @mazgi先生や入れてみるわいいね、やるやん HDFSに@mazgi 先生! きたきた @GedowFather @matsuou1 Copyright © DRECOM Co., Ltd All Rights Reserved. 27
  28. 28. @mazgi事件 ~ 確認 ~ @mazgi は、はぁ・・・ 頑張ります (マジわかんねぇ) あれ?ログ多くね? Agent分より18/16 倍くらい HDFSが多いね に増えてる? 明日までに 水増し直しておいてね! プラグインや @GedowFather @matsuou1 Copyright © DRECOM Co., Ltd All Rights Reserved. 28
  29. 29. @mazgi事件 ~ 次の日 ~WEBサーバは16台か・・・ @GedowFather 全台のプロセス チェックしてみるか ん?4プロセスのサーバが2台ある!? 2台で重複・・・ 18 / 16 倍・・・ とりあえずプロセスを 正常化してみよう! タ、ターンッ!! Copyright © DRECOM Co., Ltd All Rights Reserved. 29
  30. 30. @mazgi事件 ~ 解決 ~ @mazgi そ、それはよかった (マジこいつら・・・) 直ったっぽ! 行数一致した!プラグイン万歳! さすがの @mazgi先生や 公開しようぜ @GedowFather @matsuou1 Copyright © DRECOM Co., Ltd All Rights Reserved. 30
  31. 31. @mazgi事件 濡れ衣 完 Copyright © DRECOM Co., Ltd All Rights Reserved. 31
  32. 32. monit (3) flowcounterで転送状態監視 目的  アプリがログを記録している証明  Fluentdがログを拾って配送している証明 ☓ 部分的な記録ミスや極端な増減は無視 (アプリの事情は把握しきれない) ☓ やりすぎチェックはアラートが増えて 重要なアラートが埋もれる Copyright © DRECOM Co., Ltd All Rights Reserved. 32
  33. 33. monit (3) flowcounterで転送状態監視 <match **.log> Memo (1) type copy <store>  1時間に1回記録する type forward ...snip...  1月1ファイルで十分 </store> <store> type flowcounter count_keys * unit hour aggregate all </store> </match> <match flowcount> type file path /var/log/td-agent/flowcount/flowcount.log time_slice_format %Y%m </match> Copyright © DRECOM Co., Ltd All Rights Reserved. 33
  34. 34. monit (3) flowcounterで転送状態監視flowcountログ2012-08-06T20:44:21+09:00 flowcount{"count":1302372,"bytes":474494367,"count_rate":361.77,"bytes_rate":131803.99}2012-08-06T21:44:21+09:00 flowcount{"count":1582649,"bytes":577411574,"count_rate":439.62,"bytes_rate":160392.1}2012-08-06T22:44:21+09:00 flowcount{"count":1682872,"bytes":614115172,"count_rate":467.46,"bytes_rate":170587.54} 最新2時間分のカウントを利用する Copyright © DRECOM Co., Ltd All Rights Reserved. 34
  35. 35. monit (3) flowcounterで転送状態監視Check point 2時間分のログに 1つでも10以上のカウントがあればOK 0だけじゃなく1~9 も無効値とした  数時間に1度しかログが来ない場合、 ALERTとRECOVERYが繰り返され鬱陶い 2時間以上のメンテナンスや障害だとアラート になるがそれはご愛嬌 Copyright © DRECOM Co., Ltd All Rights Reserved. 35
  36. 36. monit (3) flowcounterで転送状態監視 if failed  スクリプト内で原因をエラー出力 1>&2  返り値を 1 にしてmonit に知らせる  monitがアラートメール(エラー出力記載) 問題点  copy なので forward に失敗しても flowcounterのカウント記録は成功する  Collectorが全部落ちたり、HDFSが落ちたら flowcounterどころではないので問題ない! Copyright © DRECOM Co., Ltd All Rights Reserved. 36
  37. 37. ローカル監視まとめ 1. td-agent の強制起動 2. td-agent プロセスの正常性確認と自動 修正 3. ログ配送の正常性確認• Fluentd+monit だけで結構十分• 足りなすぎず、やりすぎず適度な監視 Copyright © DRECOM Co., Ltd All Rights Reserved. 37
  38. 38. リモート監視 Copyright © DRECOM Co., Ltd All Rights Reserved. 38
  39. 39. リモート監視の目的 目的 アラート/グラフ作成の集約 状態の可視化 特にCollectorのキャパシティ管理  Agentにキャパシティの心配はほぼないが、 Collectorは増設対応が必要 Copyright © DRECOM Co., Ltd All Rights Reserved. 39
  40. 40. アラートは Nagios+nagios-nrpe-server Agent monit nrpe flowcounter.sh Nagios Collector monit nrpe flowcounter.sh  monit で実行しているスクリプトを nagios- nrpe-server を通してNagiosに実行させる  Collectorは必須、Agentも可能ならやる Copyright © DRECOM Co., Ltd All Rights Reserved. 40
  41. 41. グラフは Cacti とか+snmpd Agent snmpd Cacti Collector snmpd  Collectorは必須、Agentは既に入ってるべ  CPUとTrafficは最低限必要  特殊なグラフは作っていない Copyright © DRECOM Co., Ltd All Rights Reserved. 41
  42. 42. Collectorの実際のグラフを紹介 Collectorの仕事 flowcounterより  in_forward  復号化  1行平均350byte  解凍  毎秒500行  flowcounter  webhdfs Copyright © DRECOM Co., Ltd All Rights Reserved. 42
  43. 43. 圧縮で受け取って平文でHDFSへ Agent flush / 10s ←0.7 Mbps 圧縮/暗号化 状態でINPUTCollector 平文でHDFSへ OUTPUT ←1.5 Mbps HDFS うわっ…この圧縮率、低すぎ・・・? Copyright © DRECOM Co., Ltd All Rights Reserved. 43
  44. 44. CPU利用率のキャパシティ in_forward CPU 25%  復号化  解凍 flowcounter webhdfs・350 bytes / row・500 rows / sec  fluentdは 1vCPU 100% が限界  最大であと4倍まで可能  とすると 2000 rows / sec が1台の限界? Copyright © DRECOM Co., Ltd All Rights Reserved. 44
  45. 45. 何が最もCPU利用率に影響するのか波の形状が・・・?CPUとトラフィックの波の形状が一致しない!まさかの・・・?CPU利用率はログ量の影響が低い!?何が影響する?Agentの数?フラッシュ数? Copyright © DRECOM Co., Ltd All Rights Reserved. 45
  46. 46. こんなこといいな できたらいいな Copyright © DRECOM Co., Ltd All Rights Reserved. 46
  47. 47. CollectorでAgentを把握したいこ  様々な環境に散らばった大量のAgentんな  何のAgentがいてどのAgentが正常なのかことい  Collectorの位置でまとめて確認できるのが最いな も的確で  NATだとsource address / port は使えないきたら  Agentからhostname / PrivateAddrを送りいい  hostname の prefix 等でグループ化な  1日以内に1度でも配送したAgentを確認 Copyright © DRECOM Co., Ltd All Rights Reserved. 47
  48. 48. fin監視の設定をしたらぐっすり眠ってね!! Copyright © DRECOM Co., Ltd All Rights Reserved. 48

×