이 문서에서는 Google Cloud Observability에서 Telemetry API로 수집되는 로그 데이터의
Logging 모니터링 리소스 유형을 결정하는 데 사용하는 규칙을 설명합니다. 모니터링 리소스는 로그 데이터의
소스를 설명하며 LogEntry에서 라벨을 사용하여 표시됩니다. Google Cloud Observability는 OTLP 리소스 속성을 사용하여 이러한 라벨의 값을 결정합니다.
OTLP 형식 로그 데이터의 일반 구조
로그 데이터가 Telemetry API를 사용하여 Google Cloud 로 전송될 때는 이 데이터가 OTLP와 일치하는 형식이어야 합니다. 이 데이터의 일반적인 구조는 다음과 같습니다.
"resourceLogs": [
{
"resource": {
"attributes": [...]
},
"scopeLogs": [
{
"logRecords": [...]
}
]
}
]
OpenTelemetry는 개별 로그를 일괄 처리합니다. 각 로그는 logRecord 구조로 표시되며, 이러한 로그의 소스에 대한 정보는 resource 구조로 표시됩니다.
Google Cloud Observability는 resourceLogs 객체를 수신하면 각 logRecord에 대해 하나의
LogEntry를 구성합니다. 개별 로그 모음과 함께 소스 정보를 일괄 처리하는 OTLP와 달리 각 LogEntry 구조에는 로그의 소스와 로그 자체에 대한 정보가 포함됩니다.
OTLP 형식 로그 데이터의 구조에 대한 자세한 내용은
OpenTelemetry logs.proto를 참고하세요.
리소스 감지기를 사용하여 OTLP 리소스 속성 설정 Google Cloud
OTLP 로그 데이터에서 OTLP 리소스 속성을 설정하려면 Google Cloud 리소스 감지기를 사용하세요. 이러한 감지기는 원격 분석의 소스를 설명하는 OTLP 리소스 속성을 원격 분석에 연결합니다.
수집기 기반 내보내기의 경우 수집기 프로세서의 일부로 리소스 감지를 구성합니다. 예를 들어 수집기에서 두 개의 리소스 감지기를 지정할 수 있습니다.
resourcedetection: detectors: ["env", "gcp"]다음 문서에서는 측정항목 또는 trace 데이터를 내보내는 수집기의 예를 제공합니다.
- 수집기 배포 및 사용: 측정항목 데이터를 Telemetry API로 전송하는 방법을 설명합니다.
- Google Kubernetes Engine에 Google 기반의 OpenTelemetry Collector 배포: Google Kubernetes Engine에서 실행할 때 로그, 측정항목, trace 데이터를 수집하는 방법을 설명합니다. 수집기는 trace 데이터를 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 필드와 하나 이상의 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