このドキュメントでは、Telemetry(OTLP)API を使用して Google Cloud プロジェクトに送信された指標データが Cloud Monitoring の構造にマッピングされる方法について説明します。この API は、OpenTelemetry OTLP プロトコルを実装します。otlphttp エクスポータと OpenTelemetry Collector を使用してアプリケーションを計測する場合、または OpenTelemetry SDK を使用する場合は、この API にデータを送信できます。
OpenTelemetry は、テレメトリーの取り込みと可視化をサポートする Google Cloudエンジニアが常駐する、 Google Cloudがサポートするオープンソース プロジェクトです。
Cloud Monitoring の OTLP 指標
OpenTelemetry Collector と otlphttp エクスポータを使用して指標が Cloud Monitoring に取り込まれる場合、または OpenTelemetry SDK を使用して直接送信される場合、OTLP 指標は Cloud Monitoring 指標構造にマッピングされます。このセクションでは、次のことを説明します。
モニタリング対象リソースのマッピング
すべての指標ポイントは、Prometheus マッピングを使用して、Google Cloud Managed Service for Prometheus にそのまま書き込まれます。
Prometheus マッピング
Prometheus 指標では、モニタリング対象リソースタイプ prometheus_target を使用する必要があります。
prometheus_target リソースタイプの次のラベルは、Monarch 内のデータをスキーマ化して効率的に保存するために使用されます。これらの属性の値を正確に指定するほど、クエリ可能性とスケーラビリティが向上します。
明示的な値がない場合に使用するフォールバック ロジックを実装していますが、これらのラベルの値を設定する際は、できるだけ明示的に指定することを強くおすすめします。
次の表に、ラベルの値のソースを優先順位の高い順に示します。
prometheus-target ラベル |
使用された値(優先順位順) |
|---|---|
location(必須) |
|
cluster |
|
namespace |
|
job |
|
instance空の場合はポイントを拒否 |
|
指標のマッピング
指標は Prometheus の時系列形式に変換されます。指標名にはドメインがないか、ドメインprometheus.googleapis.com が必要です。変換後、指標名には prometheus.googleapis.com 接頭辞と、OTLP ポイントの種類に基づく追加の接尾辞が含まれます。結果の Cloud Monitoring 指標は次の構造になります。
prometheus.googleapis.com/{metric_name}/{suffix}
また、一意の OpenTelemetry リソースごとに、変換によって service.name、service.instance.id、service.namespace を除くすべてのリソース属性を含む target_info 指標が追加されます。
コレクタが値の型を INT64 として指定している場合でも、すべての OTLP INT64 指標は Cloud Monitoring の DOUBLE 値の型に変換されます。この変更が行われるのは、時系列が Monarch にある場合、値の型を変更できないためです。INT64 値をサポートする最も一般的な結果は、指標を削除することでのみ解決できる競合が発生することです。
Prometheus 指標のマッピング
指標タイプは次のようにマッピングされます。
- OTLP ゲージは Cloud Monitoring のゲージにマッピングされます。
- OTLP Sum は次のようにマッピングされます。
- OTLP ヒストグラムは、
aggregation_temporalityの値に応じて、指標の種類が cumulative または delta の Cloud Monitoring 分布にマッピングされます。 - OTLP の概要指標は、各コンポーネント(
count、sum、各quantile)の個々の時系列に展開されます。
次の表に、指標のマッピングの概要を示します。
| OTLP ポイントの種類 | モニタリングの 指標の種類 | モニタリングの 値の型 | サフィックス | メモ |
|---|---|---|---|---|
| GAUGE | GAUGE | DOUBLE | /gauge | |
| GAUGE(metric.metadata["prometheus.type"]="unknown") | GAUGE | DOUBLE | /unknown | Prometheus の不明な値は、OpenTelemetry Collector によってカウンタとゲージに分割されます。 |
| SUM(単調増加、累積) | CUMULATIVE | DOUBLE | /counter | |
| SUM(monotonic、CUMULATIVE、metric.metadata["prometheus.type"]="unknown") | CUMULATIVE | DOUBLE | /unknown:counter | Prometheus の不明な値は、OpenTelemetry Collector によってカウンタとゲージに分割されます。 |
| SUM(単調増加、DELTA) | DELTA | DOUBLE | /delta | |
| SUM(非単調、累積) | GAUGE | DOUBLE | /gauge | |
| ヒストグラム(累積) | CUMULATIVE | 明示的なバケットを使用した DISTRIBUTION | /histogram | |
| 指数ヒストグラム(累積) | CUMULATIVE | 指数関数的バケットを使用した分布 | /histogram | |
| ヒストグラム(差分) | DELTA | 明示的なバケットを使用した DISTRIBUTION | /histogram:delta | |
| 指数ヒストグラム(デルタ) | DELTA | 指数関数的バケットを使用した分布 | /histogram:delta | |
| SUMMARY (sum, count, quantile) |
CUMULATIVE CUMULATIVE GAUGE |
DOUBLE DOUBLE DOUBLE |
_sum/summary:counter _count/summary /summary |
要約データポイントは、カウント、合計、計算された各分位数に対して 1 つずつ、複数の時系列として書き込まれます。クォンタイル指標も quantile ラベル付きで生成されます。 |
googlemanagedprometheus エクスポータと Telemetry API の違い
Telemetry API(telemetry.googleapis.com)は、googlemanagedprometheus エクスポータとは異なる方法で指標を処理します。
Telemetry API では、指標名にピリオド(
.)とスラッシュ(/)を使用できます。googlemanagedprometheusエクスポータは、これらの文字のすべてのインスタンスをアンダースコア(_)文字に変換します。たとえば、prometheus.googleapis.com/foo.bar/gaugeという OTLP 指標は、OTLP エクスポータによってそのままエクスポートされますが、googlemanagedprometheusエクスポータによってprometheus.googleapis.com/foo_bar/gaugeとしてエクスポートされます。指標が取り込まれると、Cloud Monitoring は名前に基づいて指標記述子を作成します。取り込みパスでのピリオド(
.)とスラッシュ(/)文字の処理方法の違いにより、googlemanagedprometheusエクスポータを使用して取り込まれた指標とotlphttpエクスポータを使用して取り込まれた指標で、結果の指標記述子が異なります。両方の取り込みパスを使用すると、2 つの指標セットが作成されます。クエリ時に完全な結果を取得するには、Prometheus バージョンと OTLP バージョンの指標の結果を手動で統合する必要があります。単位が存在する場合、Telemetry API は指標名に単位を追加しません。また、カウンタに
_total接尾辞を追加しません。したがって、Telemetry API を使用してprometheus.googleapis.com/foo/counterとしてエクスポートされた指標は、googlemanagedprometheusエクスポーターによってprometheus.googleapis.com/foo_seconds_total/counterとしてエクスポートされます。この違いは、_total接尾辞と_ratio接尾辞にも適用されます。API は、指数ヒストグラムから導出された分布値の
sum_of_squared_deviation値を合成します。googlemanagedprometheusエクスポーターは、指数ヒストグラムに対してこのフィールドを設定しません。API は、すべての整数ポイント値を Prometheus 指標の倍精度値に変換します。
scope_versionまたはscope_nameラベルの値が空の場合、API はこれらのラベルを設定しません。
取り込まれたデータを表示する場所
Telemetry API を介して取り込まれた指標データは、[Metrics エクスプローラ] ページを使用して表示できます。指標データの表示とグラフ作成については、Metrics Explorer でグラフを作成するをご覧ください。