システムを維持管理している身としては、障害発生時などにいかに短時間で正確にサーバの状態や事象の中身を把握するか、が重要なポイントとなる。
そのためには、「基本を頭に入れておく」「根本をイメージする」という2点を身につけておきたい。
「基本を頭に入れておく」
細かいことはネットで調べながら確認すればよいが、基本的なことだけは頭に入れておくことで、素早い状況把握につながる。
例)
- CPUやメモリの状況を表示するコマンドはtopやvmstat、sarがある
- ユーザのログイン履歴やftp転送の履歴はどこそこのファイルに記録されている
「根本をイメージする」
上記の基本的なこと(コマンドやログ)において、根本的な挙動をイメージすることが正確な状況把握につながる。例) - topはどの情報を見た内容をサマリーとして出力しているか、を知っている - 稼働しているスクリプトのファイルの場所を知っており、いざというとき読み解くことができる - ・基本的なログの場所と読み方を理解している
具体的なフローとしては、こんなイメージ↓
たとえば障害が発生したとする。
① まずはtopやvmstatで最初は全体状況の把握に努める。
② 次は、事象によってプロセスやログを確認する。
→ プロセスの確認としては、psコマンドから、現在何が稼働しており、どの程度のリソースを食っているかを確認する。
→ ログの確認としては、/var/logにあるシステムログやアプリケーションのログを確認していく。ここで、稼働させているアプリケーションのログの場所と内容はあらかじめ理解しておくことが役に立つ。
③ それでも原因が特定できない場合は、パケットキャプチャやカーネルダンプなどの詳細なログが出力されるツールを稼働させることも検討する。ただし負荷が高いため、本番機ではなく、検証機や開発機など別環境で実施することも候補にいれる。
①〜②をいかに短時間で正確に実施するかによって、その後のシステム稼動の影響度が変わってくるため、重要なスキルだと考えている。