障害発生を考えていますか?

トラブル事例「第1回:Javaで重要なことは開発ではない?」では障害対応について解説しました。今回は、障害発生を切り口として、どのように対処していくのかを具体的に説明してきます。

老川 正志

2007年9月4日 20:00

トラブル事例

「第1回:Javaで重要なことは開発ではない?」では障害対応について解説しました。今回は、障害発生を切り口として、どのように対処していくのかを具体的に説明してきます。

   実際にお客様のシステムで発生した障害において、このような経験はないでしょうか。


ケース1:障害が発生したのに、気が付かなかった
お客様から、「システムにつながらない」という連絡が入る。調べてみたら、障害が発生しており、連絡を受けるまで、まったく気が付かなかった。
ケース2:障害の原因調査に時間がかかってしまった
障害発生の連絡を受けて調査していたが、サーバの台数が多く、原因調査に時間がかかってしまい、暫定対処が遅れてしまった。

表1:システム運用・保守時のトラブル事例

どちらも、いろいろな原因があるかと思います。では、それぞれのケースにおける対処法を説明していきます。
 

ケース1の対応法:サービス監視の実施

ケース1の原因は、「サービス障害監視を行っていない」ことでしょう。システム運用・保守を行っている以上、お客様よりも早く障害に気が付き、対応すべきです。

そのため商用製品・オープンソースを使った監視ツールを導入していることが多いのですが、監視対象がハードウェア、OSのプロセス、ネットワーク(ping)といった監視だけでは障害が発生しているのに気が付かず、このような経験をすることがあります。

ここで重要なのは、お客様が利用する形式(サービス)での監視です。そのためにも、必ずサービス監視を実施しましょう。

サービス監視はそれほど難しい仕組みではありません。典型的な仕組みは図1のようになります。
 

サービス監視の仕組み
図1:サービス監視の仕組み

「サービス監視システム」は利用者と同じようなアクセスを定期的に実施します(図1-1)。アクセス先は「サービス監視アプリケーション」であり、このアプリケーションでサービスが稼動しているかを判断します。アクセスの際、通常と違うレスポンスの場合は、監視対象システムに障害が発生しているとみなし(図1-2)、障害の通報を行います(図1-3)。

 

サービス監視アプリケーションの作成

具体的に、監視対象システムがWebアプリケーションの場合を考えてみましょう。

まず、サービス監視アプリケーションについてです。監視対象システムがWebアプリケーションの場合、利用者と同じようなアクセス方法(図1-1)は、HTTP(もしくはHTTPS)通信になります。つまり、サービス監視を行うべき対象アプリケーションもWebアプリケーションになります。

サービス監視アプリケーションは「サービスが稼動していると判断する基準」に従って作成します。この基準はシステムによって様々ですが、「データベースアクセスを行い、1つのページを表示する」といった挙動ができれば、サービスは稼動していると判断してもよいのではないでしょうか。

そのほかにも、「すべての機能を実行する」「1つの機能を実行する」といった、より厳しい判断基準も考えられます。しかし費用対効果を考えると、1つのページを表示するだけで、ほぼ同等の効果を得ることができます。

以下はサービス監視用のアプリケーションの例です。

サービス監視用アプリケーションの例

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
⁄*
 *  サービス監視用サーブレット
 *  データベースから固定文字"Think IT!"を取得し、表示する。
 */ 
public class MonitorServiceServlet extends HttpServlet {
  public void doGet(HttpServletRequest request,HttpServletResponse response)
    throws ServletException,IOException {

      //DbAccessクラスを使い、monitorテーブル中の1行目にあるconstant列を取得する
    String monitorString = DbAccess.getString("monitor", "constant ",1)

      //HTML表示
    response.setContentType("text/html;charset=Shift_JIS");
    PrintWriter out=response.getWriter();
    out.println("");
    out.println("Monitoring");
    out.println("

" + monitorString + "

");
    out.println("");
  }
}

サービス監視用アプリケーションでは、正常稼動時は固定のレスポンスとなります。そのため、サービス監視システムでは正常稼動時と異なるレスポンスのときにサービス障害と判断し、障害を通報します。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30