このドキュメントでは、Telemetry API で取り込まれたログデータの
Logging モニタリング対象リソースタイプを判別するために Google Cloud Observability が使用するルールについて説明します。モニタリング対象リソースはログデータの
ソースを表し、LogEntryではラベルを使用して表されます。Google Cloud Observability は、OTLP リソース属性を使用してこれらのラベルの値を決定します。
OTLP 形式のログデータの一般的な構造
ログデータが Telemetry API を使用して Google Cloud に送信される場合、この データは OTLP と互換性のある形式である必要があります。このデータの一般的な構造は次のとおりです。
"resourceLogs": [
{
"resource": {
"attributes": [...]
},
"scopeLogs": [
{
"logRecords": [...]
}
]
}
]
OpenTelemetry は、個々のログをバッチ処理します。各ログは logRecord 構造で表され、ログのソースに関する情報は resource 構造で表されます。
Google Cloud Observability は、resourceLogs オブジェクトを受信すると、logRecord ごとに 1 つの
LogEntry を構築します。個々のログのコレクションでソース情報をバッチ処理する OTLP とは異なり、各 LogEntry 構造にはログのソースとログ自体に関する情報が含まれています。
OTLP 形式のログデータの構造の詳細については、
OpenTelemetry logs.protoをご覧ください。
リソース検出機能を使用して OTLP リソース属性を設定する Google Cloud
OTLP ログデータに OTLP リソース属性を設定するには、 Google Cloud リソース検出を使用します。これらの検出は、テレメトリーのソースを記述する OTLP リソース属性をテレメトリーにアタッチします。
コレクタベースのエクスポートの場合は、コレクタのプロセッサの一部としてリソース検出を構成します。たとえば、コレクタで 2 つのリソース検出を指定できます。
resourcedetection: detectors: ["env", "gcp"]次のドキュメントでは、指標データまたはトレースデータをエクスポートするコレクタの例を示します。
- コレクタをデプロイして使用する: 指標データを Telemetry API に送信する方法について説明します。
- Google が構築した OpenTelemetry Collector を Google Kubernetes Engine にデプロイする: Google Kubernetes Engine で実行する場合にログ、指標、トレースデータを収集する方法について説明します。コレクタは、トレースデータを Telemetry API に送信し、指標データを Prometheus エクスポータに送信します。
直接エクスポートを使用している場合は、言語に適した Google Cloud リソース検出を使用します。
リソースラベルの設定方法
各ログエントリには、ログエントリのソース( Logging モニタリング対象リソースとも呼ばれます)を識別する一連のラベルが含まれています。 次の図は、Google Kubernetes Engine のラベルを示しています。
resource: {
labels: {
cluster_name: "my-cluster"
container_name: "server"
location: "us-central1"
namespace_name: "default"
pod_name: "my-pod"
project_id: "my-project"
}
type: "k8s_container"
}
図に示すように、モニタリング対象リソースには type フィールドと 1 つ以上の labels があります。
モニタリング対象リソースのラベルには、少なくとも project_id または resource_container が含まれます。
次の表に、Google Cloud Observability が OTLP リソース属性をモニタリング対象リソースにマッピングするために使用するルールを示します。表は順序付けされています。つまり、リソース属性に cloud.platform が含まれていて、値が gcp_compute_engine の場合、モニタリング対象リソースタイプは gce_instance に設定されます。モニタリング対象リソースのラベルの値を決定するために、Google Cloud Observability はリソース属性の優先順位付きリストを使用します。
リソース属性が使用できない場合、ラベルの値は空の文字列になります。
| ログレコードにアタッチされた OTLP 属性 と値 |
Cloud Logging モニタリング対象リソースタイプ |
OTLP リソース属性から優先順位で決定される モニタリング対象リソースのラベル値 |
|---|---|---|
cloud.platformの値が gcp_compute_engine |
gce_instance |
|
cloud.platformの値が gcp_app_engine |
gae_app |
|
cloud.platformの値が aws_ec2 |
aws_ec2_instance |
|
cloud.platformの値が gcp_bare_metal_solution |
baremetal instance |
|
service.name とservice.instance.idが空でない |
generic_task |
|
faas.name とfaas.instanceが空でない |
generic_task |
|
k8s.cluster.name とk8s.container.nameが空でない |
k8s_container |
|
k8s.cluster.name とk8s.pod.nameが空でない |
k8s_pod |
|
k8s.cluster.name とk8s.node.nameが空でない |
k8s_node |
|
k8s.cluster.nameが空でない |
k8s_cluster |
|
| 他のラベルが一致しない | generic_node |
|
プロジェクトまたはリソース コンテナ ID ラベル値を推測する
すべての Logging モニタリング対象リソースタイプには、project_id ラベルまたは resource_container ラベルがあります。
これらのラベルの値を決定するために、システムは次の属性を順番に検索します。
project_idgcp.project.idgcp.project_idgcp.dest_project_idgcp.resource.containerresource_containercloud.account.idcloud.account_id