Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

機械学習を用いたMackerelの異常検知機能について

現在開発中の異常検知機能はこれまでの監視ルールと何が異なるのか、何ができて何はできないのか、はてな社内の実例を元にMackerel Meetup #12でお話した資料です。

https://mackerelio.connpass.com/event/94553/

  • Identifiez-vous pour voir les commentaires

機械学習を用いたMackerelの異常検知機能について

  1. 1. 機械学習を用いた Mackerelの異常検知機能について Mackerel Meetup #12 id:syou6162
  2. 2. 自己紹介 •  id:syou6162(本名: 吉田康久) •  専門は自然言語処理や機械学習 •  2年前にはてなに転職 – アプリケーションエンジニア – はてなブックマーク/Mackerel 2
  3. 3. はじめに •  現在開発中の機能につき、リリース時には詳 細が変更されている可能性があります 3
  4. 4. アジェンダ •  サーバー監視の困り事 •  異常検知によるアラートの実例 •  異常検知とは? •  異常検知のアルゴリズム 4
  5. 5. 5 サービス/ロール毎に監視ルール設定 静的な閾値によるアラートの発報 サービス/ロールでホストを 分かりやすくグルーピング はてな ブックマーク DB App Proxy DB_01 DB_02 App_01 App_02 Proxy_01 Proxy_02 はてなブログ DB App Proxy DB_01 DB_02 App_01 App_02 Proxy_01 Proxy_02 例: CPUの使用率が90% 越えたらCriHcalアラート
  6. 6. サーバー監視の困り事 •  サーバー監視初心者の場合 •  サーバー監視玄人の場合 6
  7. 7. サーバー監視初心者の場合 •  例: アプリケーションエンジニア •  クラウドを使うようになって、サーバーも自分 で立てるようになった – しかし、サーバー監視はよく分からない •  本質的にはアプリケーションコードの開発に 集中したい 7
  8. 8. サーバー監視玄人の場合 •  インフラ周りの知識が豊富、何を監視すれば いいか経験的に知っている •  見なければいけないサービスも多く、多忙な ことも •  監視ルールを一度設定すれば終わり、では なく定期的にメンテナンスする必要がある 8
  9. 9. 複数条件を考慮した障害の早期発見 •  人間が複数のAND条件を網羅するのは困難 –  例: 「cpu使用率はそれほど高くない」かつ「memory使 用量は多い」 9 cpu memory 休日や夜間等比較的 負荷の低いケース 平日を中心とした比較的 負荷の高いケース 高負荷で障害に なりそうなケース cpu使用率の割にmemoryを 異常に食っているケース (例: メモリリークが起きてる?)
  10. 10. 機械学習による監視のサポート •  以下を実現したい – インフラの知識があまりなくても、低コストで監視 ルールが作れる – 人間が列挙するには困難な複数の条件を考慮し た監視ができる •  機械学習による異常検知機能でユーザーを サポートしたい! 10
  11. 11. 作りました🎉
  12. 12. アジェンダ •  サーバー監視の困り事 •  異常検知によるアラートの実例 •  異常検知とは? •  異常検知のアルゴリズム 12
  13. 13. ロールを選択してもらうだけ! 個別のメトリックを一つずつ 設定していく必要はありません 13
  14. 14. 実例1(成功事例) 14 full GCが走り 負荷が一時的に上昇 cpu/memoryなど個別の ルールは指定していない。 ロールの指定のみ
  15. 15. 実例2(成功事例) 明け方からswapが多発 loadavgの上昇時に異常検知アラートが発報。 問題のプロセスをkillし、障害を未然に防げた! 15
  16. 16. 社内の喜びの声 16
  17. 17. 社内の喜びの声 その後、原因となっていたメトリックに監視 ルールを設定(一次対応策がメモ欄に書ける)。 人間のドメイン知識と機械学習の組み合わせ でサーバー監視をサポート 17
  18. 18. アジェンダ •  サーバー監視の困り事 •  異常検知によるアラートの実例 •  異常検知とは? •  異常検知のアルゴリズム 18
  19. 19. 代表的な問題設定: 外れ値検知 19 仲間から外れている 図は hTps://qiita.com/kenmatsu4/items/68e48a00aaebf338bedc より生成 時刻 メモリ 使用量
  20. 20. アジェンダ •  サーバー監視の困り事 •  異常検知によるアラートの実例 •  異常検知とは? •  異常検知のアルゴリズム 20
  21. 21. ガウス分布に基づく方法(教師なし学習) 21 異常と判定 正常と判定 •  起きる確率の高い事象 は正常と見なし、低い事 象は異常と見なす •  CPU使用率を例に挙げ ていますが、実際にはシ ステムメトリックの約20 個を総合的に見て判定 します CPU使用率 確 率
  22. 22. 負荷の波がある場合… 昼間/深夜で負荷傾向が異なる場合、 一つのガウス分布ではサーバー負荷 の状態を表現しきれず、誤報が多く なってしまう 高負荷の場合、低負荷の場合… といくつかガウス分布を用意する とよさそう🤔 22
  23. 23. 混合ガウス分布に基づく異常検知 •  複数のガウス分布の足し合わせで対応 23 cpu memory 休日や夜間等比較的 負荷の低いケース 平日を中心とした比較的 負荷の高いケース 異常と判定されるケース1 異常と判定されるケース2
  24. 24. 負荷の波があっても誤検知しない 混合ガウス分布に基づいているので 負荷の傾向がいくつかあっても誤検知しない 24
  25. 25. 異常検知によるサーバー監視 •  サーバー監視初心者/玄人どちらのユーザー もサポートできる機能 •  はてな社内での高負荷の早期発見の事例 •  混合ガウス分布を用いたシンプルな方法 •  懇親会で気軽に質問してください! 25

×