障害の手がかりを残すログ

ログは、サーバーやアプリケーションで起きた出来事を時系列に記録したテキストデータです。

ビルの受付には来訪者の記録簿があります。何時に誰が来て、どの部屋へ向かい、何時に帰ったか。あとで何かあったとき、記録をめくれば、いつ頃から様子がおかしかったかが分かります。

ログは、サーバーやアプリで起きた出来事を時系列で書き残した記録です。エラーが出た時刻、アクセスしてきた相手、どの処理で止まったか。システムが勝手に書き足していくこの記録が、障害の原因を調べるときの最初の手がかりになります。サイトにエラーが出たとき、不正アクセスがなかったか確かめたいとき、処理が遅くなった場所を探したいとき、夜中にcronの処理がちゃんと動いたか知りたいとき、最初に開くのがログです。

調べようとしたら、もう消えていた

ログは毎日どんどん増えていくので、古いものは自動で消す(ローテーション)設定にするのが普通です。ここに落とし穴があります。

サポート窓口とのチャット
サポート窓口

2週間前の夜に決済でエラーが出た、というお問い合わせが来ています。

開発担当

調べます……ログが1週間分しか残っていませんでした。

これでは、記録簿があっても肝心のページが破り捨てられています。

「いつまで残すか」は、何かが起きてから決めても間に合いません。調べる可能性がある期間を考えて、先に決めて設定しておきます。ログそのものをバックアップの対象に含めるかどうかも、運用の方針として決めておきましょう。

書き残す中身も先に決めておく

記録があるだけでは、原因は分かりません。何を書き残すかで、調べやすさが大きく変わります。

情報、警告、エラーといった重要度(レベル)を分けて記録しておくと、大量のログの中から問題の行を探すのが速くなります。一方で、書いてはいけないものもある。個人情報やパスワードがログに出力されると、ログそのものが漏えいの原因になります。何を記録し、何を記録しないかは、作る段階で決めておきます。

ログは記録で、それを見張って異常を知らせるのは監視の役目です。