こんにちは。スマートキャンプエンジニアの今川(@ug23_)です。23という数字は私の大好きな数字です。
本記事はスマートキャンプ Advent Calendar 2019 - Qiitaの23日目の記事です。
監視当番: 年末年始の恒例行事
開発に加えて運用・保守を担うプロダクト開発チームにとって、年末年始といえばアレを決めないといけない時期です。 クリスマスパーティの場所?忘年会の日程?大掃除の分担?
…そうですね!監視当番です!
帰省する人、海外で過ごす人、ひとりで過ごす人さまざまでしょうが、監視当番をきめてその人は一次対応できるようにしておく、というのを他社でもやっていると思います。
この記事では監視担当になったときに大切な心構えをまとめてみました。よければ参考にしてください。これも必要だよ!というのがあればぜひTwitterやブックマークのコメントで書いていただければ私の参考にさせていただきます。
障害対応自体は以下の記事がとても素晴らしいなと思いました。
全体感としては、そちらを見ていただくことにしてこの記事でははじめて担当する人や経験の浅い人向けに書いています。
一次対応の心構え
休み前に: 本番環境を確認する方法をおさらいしておこう
休みに入る前に、会社以外の場所から本番環境にアクセスするときの手順を確認しておきましょう。
いろんなインフラ構成があるかと思いますが、 社外のアクセス時にVPNが必要とか、クラウドコンソールにちゃんとログインできるか?とか 普段と違うPCでログインするなら、秘密鍵やssh-configなど必要なリソースは揃っているかとか 監視用ダッシュボードがちゃんと見れるか?とか 予め確認しておくほうがよい項目があるかと思います。
リハーサルのように、休みに入る前に社外からのアクセス方法を確認したり、設定しておいたりしましょう。
AWSだとClient VPNという機能でかんたんにVPNを利用できます。
ログインできたとしても、どこをみたらいいかわからない!だと困るので、先輩社員にログやメトリクスの見方についてレクチャーしてもらう場を作りましょう。
休み前に: 通知・アラートにすぐに気付けるようにしよう
監視当番とはいえダッシュボードに張り付いているわけにもいかないので、監視アラートが頼りになるわけですが、アラートが検知されたときにあなたがすぐ気付けるようにしておくことが必要です。
- メールでくるならそのメールがスマホなどでプッシュ通知されてくること
- Slackの通知チャンネルに飛ぶならそのチャンネルをスマホアプリで
Slackの通知の設定方法はこちら:
え、それだと通知がうるさいって? 通常時にうるさければそれは通知しすぎなので、本当にやばいラインで通知されるようにアラートの閾値や条件を調節しましょう。 通知がオオカミ少年化してるとほんとにやばいときに気付くのが遅れるので過去の経験などからうまいところを見つけましょう。 (という提案をあげられるといいですね)
当日になったら: まずは普段どおり過ごす
特に前日なにもなく、平穏な日々が続いているなら担当のあなたは普段どおり過ごしましょう。 普段どおりコードを書いたり読書したりゲームしたりすればよいです。たいてい一人だけが担当になるときついので二人組で監視することになるかと思いますが、1,2時間見れなくなるタイミングができたらバディに連絡を取るなど、ノーガードの状態を作らないようにしましょう。
要はすぐに見れるような状態にあれば常に気を張っていなければならない必要はないです。 スマホの通知や電池残量には気をつけておきましょう。
年末年始だと地元に帰る方も多いですが、うっかり地元の友達と飲みにいく約束をしないように…。
なにか起きたら: とにかく報告しよう!声をあげよう
なにかアラートがあがり、それに気づいたらアラートに気づいたことを報告しましょう! もし作業をするなら作業をすることもしっかり報告しましょう。 もしかして誰も見ていないのではないか?というのが周りで見ていると一番怖いです。 逆に今何をやっているんだろう?というのも不安になります。 コマンド打つのも共有しつつやりましょう。 それが確実に対処法として正しいことがわかっている場合以外は他のメンバーからのOKをもらってから実行しましょう。
チャットで発言しておけばタイムスタンプが残ります。タイムスタンプを残しておくと障害報告書をかくときに楽です。それを書くのがあなたの仕事でなくても、書く人にとってはありがたいものです。作業前に発言、作業後に発言。記録を残す意味でも、情報共有をするべきだと心に留めておいてください。 障害対応は何が書かれるんだろう?というかたにはこの記事がよさそうです。
作業中: わからなくてもわからないことを報告するのが仕事です
前項にも書きましたが、なにをするにも報告するのが大事です。 一方で何をしたらいいんだろう どこから見たら良いんだろうと迷って手が止まるタイミングもあるかもしれません。
その時はわからないです!ということをしっかりアピールしましょう。 それが先輩にとって既知のものであれば助け舟を出してくれるかもしれないし、先輩にとってもわからなければ一緒に悩めばよいのです。
離れている場所にいてかつスピード感が求められる状況なので 自分がいまなにをしているのか を正直に出しましょう。 なにをしたらいいかわからないことも情報のひとつです。
作業中: 二次災害に注意
もしその場でなにかのオペレーションをやることになったら、しつこいぐらいに確認をするようにしましょう。
例えばDBに直接クエリを実行することになったり、サーバを再起動しないといけなくなったり様々かと思います。
そんななかで、緊張してテンパっていたりすると、1レコードだけを消すようにクエリを打つつもりで全レコード消したり、再起動しないといけないサーバとは別の健康なサーバを再起動してしまったり…、うっかりですまないミスを誘発することになります。
こうした暫定対応中のうっかりミスを二次災害と呼ぶことが多いと思います。二次災害のほうがひどかったり。 実際に打つコマンドをSlackで見てもらったり、ZoomとかWherebyとかでバディを付けて確認しながら作業をするのが望ましいです。 複数人の目でチェックして二次災害を起こさないようにしましょう。
監視後: 何もなかったらそれはそれでHappy
なにもなかったら、まずは無事を喜びましょう。
その上で 今日一日なにもなかったなぁ あれだけ気を張っていたのに と思うかもしれませんが、あなたがやったことには意味があります。 あなたは取り越し苦労をしたのではなく、あなたが警戒態勢をとっていてくれたおかげで他のみんなが休みを満喫できたのです。 その一日に備えて学んだり準備したりしたことはまた役に立つので無駄にはなっていないはずです!
最後に
障害の一次対応はエンジニア知識の抜き打ち試験のような緊張感がありますが、同時に成長の場でもあります。 落ち着きつつ、着実にとるべき方法を見つけたりコミュニケーションをとったりして乗り越えましょう。
みなさまのシステムにも年末年始の平和がありますように…。