基礎知識
サーバー監視とは? クラウドとオンプレミスでの違いを解説
ITシステムは、一度構築したらそれでよいというものではなく、継続してメンテナンスし続けていく必要があります。運用を続けていく中でシステムにはさまざまな問題や障害が発生します。システムを安定して稼動させ続けるためには、障害発生時に速やかな対処を行うことはもちろん、問題を早期に発見して障害を未然に防ぐことも重要です。
こうした運用を実現するには、サーバーの状態を常に正しく把握できていなければなりません。それを実現するのが「サーバー監視」です。本記事では、サーバー監視の概要とオンプレミスとクラウドにおける監視の違いについて、解説します。
サーバー監視とは
ITシステムを構成するサーバーに障害が発生すると、業務に支障をきたす恐れがあります。そこで、サーバーの稼働状況を常に監視・記録しておき、異常な状態を検知したら、速やかに運用担当者へ通知する仕組みがあると便利です。これを実現するのがサーバー監視システムです。
監視する対象は、サーバーを構成している電源・メモリ・ストレージといったハードウェアをはじめ、サーバーの上で動作しているOS・ミドルウェア・アプリケーションなど多岐に渡ります。それぞれの監視対象における具体的な監視項目としては、ハードウェアの死活(例:電源の状態)、ネットワークの疎通(例:pingへの応答)、サーバーのリソース使用量(例:CPU・メモリ・ディスクなどの使用量)、ミドルウェアのプロセスの起動状態、ポートの解放状態、アプリケーションやミドルウェアのログ(例:エラーメッセージの有無など)があります。
多くのサーバー監視システムは、運用担当者がサーバーの状態を把握しやすいよう、消費リソース量や状態の変化をグラフとして可視化します。また、リソースが逼迫して設定した閾値をオーバーしたり、プロセスが停止するなどの障害が発生した際には、運用担当者に通知(アラート)を送信する機能も備えているのが一般的です。アラートの通知手段としては、メールやSlackなどのチャットツールがよく利用されています。
サーバーの障害というのは、イレギュラーかつ緊急を要する事態です。しかし、適切な手段でアラートを送れないと、せっかく監視システムが異常を検出しているのに誰も気がつかず、結果として対応が遅れてしまうということがあります。そこで、夜間など担当者がチャットやメールを見られない時間帯でも確実に連絡をするため、携帯電話に電話をかけられる監視システムも存在します。また、「緊急事態であることを誰かに気づいてもらう」という観点では、オフィス内にランプを点灯させたり、警告音を再生するという物理的な通知方法も非常に有効です。こうした光や音の通知機能に特化した製品も市販されています。
サーバーの状態を記録する目的とは
前述の通り、多くのサーバー監視システムは、サーバーの稼働状況やリソース使用量の時間による変化をグラフとして記録しています。これは、主に「障害の予防」と「障害時の原因特定」という2つの面で有効です。
安定しているシステムでは、負荷のかかりやすい曜日や時間帯やピーク時の負荷などが大体決まっています。そのため、平常時とピーク時のCPU・メモリ・ディスク・ネットワークのトラフィック量の負荷、それぞれの時間帯による変化の傾向など、日頃から把握しておけばイレギュラーな高負荷が発生した際にも異常に気付きやすくなります。また、消費リソース量の長期的な変化に注目することで、将来起こりえる障害を事前に予測し、対応することもできます。例えば、半年間でCPUの使用率が平均20%増加しているので、リソースが逼迫する前にサーバーを増強するといった具合です。
基幹システムのような、業務上クリティカルなシステムでは、「可用性」を高めるため、単一障害点(SPoF)を無くす冗長構成を取ることも多いでしょう。可用性の高いシステムは、仮にシステムの一部分がダウンしても、システム全体には影響が出ない構成になっています。これはメリットである反面、部分的な障害が発生しても目に見える形で顕在化しないため、障害に気付きにくいという側面もあります。例えば、RAID 1(ミラーリング)のストレージを構成するディスクの片方が壊れているにも関わらず、気付かずに運用されてしまっているシステムなどが良い例です。こうした潜在的な障害を放置してしまうと、将来的により大きな障害を引き起こす可能性が非常に高くなります。本格的なシステムダウンを防ぐためにも、日頃からサーバーを監視し、顕在化していない障害も「予兆」として検知して、障害の「未然防止」に勤めることが大切です。
とは言うものの、どれだけ万全の備えをしていても、すべての障害を未然に防ぐことは困難です。そして、いざ障害が発生した時は、一秒でも早くシステムを正常に復帰させることが、運用担当者には求められています。
しかし、サーバーの障害というイレギュラーな事態では、原因箇所の特定はもとより、そもそも何が起きているのかすら正確に把握できないこともあります。そんな手がかりのない状態で、やみくもに復旧作業を行うのは非効率です。その点、監視システムがあれば、サーバーのリソースの空き状況やエラーログの有無、ネットワークトラフィックの変化などの障害発生前後の状況を数値やグラフで確認できるため、障害の原因を特定しやすくなります。監視システムは、障害からの速やかな復旧を行う上で、必要不可欠と言えるでしょう。
サーバー監視の主な方法
24時間365日動き続けるシステムを常に監視するというのは、非常に負担が大きいタスクです。そのため、「誰がどのようにサーバーを監視するのか」というのは大きな課題となります。企業がサーバー監視を行う場合は、大きく分けて「自社内で行う」か「外部に委託するの」の二択となるでしょう。
自社内で対応する場合は、当然ですがサーバー監視を担当する人材の確保と監視システムを自社内に構築する必要があります。この場合のメリットは、監視に使うツールや運用ルールを自社の都合にあわせて決められることでしょう。サーバー監視の目的は、システムを安定して稼動させることですから、サーバーの状態を把握でき、緊急時に即応が可能であれば、どのようなツールをどのようなスタイルで運用するかは自由に決めて構いません。とはいえ、選択肢はそれほど多くはなく、一般的にはサーバー監視ツールをインストールして利用することになるでしょう。有名なサーバー監視ツールには、Zabbix、Nagios、Prometheusなどがあります。
対して、デメリットは自社内で人材を確保しなければならないことです。サーバー監視には、プログラミングなどとはまた異なるサーバーやインフラの専門的な知識が必要になります。もしも、経験のない社内情報システム担当者が兼任するようなことになった場合、監視ツールを導入したものの監視ツールから障害の情報を読み取れず、十分な対応ができないという可能性も考えられます。前述の例のように、システムは冗長化されていて運用も継続できているが、潜在的な障害を抱えたサーバーを放置したままになっているという企業も実際に存在します。
サーバー監視は、サービスの運用に必要不可欠ではあるもののこうした背景から24時間365日体制でサーバー監視を行う専門家を自社内で確保するのは容易ではありません。そこで、サーバー監視を専門の事業者にアウトソーシングしている企業も多く存在します。監視には専門的な知識とノウハウが必要ですが、アウトソーシングであれば、自社にサーバー監視のノウハウが培われていなくても、システムを安定して運用することが可能です。また、事業者によっては監視だけではなく、障害発生時の一次対応が可能な場合もあります。
クラウドでサーバー監視はどう変わる?
ここまでは、オンプレミスを前提に解説しましたが、クラウドにおいてもサーバー監視の目的や必要性、実施内容といった基本的な考え方は変わりません。
オンプレミスとクラウドで大きな違いがあるとすれば、クラウドではハードウェアの運用はクラウド事業者に一任できる点です。つまり、ユーザーはハードウェアについては、一切監視する必要がなく、OSから上のレイヤー(ソフトウェア)の監視と障害対応に注力すればよいということです。これによって、運用コストの大きな削減が可能となるため、積極的にクラウドに移行すべき理由の1つと言えるでしょう。
オンプレミスでは、Zabbixなどの監視ツールを自前で用意する必要がありました。クラウドでも、このようなツールは有用ですが、それに加えてクラウド事業者がプラットフォームにあわせて提供しているツールを併用することをお勧めします。なぜ、複数のツールを併用する必要があるかと言うと、クラウドの仕様上、クラウド事業者が提供する監視ツールでしか監視できない項目が少なからず存在するからです。また、クラウドは巨大なコンピューティングリソースを共有する都合上、一般的な監視ツールで個別のサーバーのCPU利用率などを監視しても、必ずしもリソースの使用状況がサービスのパフォーマンスと連動するとは限らないためです。こうしたクラウド事業者が提供するツールには、AWSのCloudWatchやGCPのオペレーション(旧称: Stackdriver)などがあります。
FJcloud-V(旧ニフクラ)では、ブラウザーからパフォーマンスの監視やリソースの管理が可能な「コントロールパネル」を用意しています。それに加えて、稼働状況・負荷状況の監視を自動で行い、異常が発生した場合には、メールで通知する「基本監視」も提供しています。さらにミッションクリティカルなシステム向けとしては、お客様のニーズに応じたレベルでサーバーの稼働状況を24時間365日監視し、異常発生時にはメールや電話で通知を行い、必要に応じてFJcloud-V(旧ニフクラ)に精通したエンジニアが一次対応を行う「有人監視」があります。
また、「スクリプト」という機能では、クラウド上にNode.jsやRubyでスクリプトを作成し、コントロールパネルやAPIから実行が可能です。監視機能とスクリプトを併用することで、「アクセス数の上昇を検知したら自動的にサーバーをスケールアップして高負荷に備える」といった機能を組み立てることができます。
クラウドの監視はクラウド特有の事情を考慮しなければならないため、オンプレミスと比較すると煩雑に感じるかもしれません。しかし、監視ツールとスクリプトのような機能を組み合わせることで、オンプレミスでは不可能だった柔軟なサーバーの管理が可能となるのが、クラウドならではのメリットと言えるでしょう。
まとめ
サービスを安定して稼動させ続けるためには、サーバーの状態を正しく把握する監視が必要不可欠です。とはいえ、監視は専門知識と24時間365日体制での対応が要求されるため、運用のコストが非常に大きくなるタスクでもあります。
こうした運用の負荷を少しでも下げるためには、ハードウェアの監視と障害対応から解放されるクラウド化が非常に有効です。特に有人での監視や障害時の一次対応を請け負ってくれるクラウド事業者ならば、より安心して運用を任せられると言えるでしょう。