このドキュメントでは、公開稼働時間チェックを作成する方法について説明します。公開稼働時間チェックでは、世界中の複数のロケーションから、一般公開されている URL または Google Cloud リソースにリクエストを発行して、リソースが応答するかどうかを確認できます。プライベート ネットワークの稼働時間チェックを作成する方法については、非公開稼働時間チェックの作成をご覧ください。
公開の稼働時間チェックでは、次のモニタリング対象リソースの可用性を判断できます。- 稼働時間チェック URL
- VM インスタンス
- App Engine アプリケーション
- Kubernetes サービス
- Amazon Elastic Compute Cloud(EC2)インスタンス
- Amazon Elastic ロードバランサ
- Cloud Run のリビジョン
稼働時間チェックの管理とモニタリングに関する情報へのリンクについては、このドキュメントの次のステップのセクションをご覧ください。
稼働時間チェックについて
HTTP と HTTPS の場合、すべての URL リダイレクトを行い、稼働時間チェックで受信した最終的なレスポンスを使用して成功基準を評価します。HTTPS チェックの場合、SSL 証明書の有効期限は、最後のレスポンスで受信したサーバー証明書に基づいて計算されます。
稼働時間チェックが成功するには、次の条件を満たす必要があります。
- HTTP ステータスが指定した条件に一致する。
- レスポンス データに必要とされるコンテンツは指定されていない、もしくは必要なコンテンツが存在する。
稼働時間チェックではページアセットの読み込みや JavaScript の実行は行われません。また稼働時間チェックのデフォルト構成には認証が含まれません。
始める前に
-
稼働時間チェックの作成に必要な権限を取得するには、プロジェクトに対して次の IAM ロールを付与するよう管理者に依頼してください。
-
Monitoring 編集者(
roles/monitoring.editor
)- Google Cloud コンソール ユーザー -
Monitoring 稼働時間チェック構成編集者(
roles/monitoring.uptimeCheckConfigEditor
)- API ユーザー -
Monitoring AlertPolicy 編集者(
roles/monitoring.alertPolicyEditor
)- API ユーザー -
Monitoring NotificationChannel 編集者(
roles/monitoring.notificationChannelEditor
)- API ユーザー
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
-
Monitoring 編集者(
確認するリソースがパブリック エンドポイントを持っているか、構成可能なファイアウォールの背後にあることを確認します。
他のすべての構成では、非公開稼働時間チェックを作成する必要があります。 詳細については、非公開稼働時間チェックの作成をご覧ください。
リソースがファイアウォールの背後にある場合は、稼働時間チェック サーバーの IP アドレスからの受信トラフィックを許可するように、そのファイアウォールを構成します。詳細については、稼働時間チェック サーバーの IP アドレスを一覧表示するをご覧ください。
通知の受信に使用する通知チャンネルを構成します。複数の種類の通知チャンネルを作成することをおすすめします。詳しくは、通知チャンネルの作成と管理をご覧ください。
稼働時間チェック用に少なくとも 3 つのチェッカーを特定します。稼働時間チェック リージョン
USA
には、USA_OREGON
、USA_IOWA
、USA_VIRGINIA
リージョンが含まれます。各USA_*
リージョンには 1 つのチェッカーがあり、USA
には 3 つすべてが含まれます。その他の稼働時間チェック リージョン(EUROPE
、SOUTH_AMERICA
、ASIA_PACIFIC
)には、それぞれチェッカーが 1 つあります。Google Cloud コンソールの使用時に [グローバル] を選択するか、API の使用時に
REGION_UNSPECIFIED
を選択した場合、稼働時間チェックはすべての稼働時間チェック リージョンから発行されます。
稼働時間チェックを作成する
ここでは、稼働時間チェックを作成して構成する方法について説明します。
少なくとも 1 つの TCP または HTTP/s ポートが構成されている外部ロードバランサの稼働時間チェックを作成するには、次の手順に従います。 または、サービスの [サービスの詳細] ページに移動し、[稼働時間チェックの作成] をクリックします。[サービスの詳細] ページから開始すると、サービス固有のフィールドが事前入力されます。
Console
Google Cloud コンソールを使用して稼働時間チェックを作成するには、次の操作を行います。
-
Google Cloud コンソールで、 [稼働時間チェック] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。
[稼働時間チェックの作成] をクリックします。
稼働時間チェックのターゲットを指定します。
[プロトコル] でプロトコルを選択します。HTTP、HTTPS、TCP を選択できます。
次のリソースタイプのいずれか 1 つを選択します。
- URL: 任意の IPv4 アドレスまたはホスト名。パスとポートは別々に入力します。
- Kubernetes LoadBalancer Service: LoadBalancer タイプの Kubernetes Service
- [Instance]: Compute Engine または AWS EC2 インスタンス
- [App Engine]: App Engine アプリケーション(モジュール)
- [Elastic Load Balancer]: AWS ロードバランサ
プロトコル固有のフィールドを入力します。
TCP チェックでは、ポートを入力します。
HTTP チェックと HTTPS チェックでは、ホストまたはリソース内のパスを入力できます。これらのプロトコルを使用するすべての稼働時間チェックは、
http://target/path
にリクエストを送信します。この式において、URL リソースでは、target
はホスト名または IP アドレスです。 App Engine リソースでは、target
はサービス名に由来するホスト名です。インスタンスとロードバランサのリソースでは、target
はリソースまたはリソースのグループに指定した名前に由来する IP アドレスです。path
フィールドを空白のままにするか、値を/
に設定すると、リクエストはhttp://target/
に発行されます。たとえば。URL リソース
example.com/tester
に稼働時間チェックを発行するには、Hostname フィールドをexample.com
に、Path フィールドを/tester
に設定します。/
と/hello
をサポートするコーディネーターによってサーバーを App Engine にデプロイしたとします。稼働時間チェックを '/' ハンドラに発行するには、Path フィールドを空白のままにします。稼働時間チェックを/hello
ハンドラに発行するには、Path フィールドの値を/hello
に設定します。
リソース固有のフィールドを入力します。
URL リソースでは、ホスト名フィールドにホスト名を入力します。たとえば、「
example.com
」と入力します。App Engine リソースでは、[サービス] フィールドにサービス名を入力します。
[Elastic Load Balancer] リソースと [Instance] リソースの場合、[Applies to] フィールドに次のように入力します。
- 単一のインスタンスまたはロードバランサに対して稼働時間チェックを発行するには、[Single] を選択し、メニューを使用して特定のインスタンスまたはロードバランサを選択します。
- モニタリング グループに稼働時間チェックを発行するには、[Group] を選択し、メニューを使用してグループ名を選択します。
省略可: 稼働時間チェックを実行する頻度を設定するには、[Check frequency] フィールドを使用します。
省略可: チェッカー リージョンを選択するか、SSL 証明書、認証、ヘッダー、および HTTP チェックと HTTPS チェックのポートを構成するには、[More target options] をクリックします。
- リージョン: 稼働時間チェックがリクエストを受信するリージョンを選択します。稼働時間チェックには、少なくとも 3 つのチェッカーが必要です。3 つのチェッカーがある米国を除くすべてのリージョンには、1 つのチェッカーがあります。デフォルト設定の [グローバル] にはすべてのリージョンが含まれています。
- ICMP Pings: 最大 3 回の ping を送信するように稼働時間チェックを構成します。詳細については、ICMP ping を使用するをご覧ください。
- リクエスト メソッド: HTTP チェックの場合、リクエスト メソッドを選択します。
- 本文: HTTP POST チェックの場合、URL エンコードされた本文を入力します。エンコードは自分で行う必要があります。他のすべてのチェックでは、このフィールドは空のままにします。
- Host header: 仮想ホストをチェックする場合に入力します。このフィールドは TCP チェックには使用できません。
- Port: ポート番号を指定します。
- Custom Headers: カスタム ヘッダーを追加し、必要に応じて暗号化します。暗号化すると、ヘッダーの値はフォームに表示されません。 認証に関連するヘッダーを他のユーザーに表示しないように暗号化を使用します。
認証: これらの値は Authorization ヘッダーとして送信されます。このフィールドは TCP チェックには使用できません。
次のいずれかを選択します。
- [基本認証]: 単一のユーザー名とパスワードを指定します。フォームではパスワードは常に非表示です。
- サービス エージェント認証: 有効にすると、モニタリング サービス エージェントの ID トークンが生成されます。このオプションは、HTTPS チェックでのみ使用できます。
SSL 証明書の検証: URL リソースの HTTPS を選択した場合、デフォルトでは HTTPS 経由での接続を試行し、SSL 証明書を検証します。URL に無効な証明書がある場合、稼働時間チェックは失敗します。証明書が無効になる理由は次のとおりです。
- 有効期限が切れた証明書
- 自己署名証明書
- ドメイン名が一致しない証明書
- 認証局情報アクセス(AIA)拡張機能を使用している証明書。
HTTPS 稼働時間チェックによって SSL 証明書を検証させるには、[SSL 証明書を検証する] を選択します。
SSL 証明書の検証を無効にするには、[SSL 証明書の検証] チェックボックスをオフにします。
AIA 拡張機能を使用した SSL 証明書がある場合は、SSL 証明書の検証を無効にする必要があります。これらのタイプの証明書はサポートされておらず、検証シーケンスは失敗します。 通常、エラーメッセージは「10000 ミリ秒の SSL ハンドシェイク エラーで応答」です。
指標
monitoring.googleapis.com/uptime_check/time_until_ssl_cert_expires
を使用して、証明書が期限切れになる前に通知するアラート ポリシーを作成できます。詳細については、サンプル ポリシー: 稼働時間チェック ポリシーをご覧ください。[SSL 証明書を検証する] チェックボックスを選択オンにします。
[続行] をクリックし、レスポンス要件を構成します。このセクションの設定にはすべてデフォルト値があります。
[レスポンスのタイムアウト] フィールドを使用して、稼働時間チェックのタイムアウト期間を変更します。この期間内に複数のロケーションからレスポンスを受け取らなかった場合、稼働時間チェックは失敗となります。
コンテンツ マッチングを実行するように稼働時間チェックを構成するには、トグルラベルが [コンテンツ マッチングが有効] になっていることを確認します。
- オプションのメニューから [レスポンスのコンテンツのマッチタイプ] を選択します。
このフィールドは、レスポンスのコンテンツと返されたデータをどのように比較するかを指定します。たとえば、レスポンスのコンテンツが
abcd
で、コンテンツのマッチタイプが [Contains] であるとします。稼働時間チェックが成功するのは、レスポンス データにabcd
が含まれている場合のみです。詳細については、レスポンス データを検証するをご覧ください。 - [レスポンスのコンテンツ] を入力します。レスポンスのコンテンツには 1024 バイト以下の文字列を指定する必要があります。API では、このフィールドでは
ContentMatcher
オブジェクトです。
- オプションのメニューから [レスポンスのコンテンツのマッチタイプ] を選択します。
このフィールドは、レスポンスのコンテンツと返されたデータをどのように比較するかを指定します。たとえば、レスポンスのコンテンツが
稼働時間チェックが原因でログエントリが作成されないようにするには、[チェックの失敗をログに出力] をオフにします。
HTTP 稼働時間チェックの場合は、許容されるレスポンス コードを構成します。デフォルトでは、HTTP 稼働時間チェックで
2xx
レスポンスはすべて正常なレスポンスと見なします。
[続行] をクリックして通知を構成します。
稼働時間チェックが失敗した場合に通知を受け取るには、アラート ポリシーを作成して、そのポリシーの通知チャネルを構成します。
- 省略可: アラート ポリシーの名前を更新します。
- 省略可: [Duration] フィールドで、稼働時間チェックの失敗の通知を送信するまでの時間を選択します。デフォルトでは、2 つ以上のリージョンが 1 分以上の稼働時間チェックの失敗を報告したときに通知が送信されます。
[通知チャネル] というラベルのボックスで、arrow_drop_down [メニュー] をクリックし、追加するチャネルを選択して、[OK] をクリックします。
メニューでは、通知がチャネルタイプごとにアルファベット順にグループ化されます。
アラート ポリシーを作成しない場合は、切り替えボタンのテキストが [アラートを作成しない] になっていることを確認します。
[続行] をクリックし、稼働時間チェックを完了します。
稼働時間チェックのわかりやすいタイトルを入力します。
省略可: 稼働時間チェックにユーザー定義のラベルを追加する手順は次のとおりです。
- expand_more [ユーザーラベルを表示] をクリックします。
- [Key] フィールドにラベルの名前を入力します。ラベル名の先頭は小文字にする必要があり、小文字、数字、アンダースコア、ダッシュを使用できます。たとえば、「
severity
」と入力します。 - [Value] フィールドにラベルの値を入力します。ラベルの値には、英小文字、数字、アンダースコア、ダッシュを使用できます。たとえば、「
critical
」と入力します。 - 追加するラベルごとに、[ユーザーラベルを追加します] をクリックして、ラベルのキーと値を入力します。
稼働時間チェックの構成を確認するには、[TEST] をクリックします。結果が期待どおりでない場合は、チェックの失敗を参照して構成を修正し、検証ステップを繰り返します。
[作成] をクリックします。[Create] を選択していて必須フィールドに値が入力されていない場合、エラー メッセージが表示されます。
gcloud
稼働時間チェックを作成するには、gcloud monitoring uptime create
コマンドを実行します。
gcloud monitoring uptime create DISPLAY_NAME REQUIRED_FLAGS OPTIONAL_FLAGS
前述のコマンドを実行する前に、次のようにしてください。
DISPLAY_NAME は、稼働時間チェックの名前に置き換えます。
稼働時間チェックでプローブされるリソースを指定する REQUIRED_FLAGS を構成します。たとえば、次のコマンドは、特定のプロジェクトの URL EXAMPLE.com をテストする稼働時間チェックを作成します。
gcloud monitoring uptime create DISPLAY_NAME \ --resource-labels=host=EXAMPLE.com,project_id=PROJECT_ID \ --resource-type=uptime-url
上のコマンドでは、リソースタイプ
uptime-url
で必要とされる各ラベルの値を指定しています。デフォルト値をオーバーライドするように OPTIONAL_FLAGS フラグを構成します。たとえば、プロトコルが
http
でない場合は、--protocol
フラグを設定する必要があります。
API
稼働時間チェックを作成するには、projects.uptimeCheckConfigs.create
メソッドを呼び出します。メソッドのパラメータを次のように設定します。
parent: 必須。稼働時間チェックを作成するプロジェクトの名前を指定する必要があります。
PROJECT_ID
を実際の Google Cloud プロジェクト ID に置き換えます。書式は次のとおりです。projects/PROJECT_ID
リクエスト本文には、新しい稼働時間チェックの
UptimeCheckConfig
オブジェクトを含める必要があります。このページでは、いくつかのフィールドについて説明します。このオブジェクトとそのフィールドの詳細については、UptimeCheckConfig
のドキュメントをご覧ください。構成オブジェクトの
name
フィールドは空白のままにします。このフィールドは、システムがレスポンス構成オブジェクトを作成するときに設定します。HTTP または HTTPS チェックを構成する場合は、
UptimeCheckConfig
オブジェクトのHttpCheck
フィールドに入力する必要があります。このオブジェクトでは、requestMethod
フィールドをGET
またはPOST
に設定します。このフィールドを省略するかMETHOD_UNSPECIFIED
に設定すると、GET
リクエストが発行されます。POST
リクエストを構成する場合は、contentType
、customContentType
(任意)、body
の各フィールドに入力します。
create
メソッドは、新しい構成に応じた UptimeCheckConfig
オブジェクトを返します。
作成された稼働時間チェックの構成が想定どおりに機能しない場合は、このページのチェックの失敗セクションをご覧ください。
C#
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Ruby
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Terraform
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。 詳細については、Terraform プロバイダのリファレンス ドキュメントをご覧ください。
稼働時間チェックと、そのチェックをモニタリングするアラート ポリシーを作成するには、次の操作を行います。
Terraform 構成ファイルを編集して
google_monitoring_uptime_check_config
リソースを追加し、構成ファイルを適用します。次の例は、公開 URL を確認する構成を示しています。
resource "google_monitoring_uptime_check_config" "example" { display_name = "example" timeout = "60s" http_check { port = "80" request_method = "GET" } monitored_resource { type = "uptime_url" labels = { project_id = "PROJECT_ID" host="EXAMPLE.com" } } checker_type = "STATIC_IP_CHECKERS" }
省略可: 通知チャンネルとアラート ポリシーを作成します。
次の手順では、Google Cloud コンソールを使用して通知チャンネルとアラート ポリシーを作成します。このアプローチでは、アラート ポリシーが稼働時間チェックによって生成されたデータのみをモニタリングします。
通知チャネルを作成する方法は、次のとおりです。
-
Google Cloud コンソールで、notifications [アラート] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。
- [通知チャンネルを管理] を選択します。
- 追加するチャネルの種類に移動し、[追加] をクリックして、ダイアログを完了します。
-
アラート ポリシーを作成するには:
-
Google Cloud コンソールで、 [稼働時間チェック] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。
- 稼働時間チェックを見つけて、more_vert [その他] を選択し、[アラート ポリシーを追加] を選択します。
- ダイアログで [通知と名前] セクションに移動し、[通知チャンネル] を展開して選択します。
- アラート ポリシーに名前を付けて、[ポリシーを作成] をクリックします。
-
アラート ポリシーを作成するには、構成ファイルに
google_monitoring_alert_policy
リソースを追加し、新しい構成を適用します。
稼働時間チェックの結果が Monitoring に送信され始めるまでに、最大 5 分の遅延が発生する可能性があります。その間、稼働時間チェック ダッシュボードには「データがありません」というステータスが表示されます。
ICMP ping を使用する
失敗した公開稼働時間チェックをトラブルシューティングするには、稼働時間チェック中に最大 3 つの ICMP ping を送信するように稼働時間チェックを構成できます。ping を使用すると、ネットワーク接続の問題やアプリケーションのタイムアウトなど、さまざまな原因による障害を区別できます。
デフォルトでは、稼働時間チェックは ping を送信しません。各 ping により、稼働時間チェックにレイテンシが発生します。非公開稼働時間チェックでは ping を送信できません。
公開稼働時間チェックが失敗した場合、ping の結果は Cloud Logging ログに書き込まれます。ping が失敗すると、次のフィールドがログエントリの httpRequest
フィールドに追加されます。
rtt_usec
: 失敗した ping リクエストのラウンドトリップ時間。unreachable_count
: ステータス コードICMP_DEST_UNREACH
を返した ping リクエストの数。no_answer_count
: タイムアウトして応答が返されなかった ping リクエストの数。
成功した稼働時間チェックの ping の結果はログに記録されません。
ping を構成する
各稼働時間チェック構成には、HttpCheck
オブジェクトまたは TcpCheck
オブジェクトが含まれます。これらの両方のオブジェクトに pingConfig
フィールドが含まれます。このフィールドを使用して、各チェックに含める ICMP ping の回数を指定します(最大 3 回)。デフォルトでは、ping は送信されません。
ping を構成するには、次のいずれかを行います。
Google Cloud コンソールを使用する場合は、[その他のターゲット オプション] を展開し、[ICMP Pings] フィールドに値を入力します。
Cloud Monitoring API を使用する場合は、次の構造の
PingConfig
オブジェクトを使用します。{ "pingsCount": integer }
稼働時間チェック構成に Monitoring API を使用する方法については、稼働時間チェックを作成する: API または稼働時間チェックを編集する: API をご覧ください。
稼働時間チェックの確認
Google Cloud コンソールで稼働時間チェックを作成する際、保存前にその構成をテストできます。
チェックの成功
次の条件に当てはまる場合、稼働時間チェックが成功します。
- HTTP ステータスが、選択した条件に一致する。
- レスポンスに必要なコンテンツが指定されていない、もしくは、レスポンスを検索して必要なコンテンツが見つかった。
チェックの失敗
以下に、稼働時間チェックが失敗する原因の一部を示します。
- Connection Error - Refused: デフォルトの HTTP 接続タイプを使用している場合、HTTP リクエストに応答しているウェブサーバーがインストールされていることを確認します。新しいインスタンスにウェブサーバーがインストールされていない場合、接続エラーが発生することがあります。Compute Engine のクイックスタートをご覧ください。HTTPS 接続タイプを使用する場合は、追加の構成手順を実行しなければならないことがあります。ファイアウォールの問題については、稼働時間チェック サーバーの IP アドレスを一覧表示するをご覧ください。
- 名前またはサービスが見つかりません: ホスト名が正しくない可能性があります。
- 403 Forbidden: サービスが稼働時間チェッカーにエラーコードを返しています。たとえば、Apache ウェブサーバーのデフォルト構成は、Amazon Linux ではこのコードを返しますが、他のいくつかの Linux バージョンではコード 200 (Success) を返します。Amazon Linux の LAMP チュートリアルまたはご使用のウェブサーバーのドキュメントをご覧ください。
- 404 Not found: パスが正しくない可能性があります。
408 Request timeout、またはレスポンスなし: ポート番号が正しくない、サービスが稼働していない、サービスがアクセスできない状態になっている、あるいはタイムアウト値が小さすぎる可能性があります。ファイアウォールが稼働時間サーバーからのトラフィックを許可していることを確認してください。詳しくは稼働時間チェック サーバーの IP アドレスを一覧表示するをご覧ください。タイムアウト上限は、[レスポンスの検証] オプションの一部として指定されます。
ネットワークの輻輳が原因でリクエストのタイムアウトが発生することがあります。たとえば、一時的なネットワーク輻輳により、1 つのチェッカーは失敗するが、他のすべてのチェッカーは成功することがあります。アラート ポリシーでデフォルト構成を使用している場合、1 つのチェッカーでエラーが発生しても通知は発生しません。
稼働時間チェックが ping を送信するように構成されている場合、失敗した稼働時間チェックの ping の結果は Cloud Logging に書き込まれます。詳細については、ICMP ping を使用するをご覧ください。