ヘルスチェックとは?
- サーバーやソフトウェア、システムが正常に作動しているかを、外部から監視確認する仕組み
何をチェックするのか?
-
死活監視 (Ping): サーバーがネットワーク的に疎通可能か。
-
ポート監視 (Port Check): 特定のポート(例: 80番 for Web)でサービスが待ち受けているか。
-
プロセス監視: 必要なプロセス(例: httpd, nginx)が起動しているか。
-
HTTP/S監視: Webサーバーが正常なレスポンス(例: ステータスコード200)を返すか。
-
DB監視: データベースに接続し、簡単なクエリ(例: SELECT 1;)が成功するか。
-
リソース監視: CPU、メモリ、ディスク使用率がしきい値を超えていないか。
どう設定するのか?
-
チェック間隔 (Interval): どのくらいの頻度でチェックするか。(例: 30秒に1回)
-
タイムアウト (Timeout): 応答を何秒待つか。(例: 5秒)
-
しきい値 (Threshold): 何回連続で失敗/成功したら状態を切り替えるか。(例: 3回連続失敗で「異常」と判断)
AWSにおけるヘルスチェック
- 自分で立てたサーバーや、それに類するリソースの面倒を見る必要があるサービスにはヘルスチェックの仕組みが存在する
- No
- S3/Lambda/SQS/SNS
- Yes
- EC2/ECS/EKS/ELB/RDS/Route53
- No
Webサーバーのヘルスチェック手法
① 死活監視 (Ping)
-
方法: サーバーのIPアドレスに対してPingコマンドを送り、応答があるかを確認します。
-
わかること: ネットワーク的にサーバーが到達可能か。OSが最低限起動しているか。
-
限界: Webサーバーのソフトウェア(Apache, Nginxなど)が停止していても成功してしまうため、これだけでは不十分です。
② ポート監視 (Port Check)
-
方法: Webサーバーが使用するポート(HTTPなら80番, HTTPSなら443番)に対して接続を試みます。
-
わかること: Webサーバーのプロセスが起動し、リクエストを待ち受けているか。
-
限界: プロセスは生きていても、内部的な問題でエラーページしか返せない状態(例: DB接続エラー)は検知できません。
③ HTTP監視 (HTTP Status Check)
-
方法: /や/healthのような特定のパスにHTTPリクエストを送り、返ってきたステータスコードが正常(200 OKなど)であるかを確認します。
-
わかること: Webアプリケーションがリクエストを処理し、正常な応答を返せているか。最も一般的で効果的な手法です。
④ コンテンツ監視 (Content Check)
-
方法: HTTP監視に加え、レスポンスの内容に特定の文字列(例: Success, OK)が含まれているかまで確認します。
-
わかること: ページが正しく表示され、期待通りのコンテンツが生成されているか。よりアプリケーションの内部ロジックに近い部分まで確認できます。
DBサーバーのヘルスチェック手法
① 死活監視 (Ping) & ポート監視
-
方法: Webサーバーと同様に、Pingでの疎通確認と、DBが使用するポート(MySQLなら3306番など)への接続確認を行います。
-
わかること: ネットワーク的な到達可能性と、DBプロセスの起動状態。
② 接続・認証監視 (Connection Check)
-
方法: 実際にデータベースにユーザー名とパスワードを使って接続を試みます。
-
わかること: データベースが接続を受け付け、認証機能が正常に動作しているか。
③ クエリ実行監視 (Query Check)
-
方法: データベースに接続後、SELECT 1;のようなシステムに負荷をかけない簡単なSQLクエリを実行し、正常な結果が返ってくるかを確認します。
-
わかること: データベースエンジンが完全に機能しており、クエリを処理できる状態か。最も確実なDBのヘルスチェック手法です。