SREチームのanecho108です。
大型連休前にこの記事を書きたかったのですがズレ込んでしまいました。
皆さん、オンコール対応していますか?
世の中の多くのSREの方はオンコール対応を実施しているのではないかと思います。
弊社ではオンコール対応のツールとしてPagerDutyを導入しました。 ほぼ1日で導入した記憶がありますのでその時のお話をさせていただければと思います。
PagerDutyとは?
一言でお伝えするとインシデント管理プラットフォームのツールです。
インシデント発生した場合のオンコール対応やエスカレーションルール、 さらにはポストモーテム管理などSRE業務の一つでもあるインシデント管理を一元管理できるツールです。
SREの方なら一度は耳にしたことがあると思います。
www.pagerduty.co.jp
vs AWS SSM Incident Manager
AWSのサービスにもインシデント管理としてIncident Managerがあります。
SSMは複数の機能がまとまったサービスで、その中の1つの機能として存在しています。
普段、AWSを利用している人もIncident Managerを触る機会は滅多になかったのでないでしょうか。
docs.aws.amazon.com
実は、僕は前職でインシデント管理としてこのAWS SSM Incident Managerを利用していました。
下記のようにCloudWatch Alarmから簡単にIncident Managerを呼び出す設定を加えることが可能です。
インシデント発生時に登録したユーザへ電話コールすることも可能ですし、エスカレーションルールも設定できます。 また、Lambdaを用いてIncident ManagerのAPIコールで通知の重複排除などカスタマイズすることもできます。
ですが非エンジニアの方がオンコール対応の一次受けをする場合のAWS IAM管理が必要になりますし、そのような手間をかけずに導入したい思いがありました。
そこで、スマホアプリでささっとオンコール対応の一次的な操作をしたかったためPagerDutyを選択しました。
PagerDuty導入の背景
弊社サービスは24365稼働していますので、連休の期間中についてもサービスを安定して提供することは必須要件です。
PagerDuty導入前は、重要な通知を含め、アラートをSlackで受けていました。 もちろんオオカミ少年化することがないようアラートの見直しは適宜行ってはいますが、 オンコール対応時にはその通知を見逃す恐れもありました。
また、長期連休期間中はSREメンバーだけでオンコール対応をカバーすることが難しく、他部署に協力をお願いする必要がありました。
こういった背景からエスカレーションの対応が容易であり、緊急時の通知が確実なPagerDutyを導入することとしました。
PagerDuty無料トライアル
下記のリンクからPagerDutyでトライアルを開始することができます。
僕が使ったときの無料トライアルは14日間でした。
下記で数クリックするだけですぐにPagerDutyの管理画面にログインすることができます。
www.pagerduty.co.jp
PagerDutyの初回構成図
PagerDutyはAWS, Datadogなど様々なプラットフォームと連携ができますが、まずは下記の図のようにシンプルな構成にしました。
PagerDutyでは、PagerDutyのドメインでメールアドレスを払い出してくれるので、そちらにメールを送信すると担当者へコールされる仕組みにしてみました。
PagerDutyの導入ガイドがある
ここでは実際にどういう設定をしたか紹介はしません。
というのもQiitaにPagerDutyさんが設定をまとめてくださっていて
それを見ればほとんどが設定することができます。本当に有り難かったです。
今回爆速で導入できたのもこちらの記事のおかげです。
qiita.com
オンコール対応者を複数人にしたい
ちなみにオンコール対応はローテーションで1人の場合もあると思いますが、保険的な意味合いで2人体制にしたいなあと考えていました。
そのような場合には下記のようにPagerDutyのEscalation Policies & Schedulesで
メインとサブのそれぞれ2つを設けることで常時2人体制を設定することができました。
PagerDutyのスマホアプリ
インシデント発生時にアラートを止めないと次のエスカレーションフローに移るようにしています。 最終的には誰も気付かない場合、オンコール対応者の全員へ通知されるようにしています。
オンコール対応者は常にパソコンを持ち歩いているわけではありません。 各自PagerDutyのスマホアプリをインストールしてもらうことで容易に一次受けできるようにしました。
インシデントエスカレーション時に全員が持つべきマインド
実際にオンコール対応時のインシデント発生は、なかなか精神的に来るものがあります。 これはエスカレーションすべきなのか?と迷うときは去年SRE NEXTの登壇にもあったように1つ上のインシデントレベルで報告すべきと考えています。
そしてそれが大きなインシデントではなかったとしても
"え、そんなことで呼び出したのか?"というよりは
"大事にならなくて良かった!"という
SREチーム全体のHRTな原則でオンコール対応できると良いと思います。
さいごに
元も子もないですが、PagerDutyは使われないのが一番です。