実践 自動復旧

gree_tech
gree_techgree_tech
Copyright © GREE, Inc. All Rights Reserved.Copyright © GREE, Inc. All Rights Reserved.
実践 自動復旧
Hiroaki Kobayashi
2019-02-26
Copyright © GREE, Inc. All Rights Reserved.
小林 裕明
● 所属: グリー株式会社 開発本部 インフラストラクチャ部
● 業務:
● プロダクトリリース・運用支援
● モニタリングシステム運用
自己紹介
Copyright © GREE, Inc. All Rights Reserved.
よいアラートの仕組みを作る6つの方法
● アラートにメールを使うのをやめよう
● 手順書を書こう
● 固定の閾値を決めることだけが方法ではない
● アラートを削除し、チューニングしよう
● メンテナンス期間を使おう
● まずは自動復旧を試そう <- !?
入門 監視 3章より
Copyright © GREE, Inc. All Rights Reserved.
● AWS環境の通知種別と配信基盤
● 自動復旧を導入した話
● 何から手を付けるか
● どうやって実装するか
● 導入 / 効果測定 / イテレーション
● 自動復旧との付き合い方
話すこと
Copyright © GREE, Inc. All Rights Reserved.
● critical
● 即時対応が必要
● 通知先: PagerDuty, Slack, ...
● a.k.a: アラート, ページ
● warning
● 即時対応は不要
● 通知先: Slack, ...
● a.k.a: (アラート), ロギング
● ticket
● 期日までに対応が必要
● 通知先: Slack, JIRA
通知の種別
Copyright © GREE, Inc. All Rights Reserved.
Architecture
アラート配信基盤
Alert
Yusura
- distribute alerts
- summarize alerts
- fetch metadata
Job
Copyright © GREE, Inc. All Rights Reserved.
対応手順書を書く
● 観測して明文化する
● このアラートは何を意味するのか
● サービス(SLO)への影響はあるか
● 何を確認すべきか
● どのような行動を取るべきか
● 法則が見えてくる
● 実はコマンド1発叩いているだけ
● 単純なアラートほど頻出する
● アラートにhookしてコマンド実行できれば良いのでは
何から手を付けるか
Copyright © GREE, Inc. All Rights Reserved.
● シンプルにする
● 単一インスタンスで完結させる
● オーケストレーションはしない
● サービスレベルを悪化させない
● SLOの範囲内で実施
● サービスアウトされたインスタンスに実施
● バッファを持ち欠損しない処理に実施
● Fail Safeにする
● プロセス再起動するなら、プロセスチェックする
● しきい値であれば2重に設定する
どうやって実装するか 方針
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"]}'
Copyright © GREE, Inc. All Rights Reserved.
Architecture
実装 自動復旧
SQS
Yusura
Target
SNS
SSM
1. notify
3. notify
5. resolve
Lambda
Copyright © GREE, Inc. All Rights Reserved.
実行宣言 / 結果報告
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"
]
}
}
Copyright © GREE, Inc. All Rights Reserved.
● 導入は慎重に行う
● 導入初期はアラートも飛ばして人が見守る
● 実績ができ次第アラートは無効にする (Warning化)
● アラートレポートで可視化・イテレートする
● 無効化・ルール見直し・自動復旧・恒久対応
導入 / 効果測定 / イテレーション
Copyright © GREE, Inc. All Rights Reserved.
Architecture
Alert Report
Scheduled Search
Webhook Connection
Webhook
Webhook
Copyright © GREE, Inc. All Rights Reserved.
● 自動復旧は恒久対応ではない
● あくまで一次対応の負担を下げるもの
● 根本原因は解決されていない
● 浮いた時間で恒久対応する
● 恒久対応は時間がかかる
● 担当者の工数確保
● OSSのフィードバック、修正、リリース
● ミドルウェアのバージョンアップ
● アーキテクチャの再設計
● オンコールが疲弊しないための自動復旧
● 必要以上に依存しない
自動復旧との付き合い方
Copyright © GREE, Inc. All Rights Reserved.
● 手順書を書いてアルゴリズムを把握する
● 自動化できるかの指針になる
● アラート削減や恒久対応の際の指針になる
● SNS, Lambda, SSMがあればわりとなんとかなる
● 自動復旧は恒久対応ではないので使いすぎには注意
まとめ
Copyright © GREE, Inc. All Rights Reserved.Copyright © GREE, Inc. All Rights Reserved.
インターネットを通じて、
世界をより良くする。
Copyright © GREE, Inc. All Rights Reserved.
1 of 18

More Related Content

What's hot(20)

KeynoteKeynote
Keynote
gree_tech1.1K views
Datadog monitoring with HashiCorpDatadog monitoring with HashiCorp
Datadog monitoring with HashiCorp
Masatomo Ito428 views
20190124_hccjp_recochoku_40m_pub20190124_hccjp_recochoku_40m_pub
20190124_hccjp_recochoku_40m_pub
Dai Fujikawa2K views
Hccjp PoC Introduction 2Hccjp PoC Introduction 2
Hccjp PoC Introduction 2
YusukeImanaka2.1K views

Similar to 実践 自動復旧(20)

Introduction to New CloudWatch AgentIntroduction to New CloudWatch Agent
Introduction to New CloudWatch Agent
Noritaka Sekiyama1.1K views
AWS運用自動化への第一歩 AWS運用自動化への第一歩 
AWS運用自動化への第一歩 
Trainocate Japan, Ltd.5.6K views
Eight meets AWSEight meets AWS
Eight meets AWS
Tetsuya Mase6.8K views
Aws st 20130617-auto_scalingAws st 20130617-auto_scaling
Aws st 20130617-auto_scaling
Makoto Uehara9K views
[AWSマイスターシリーズ] AWS SDK for Java / .NET[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET
Amazon Web Services Japan10.3K views
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
Taro Hirose6.2K views

More from gree_tech(20)

海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験
gree_tech593 views

実践 自動復旧

  • 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 3. notify 5. resolve 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.