ソフトウェアが運用段階に入ると、重要になってくるのが運用監視です。ソフトウェアが動作するサーバーを監視することで、ソフトウェアを正常に動作させ、また問題が起きそうなときにも、あらかじめ対策をとることができます。
私もよくサーバーの運用監視を行うのですが、あらためて考え方を整理するために、運用監視の目的や種類、ツールなどについてまとめてみました。
テクニカルライター。元エンジニア。共著で「現場で使えるRuby on Rails 5」を書きました。プログラミング教室を作るのが目標です。
想定している読者の方
この記事はエンジニアの方、とくに運用監視に携わる方、これから携わろうとしている方を対象としています。私はウェブエンジニアなので、ウェブ上のソフトウェアという文脈で書いていきます。
サーバーの運用監視とは
サーバーの運用監視とは「サーバーが正常に動作しているか、また問題が起きそうでないかを継続的にチェックすること」をいいます。
ここでいうサーバーにはいろんな種類があります。ウェブサーバーやデータベースサーバー、メールサーバーなどがあります。こういったサーバーの運用監視について次にまとめていきます。
なぜサーバーを運用監視するのか
サーバーを運用監視する目的としては、大きく次の3つがあると思っています。
- サーバーが正常に動作しているかをチェックするため
- サーバーに問題が起きそうなときに、あらかじめ対策をとるため
- サーバーに問題が起きたときに、すぐ復旧するため
サーバーを運用していると、いろんな問題が起きます。なんらかの問題でアプリケーションが応答しなくなったり、プロセスが止まったりします。CPUの使用率が高くなったり、メモリが枯渇して動作が遅くなることもあります。
こういった問題の原因もいろいろあって、たとえば直近のリリースに不具合があったり、あるいはDDoSのような攻撃を受けて負荷が高まったことが理由になるかもしれません。
いずれにせよ、サーバーに問題が起きてしまうと、ユーザーの体験を損ねてしまいます。ビジネスの種類によっては大きなトラブルに発展するかもしれません。
問題が起きる前に対策をとり、問題が起きないようにする必要があります。また、問題が起きたときもすぐ復旧したいです。サーバーの運用監視は、こういった目的のために行います。
サーバーが正常に動作しているかどうかを確認することを正常監視、なんらかの異常が起きたときに運用者に通知することを異常監視といったりします。
サーバーの運用監視の種類
ひとことで運用監視といっても、いろんな種類の監視があります。次に、一般的な監視の種類をまとめます。
- 死活監視
- リソース監視
- サービス監視
- プロセス監視
- ログ監視
1. 死活監視
外部から一定時間おきにPINGを送信して、正常なリクエストが返ってくるかどうかを監視します。サーバーが正常に稼働しているかどうかをチェックできます。
2. リソース監視
サーバーのCPUやメモリ、ディスクといったリソースを監視します。これらの値はサーバーの応答速度の低下などの原因になります。しきい値を設定して運用者に通知することで、問題の予防につながります。
3. サービス監視
外部からインターネット経由でポートにリクエストを送り、HTTPやHTTPS、DNS、FTPといった基本的なサービスが正常に動作しているかどうかを監視します。
4. プロセス監視
データベースや他のアプリケーションのプロセスが正常に動作しているかどうかを監視します。
5. ログ監視
サーバーで行った処理やイベントなどを記録したデータを監視します。サーバーに問題が起きたときの調査に役立ちます。
プッシュ型とプル型
サーバーの運用監視の種類を上で示しました。次にこれを行うツールを示していきますが、その前提となるプッシュ型とプル型という概念について整理しておきます。これらはインストールの方法や特徴が異なります。
プッシュ型
プッシュ型のツールは、監視対象となるサーバーにソフトウェアをインストールすることで監視を行います。サーバーを監視して、その結果を中央サーバーに送信します。
プッシュ型はサーバーの詳細な情報を収集できるという特徴があります。ファイアウォールで外部からのアクセスが制限されていても問題なく監視できます。
プル型
外部のサーバーから監視対象となるサーバーにリクエストを行うことで監視します。監視対象となるサーバーが増減したら、設定を変更する必要があります。サーバーに問題が起きたときにすばやく察知できるという特徴があります。
サーバーを運用監視するためのツール
それでは運用監視のためのツールをまとめます。実際に導入するときは、どの監視ができるのか、プッシュ型かプル型か、コストや操作性といった判断基準をもとに選択することになると思います。
ツールの機能やコスト、操作性などは今後変わる可能性があるので、詳細は比較はせず、ここではツールの一覧を示すにとどめます。
プッシュ型
プル型
プル型のツールでも、プッシュ型として監視するための手段があるものがあります。
問題発生時の通知方法
上でも書いたのですが、サーバーの運用監視の目的は予防と原因特定です。問題が起きそうなとき、あるいは実際に起きたときに、メールやチャットツール、電話などで通知することで対応を行うことになります。
ただ、すべての問題を同じ方法で通知してしまうと、運用担当者の負担がふえてしまいます。通知する相手も設定できると、負担の軽減につながります。こういった、問題のレベルに応じた適切な通知をとる手段があるとよさそうです。
このことを実現する方法として、PagerDutyのようなインシデント管理ツールがあります。これは運用監視ツールのアラートを一箇所に集約して、問題のレベルに応じて通知対象や通知方法を柔軟に設定することができます。
問題が発生したときの対応に課題が出てきたら、導入を検討してみるといいかもしれません。
まとめ
サーバーの運用監視は、サーバーを正常に動作させたり、問題の予防や問題が発生したときにすぐ対応するために重要な役割を果たします。運用監視には死活監視やリソース監視など、いくつかの種類があります。
運用監視のツールを選ぶときは、どの監視ができるか、動作方法はプッシュ型かプル型かなどをもとに選ぶことになります。