Upgrade to Pro — share decks privately, control downloads, hide ads and more …

実践 自動復旧 / self healing

0341c09395fd77b2a42ee5f8f681c24d?s=47 kobtea
February 26, 2019

実践 自動復旧 / self healing

0341c09395fd77b2a42ee5f8f681c24d?s=128

kobtea

February 26, 2019
Tweet

Transcript

  1. Copyright © GREE, Inc. All Rights Reserved. Copyright © GREE,

    Inc. All Rights Reserved. 実践 自動復旧 Hiroaki Kobayashi 2019-02-26
  2. Copyright © GREE, Inc. All Rights Reserved. 小林 裕明 •

    所属: グリー株式会社 開発本部 インフラストラクチャ部 • 業務: • プロダクトリリース・運用支援 • モニタリングシステム運用 自己紹介
  3. Copyright © GREE, Inc. All Rights Reserved. よいアラートの仕組みを作る6つの方法 • アラートにメールを使うのをやめよう

    • 手順書を書こう • 固定の閾値を決めることだけが方法ではない • アラートを削除し、チューニングしよう • メンテナンス期間を使おう • まずは自動復旧を試そう <- !? 入門 監視 3章より
  4. Copyright © GREE, Inc. All Rights Reserved. • AWS環境の通知種別と配信基盤 •

    自動復旧を導入した話 • 何から手を付けるか • どうやって実装するか • 導入 / 効果測定 / イテレーション • 自動復旧との付き合い方 話すこと
  5. Copyright © GREE, Inc. All Rights Reserved. • critical •

    即時対応が必要 • 通知先: PagerDuty, Slack, ... • a.k.a: アラート, ページ • warning • 即時対応は不要 • 通知先: Slack, ... • a.k.a: (アラート), ロギング • ticket • 期日までに対応が必要 • 通知先: Slack, JIRA 通知の種別
  6. Copyright © GREE, Inc. All Rights Reserved. Architecture アラート配信基盤 Alert

    Yusura - distribute alerts - summarize alerts - fetch metadata Job
  7. Copyright © GREE, Inc. All Rights Reserved. 対応手順書を書く • 観測して明文化する

    • このアラートは何を意味するのか • サービス(SLO)への影響はあるか • 何を確認すべきか • どのような行動を取るべきか • 法則が見えてくる • 実はコマンド1発叩いているだけ • 単純なアラートほど頻出する • アラートにhookしてコマンド実行できれば良いのでは 何から手を付けるか
  8. Copyright © GREE, Inc. All Rights Reserved. • シンプルにする •

    単一インスタンスで完結させる • オーケストレーションはしない • サービスレベルを悪化させない • SLOの範囲内で実施 • サービスアウトされたインスタンスに実施 • バッファを持ち欠損しない処理に実施 • Fail Safeにする • プロセス再起動するなら、プロセスチェックする • しきい値であれば2重に設定する どうやって実装するか 方針
  9. Copyright © GREE, Inc. All Rights Reserved. リソース管理のためのサービス • コマンド実行に関係する機能

    • Run Command: タスク・コマンド実行 • Automation: タスクのステップ実行 • SSM Documents: タスク・コマンド群の定義 • AWS APIでコマンド実行できる • SNS -> Lambda -> SSM RunCommand • CloudWatch Event -> SSM RunCommand AWS System Manager (SSM) $ aws ssm send-command \ --document-name "AWS-RunShellScript" \ --instance-ids i-123 \ --parameters '{"commands":["hostname"]}'
  10. Copyright © GREE, Inc. All Rights Reserved. Architecture 実装 自動復旧

    SQS Yusura Target SNS SSM 1. notify 2. receive 3. notify 3. notify 4. trigger 5. resolve 6,8. notify 7. execute Lambda
  11. Copyright © GREE, Inc. All Rights Reserved. 実行宣言 / 結果報告

  12. Copyright © GREE, Inc. All Rights Reserved. 設定イメージ { "SOME_ROLE:SOME_ALERT":

    { "commands": [ "PROC_CHECK --ignore-check FOO_PROCESS", "service FOO_PROCESS restart", "service FOO_PROCESS status" ] } }
  13. Copyright © GREE, Inc. All Rights Reserved. • 導入は慎重に行う •

    導入初期はアラートも飛ばして人が見守る • 実績ができ次第アラートは無効にする (Warning化) • アラートレポートで可視化・イテレートする • 無効化・ルール見直し・自動復旧・恒久対応 導入 / 効果測定 / イテレーション
  14. Copyright © GREE, Inc. All Rights Reserved. Architecture Alert Report

    Scheduled Search Webhook Connection Webhook Webhook
  15. Copyright © GREE, Inc. All Rights Reserved. • 自動復旧は恒久対応ではない •

    あくまで一次対応の負担を下げるもの • 根本原因は解決されていない • 浮いた時間で恒久対応する • 恒久対応は時間がかかる • 担当者の工数確保 • OSSのフィードバック、修正、リリース • ミドルウェアのバージョンアップ • アーキテクチャの再設計 • オンコールが疲弊しないための自動復旧 • 必要以上に依存しない 自動復旧との付き合い方
  16. Copyright © GREE, Inc. All Rights Reserved. • 手順書を書いてアルゴリズムを把握する •

    自動化できるかの指針になる • アラート削減や恒久対応の際の指針になる • SNS, Lambda, SSMがあればわりとなんとかなる • 自動復旧は恒久対応ではないので使いすぎには注意 まとめ
  17. Copyright © GREE, Inc. All Rights Reserved. Copyright © GREE,

    Inc. All Rights Reserved. インターネットを通じて、 世界をより良くする。
  18. Copyright © GREE, Inc. All Rights Reserved.