会員登録すると
学習することができます。
会員登録する(無料)
学習することができます。
登録済みの方はこちら
ログイン
学ぶ目的
見張るものを4つに分ける
監視とは、壊れたときに、利用者より先に気づくための仕組みです。何を見張るかを4つに分けて考えます。
| 種類 | 何を見るか | 気づけること |
|---|---|---|
| 外形監視 | 外から主要なページを開き、正常に返ってくるか | 利用者から見て使えない状態 |
| 死活監視 | サーバやプロセスが動いているか | 止まった、再起動を繰り返している |
| エラー監視 | プログラムの中で起きたエラーの件数と中身 | 特定の画面・操作だけが失敗している |
| 定期処理の監視 | 決まった時刻に動く処理が、動いて成功したか | 夜中の集計や更新が止まっている |
外形監視は「利用者に見えているか」、エラー監視は「中で何が起きているか」を教えてくれます。どれか1つでは足りません。サーバが動いていても、特定の画面だけ500エラーを返していることはあるからです。
naminori では、エラーを GlitchTip(エラーを集めて知らせるツール)に集めています。OSを更新したときは、作業の最後に、主要なページ(トップ・講座・求人・記事・ログイン)が正常に返ることを確かめてから公開に戻しました。
いちばん気づきにくいのは「動かなかった」こと
エラーが起きれば、エラー監視が気づきます。気づけないのは、そもそも処理が動かなかったときです。動かなければ、エラーも出ません。
naminori の実例を、設計の目で見直す
講座34の第1回で、naminori のサイトマップ(検索エンジンにページの一覧を伝えるファイル)を作る定期処理が、約6週間止まっていた件を見ました。ここでは「なぜ気づけない作りだったのか」を見ます。
- 定期処理を動かす環境で、必要な道具と設定が読み込まれず、起動すらしていなかった。起動しない処理は、エラーを出さない
- 出力を捨てる設定にしていたため、失敗しても何も言わなかった
- 同じ理由で、ほかの定期処理もまとめて止まっていた。新しく公開したレクチャーページ49本が、検索エンジンに伝わっていなかった
つまり、「失敗したら知らせる」も「動かなかったら気づく」も、最初から作られていなかったのです。
直したこと:失敗を知らせる、成果物を見張る
直したのは、壊れた原因だけではありません。気づけなかった仕組みのほうです。
- 定期処理は共通の入口から動かし、結果を記録し、失敗したら通知する
- 通知は、アプリが起動できない種類の失敗でも届くよう、アプリを経由せずに送る
- 毎朝、できあがっているはずのもの(サイトマップと、定期処理の記録)が新しいかを確かめ、2日以上古ければ通知する
3つ目が大事です。個々の処理の失敗通知そのものが壊れていても、「成果物が古い」という症状の側から気づけます。実際、その後に別の定期処理が失敗したときは、通知がエラー監視に届きました。
最初に決めること
定期処理を1本足すときは、処理と一緒に次を決めます。
- 失敗したら、どこに知らせるか
- 動かなかったことに、何で気づくか(成果物の新しさ、最後に成功した時刻)
- 何日止まっていたら困るか(それが通知のしきい値になる)
このレクチャーで学ぶこと
- 外形・死活・エラー・定期処理の4つの監視
- 「動かなかった」ことは、エラーでは気づけない
- 定期処理が6週間止まっていた実例
- 成果物の新しさを見張る
質問
まだ質問は投稿されていません。
質問投稿
ログイン後に質問の投稿ができます。
#1
未完了
保守運用の第一前提 ― 長期的に困らない設計を最初からする
#2
未完了
機能追加のデータ設計 ― 既存のデータと両立させて足す
#3
未完了
変えるときの落とし穴 ― 状態の追加・一意制約・重い変更・消す前の確認
#4
未完了
監視の設計 ― 「壊れた」と「動かなかった」に気づく
#5
未完了
オンコールのツール設定 ― 何を、誰に、どの重さで知らせるか
#6
未完了
ログと監査を最初から設計する ― いつ・誰が・何をを追えるように
#7
未完了
設定と環境の管理 ― サーバで直接変えたものは、作り直すと消える
#8
未完了