異常発生時の対応
【連載コラム:Linuxでサーバーを構築してみよう(13)」
今回のテーマは異常発生時の対応についてです。異常発生時の対応こそがサーバー構築以上にスキルの差が出るポイントとも言えます。それでは早速、異常発生時の対応についてみてみましょう。
サーバー運用では、なんらかの異常が発生して当然と考えておくとよいでしょう。
もちろん、異常が発生しないように予防することはできますが、予防困難な原因で異常が発生することもあるため、100%防ぐことはできません。それよりも、異常を早く検知すること、そしてできるだけ早く対処することが肝心となります。
サーバー構築の連載コラムの13回目となる今回は、「異常発生時の対応」について解説していきます。
どのような異常が発生しているか把握
異常が発生した際は、まず最初にどのような異常が発生したのかを把握します。
たとえば、Webサイトの特定のページだけが見えないのかすべてのページが見えていないのか、全員が見えないのか特定の人が見えないのか、サーバーのすべてのサービスが利用できないのか特定のサービスが利用できないのか、などです。異常が発生したときに、「なんとなくおかしい」「どこかおかしい」ではなく、「ここがおかしい」という状態にするのが問題解決の第一歩です。
ログをチェックする
動作確認だけでなく、サーバーのログをチェックします。ログをチェックすれば、原因やヒントが見つかることが往々にしてあります。エラーメッセージだけでなく、不具合が発生した前後の時間に何かおかしなことが起きていないか(異常な数のアクセスがあるなど)についてもチェックするとよいでしょう。
切り分けで原因を特定する
トラブルが起こった原因を特定します。このときの基本は「切り分け」です。「切り分け」は、「どこは正常に動作していてどこは正常でないか」を整理するように行います。
たとえば、インターネットからWebページが見えていないという場合は、内部のネットワークからであればWebページ見えるのかをチェックします。もし内部ネットワークからはWebページが見えるのであれば、サーバーが接続されているインターネット側のルーターやDNSなどに異常があることになります。
トラブルの原因となるもの
チェック対象は、ハードウェア、OS、ネットワーク、アプリケーションなど多岐に渡ります。トラブルの原因は、電源コードが正しく接続されていなかったというものから、ハードウェアやネットワーク機器の故障、ケーブルの不良、ソフトウェアの不具合、設定ミス、外部からのサイバー攻撃などさまざまなものがあります。
原因の特定は、サーバーの構成にもよりますが、「ハードウェア」→「OS」→「ネットワーク」→「アプリケーション」のような順で行うのが一般的とされています。理由は簡単で、ハードウェアに異常があった場合、アプリケーションはチェックもままならないためです。
復旧
原因となっている要因を解決し、復旧します。この作業はすぐに終わることもありますが、思いのほか時間がかかる場合もあります。ハードウェアの障害などで数日間は復旧できないという場合は、仮のWebサーバーを立ち上げて、告知文などをWebページに掲出するなどの措置も考えられます。
急に対応することも難しいので、サーバーの構築段階から最悪の場合(ワーストケース)にはどうするのかということを考えておくとよいでしょう。
メモを取っておこう
以前にも同じようなことを書きましたが、一連の作業について、どこまでわかっているのか?どこがわからないのか?気づいたことは何か?などをメモしておきましょう。
このメモは、トラブル解決に役に立つだけではなく、トラブルが再発したときにも大いに役に立ってくれます。「メモなんか取らなくても覚えているさ」という考えは危険です。人間は忘れる生き物です。一年後に同じトラブルが発生したというときに、メモを取ってあったおかげで復旧時間が大幅に短縮できることもよくあります。
また、トラブルが起きたときに慌ててメモを取るのではなく、日ごろからサーバー管理の「日誌」をつけるとなおよいです。
トラブル対応こそ腕の見せどころ
トラブルの対応は、サーバー構築以上にスキルの差が出るポイントだと言えます。
マニュアル通りにこうやればよいというものがほぼなく、できる限り早く解決することが求められますが、同時に誤魔化さずに解決することも求められます。サイバー攻撃を受けたという場合は特に時間をかけてでも慎重になる必要があります。ネットワークやアプリケーションに原因がある場合、ネットワークの知識も要求されますし、切り分けの段階からさまざまなコマンドを駆使することになります。
トラブルは避けたいものですが、長い間サーバーの管理を行っていると、どうしても発生するものでもあります。難しいところですが、サーバー管理者としては逃げられないところです。逆に、トラブルシューティングの演習は非常によい勉強になりますので、もし参加する機会があれば、積極的に活用してみるのもよいのではないでしょうか。
- 筆者紹介
川原 龍人 氏
1975年生まれ。
著書に「BIND9によるDNSサーバ構築」、「シェルスクリプト ポケットリファレンス Bash編(技術評論社)」など。
予備校講師としても活躍中。Linuxとのつきあいは20年を超える。
バックナンバー
第14回:バックアップ
第13回:異常発生時の対応
第12回:サーバー構築という仕事
第11回:ユーザー教育の重要性
第10回:テスト環境を構築する
第9回:ログローテーションとは
第8回:ログの取得と管理
第7回:アクセス制限
第6回:OpenSSHの活用
第5回:ユーザーアカウントとアクセス制限
第4回:テスト環境を構築する
第1回:Linuxでサーバーを構築しよう