このドキュメントでは、アプリケーションが生成する指標とトレースデータにアプリケーション固有のラベルが含まれるように App Hub アプリケーションを構成する方法について説明します。また、アプリケーションがアプリケーション モニタリングで使用される指標をエクスポートして、Google Kubernetes Engine で実行される HTTP リクエスト ワークロードのトラフィック レベル、サーバーエラー率、レイテンシをレポートする方法についても説明します。
アプリケーション固有のラベルについて
アプリケーション固有のラベルとは、ログデータ、指標データ、トレースデータに挿入されるラベルまたは属性を指します。これらのラベルは、データを生成したサービスまたはワークロードを特定するものです。アプリケーション固有のラベルは、他のラベルと同様に使用できます。たとえば、アプリケーションの ID でデータをフィルタできます。サポートされているインフラストラクチャによって生成されたテレメトリーには、これらのラベルが自動的に含まれます。計測では、アプリケーションによって書き込まれた指標とトレースにこれらのラベルを含めることができます。
このセクションでは、a.b.{x,y}
を a.b.x
および a.b.y
として解釈してください。
アプリケーションに追加した計測の指標データには、次の指標ラベルが含まれる可能性があります。
metric.labels.apphub_application_{container,id,location}
metric.labels.apphub_workload_{criticality_type,environment_type,id}
アプリケーションに追加した計測によって生成されたトレーススパンには、次のリソース属性が含まれる可能性があります。
gcp.apphub.application.{container,id,location}
gcp.apphub.{workload,service}.{criticality_type,environment_type,id}
OpenTelemetry HTTP サーバー指標について
Google Kubernetes Engine で実行されるワークロードのシステム指標に、HTTP リクエストのトラフィック レベル、サーバーエラー率、レイテンシをレポートできるものはありません。ただし、これらのゴールデン シグナルの値は、OpenTelemetry HTTP クライアント ライブラリによって自動的に収集される http.server.request.duration
指標から取得できます。
googlemanagedprometheus
エクスポータは、http.server.request.duration
OpenTelemetry 指標を次のプロパティを持つ Prometheus 指標に変換します。
- 名前:
prometheus/http_server_request_duration_seconds/histogram
- 指標:
prometheus.googleapis.com/http_server_request_duration_seconds/histogram
- リソースタイプ:
prometheus_target
- 単位:
s
- 種類:
CUMULATIVE
- 値の型:
DISTRIBUTION
Google Cloud プロジェクトに http_server_request_duration_seconds
指標が含まれている場合、OOTB ダッシュボードには、HTTP リクエストのトラフィック レベル、サーバーエラー率、レイテンシが表示されます。
http_server_request_duration_seconds
指標をエクスポートするようにアプリケーションを構成する方法については、このドキュメントの Kubernetes で OpenTelemetry を使用するのセクションをご覧ください。
指標データにアプリケーション ラベルを追加する
Google Cloud Observability は、プロジェクトに送信された Prometheus 指標に付加された属性と、App Hub API から返されたデータを比較して、Prometheus 指標のソースの特定を試みます。このセクションの残りの部分では、Google Cloud Observability が App Hub アプリケーションを特定できるようにする構成について説明します。
Kubernetes で OpenTelemetry を使用する
Google Cloud Observability で、Google Kubernetes Engine で実行されるアプリケーションのワークロードによって生成された指標データにアプリケーション ラベルを付加するようにする手順は以下のとおりです。
OpenTelemetry を使用してアプリケーションを計測します。
- 一般的な情報については、計測とオブザーバビリティをご覧ください。
- Go、Java、Node.js、Python のサンプルへのリンクと、これらのサンプルに関する情報については、計測サンプルの概要をご覧ください。
Google が構築した Collector または OpenTelemetry Collector のいずれかをデプロイし、次のようにコレクタを構成します。
googlemanagedprometheus
エクスポータを使用して指標データをエクスポートします。- 環境から
namespace
などのメタデータを抽出するようにk8sattributes
プロセッサを構成します。 project_id
、location
、cluster
、namespace
属性を設定するようにtransform/collision
プロセッサを構成します。top_level_controller_name
ラベルとtop_level_controller_type
ラベルを入力するようにtransform/aco-gke
プロセッサを構成します。
例については、Google が構築した Collector の構成ファイルである
otlp-k8s-ingest/config/collector.yaml
をご覧ください。このコレクタの詳細については、Google が構築した OpenTelemetry Collector を GKE にデプロイするをご覧ください。アプリケーションのワークロードを App Hub に登録します。
GKE で Google Cloud Managed Service for Prometheus を使用する
Google Cloud Observability で、Google Kubernetes Engine クラスタで実行されるアプリケーションのワークロードによって生成された指標データにアプリケーション ラベルを付加するようにする手順は以下のとおりです。
マネージド コレクションで Google Cloud Managed Service for Prometheus を使用します。
バージョンが
1.32.1-gke.1439000
以上の Google Kubernetes Engine クラスタにワークロードをデプロイします。アプリケーションのワークロードを App Hub に登録します。
Google Cloud Managed Service for Prometheus は、サービス ディスカバリ メタデータを使用してアプリケーション ラベルの値を検出し、targetLabels.metadata
に top_level_controller_{name,type}
ラベルを追加します。指標の取り込み中に、Google Cloud Observability は top_level_controller_{name,type}
ラベルと App Hub API を使用して App Hub アプリケーションを特定し、適切なラベルを指標データに追加します。
Cloud Run を使用する
Google Cloud Observability で、Cloud Run ワークロードによって生成された指標データにアプリケーション ラベルを付加するようにする手順は以下のとおりです。
OpenTelemetry または Cloud Run 用 Managed Service for Prometheus サイドカーを使用して、アプリケーションを計測します。これらのアプローチについては、次のドキュメントをご覧ください。
アプリケーションのワークロードを App Hub に登録します。
指標ラベルを確認する
アプリケーションが Prometheus 指標をプロジェクトに送信していることを確認する手順は以下のとおりです。
-
アプリケーションが Prometheus 指標をプロジェクトに送信していることを確認します。
-
Google Cloud コンソールで [leaderboard Metrics Explorer] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] の結果を選択します。
- Google Cloud コンソールのツールバーで、 Google Cloud プロジェクトを選択します。App Hub の構成には、App Hub ホスト プロジェクトまたはアプリ管理用フォルダの管理プロジェクトを選択します。
- [指標] 要素の [指標を選択] メニューを開いてフィルタバーに「
Prometheus Target
」と入力し、サブメニューを使用して特定のリソースタイプと指標を選択します。- [有効なリソース] メニューで、[Prometheus Target] を選択します。
- 指標を選択するには、[有効な指標カテゴリ] メニューと [有効な指標] メニューを使用します。
- [適用] をクリックします。
クエリ結果から時系列を削除するフィルタを追加するには、[フィルタ] 要素を使用します。
- データの表示方法を構成します。
ラベルを表示するには、[フィルタ] メニューを開きます。[フィルタ] の各エントリはラベルに対応しています。
グラフの構成の詳細については、Metrics Explorer 使用時の指標の選択をご覧ください。
Prometheus 指標が表示されない場合は、構成を確認します。
-
Prometheus 指標にアプリケーション ラベルが含まれていない場合は、次のことを行います。
ワークロードまたはサービスが App Hub に登録されていることを確認します。
ログを調べて、エラーがないかどうかを確認します。
たとえば、OpenTelemetry Collector または Google が構築した Collector をデプロイして、Google Kubernetes Engine で実行している場合は、次の操作を行います。
-
Google Cloud コンソールで、[ワークロード] ページに移動します。
検索バーを使用してこのページを検索した場合は、小見出しが [Kubernetes Engine] の結果を選択します。
- コレクタの Deployment を選択し、[ログ] タブを選択します。
-
OpenTelemetry Collector または Google が構築した Collector を使用している場合は、コレクタの構成を確認します。コレクタは次のことを行う必要があります。
googlemanagedprometheus
エクスポータを使用して指標データをエクスポートします。- 環境から
namespace
などのメタデータを抽出するようにk8sattributes
プロセッサを構成します。 project_id
、location
、cluster
、namespace
属性を設定するようにtransform/collision
プロセッサを構成します。top_level_controller_name
ラベルとtop_level_controller_type
ラベルを入力するようにtransform/aco-gke
プロセッサを構成します。
例については、Google が構築した Collector の構成ファイル(
otlp-k8s-ingest/config/collector.yaml
)をご覧ください。
トレーススパンにアプリケーション属性を追加する
Cloud Trace で、アプリケーションのサービスやワークロードによって生成されたトレースデータにアプリケーション固有のリソース属性を付加するようにする手順は以下のとおりです。
- サービスとワークロードを App Hub に登録します。
- OpenTelemetry でアプリケーションを計測し、Google Cloud OTLP エンドポイントを使用して、アプリケーションから収集したトレースデータをプロジェクトに送信します。
エクスポートされたスパンデータに、アプリケーションで使用されるサポートされている Google Cloud リソースを特定する OpenTelemetry リソース属性が含まれるように、OpenTelemetry Collector または Google が構築した Collector を構成します。リソース属性には、次のものを含める必要があります。
cloud.account.id
cloud.{availability_zone,region}
のいずれか- リソース固有の属性。たとえば、Kubernetes ワークロードの場合、スパンには
k8s.cluster.name
、k8s.namespace
、Kubernetes Deployment のタイプを設定する必要があります。
プロセッサを使用して、コレクタがリソース固有の属性をスパンに付加するようにします。詳しくは、
resourcedetectionprocessor
とk8sattributesprocessor
をご覧ください。Google Cloud Observability は、上記のリソース属性と App Hub API を使用して App Hub アプリケーションを特定します。アプリケーションが特定されると、アプリケーション固有の属性がトレースデータに追加されます。
これらの属性の詳細については、Google Cloud App Hub のセマンティック規約をご覧ください。