애플리케이션 모니터링을 위해 애플리케이션 계측

이 문서에서는 애플리케이션에서 생성하는 측정항목 및 trace 데이터에 애플리케이션별 라벨이 포함되도록 App Hub 애플리케이션을 구성하는 방법을 설명합니다. 또한 Google Kubernetes Engine에서 실행되는 HTTP 요청 워크로드의 트래픽 수준, 서버 오류율 또는 지연 시간을 보고하기 위해 애플리케이션 모니터링에 사용되는 측정항목을 애플리케이션에서 내보내는 방법도 설명합니다.

애플리케이션별 라벨 정보

애플리케이션별 라벨은 로그, 측정항목 또는 trace 데이터에 삽입되는 라벨 또는 속성을 의미합니다. 이러한 라벨은 데이터를 생성한 서비스 또는 워크로드를 식별합니다. 애플리케이션별 라벨은 다른 라벨과 마찬가지로 사용할 수 있습니다. 예를 들어 애플리케이션 ID로 데이터를 필터링할 수 있습니다. 지원되는 인프라에서 생성된 원격 분석에는 이러한 라벨이 자동으로 포함됩니다. 계측을 사용하면 애플리케이션에서 작성한 측정항목과 trace에 이러한 라벨이 포함될 수 있습니다.

이 섹션에서는 a.b.{x,y}a.b.xa.b.y로 해석합니다.

애플리케이션에 추가한 계측의 측정항목 데이터에는 다음 측정항목 라벨이 포함될 수 있습니다.

  • metric.labels.apphub_application_{container,id,location}
  • metric.labels.apphub_workload_{criticality_type,environment_type,id}

애플리케이션에 추가한 계측에서 생성된 trace 스팬에는 다음 리소스 속성이 포함될 수 있습니다.

  • 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에서 실행되는 애플리케이션의 워크로드로 생성된 측정항목 데이터에 애플리케이션 라벨을 연결하도록 하려면 다음을 수행하세요.

  1. OpenTelemetry를 사용하여 애플리케이션을 계측합니다.

  2. Google 기반의 Collector 또는 OpenTelemetry Collector를 배포하고 다음과 같이 Collector를 구성합니다.

    • googlemanagedprometheus 내보내기 도구를 사용하여 측정항목 데이터를 내보냅니다.
    • k8sattributes 프로세서가 환경에서 namespace와 같은 메타데이터를 추출하도록 구성합니다.
    • project_id, location, cluster, namespace 속성을 설정하도록 transform/collision 프로세서를 구성합니다.
    • top_level_controller_nametop_level_controller_type 라벨을 채우도록 transform/aco-gke 프로세서를 구성합니다.

    예를 들어 Google 기반 Collector의 구성 파일인 otlp-k8s-ingest/config/collector.yaml을 참조하세요. 이 Collector에 대해 자세히 알아보려면 GKE에 Google 기반 OpenTelemetry Collector 배포를 참조하세요.

  3. App Hub에 애플리케이션의 워크로드를 등록합니다.

GKE에서 Google Cloud Managed Service for Prometheus 사용

Google Cloud Observability가 Google Kubernetes Engine 클러스터에서 실행되는 애플리케이션의 워크로드로 생성된 측정항목 데이터에 애플리케이션 라벨을 연결하도록 하려면 다음을 수행하세요.

  1. 관리형 컬렉션이 포함된 Google Cloud Managed Service for Prometheus를 사용합니다.

  2. 버전이 1.32.1-gke.1439000 이상인 Google Kubernetes Engine 클러스터에 워크로드를 배포합니다.

  3. App Hub에 애플리케이션의 워크로드를 등록합니다.

Google Cloud Managed Service for Prometheus서비스 검색 메타데이터를 통해 애플리케이션 라벨 값을 검색한 다음 targetLabels.metadatatop_level_controller_{name,type} 라벨을 추가합니다. 측정항목 수집 중에 Google Cloud Observability는 top_level_controller_{name,type} 라벨과 App Hub API를 사용하여 App Hub 애플리케이션을 식별하고 측정항목 데이터에 적절한 라벨을 추가합니다.

Cloud Run 사용

Google Cloud Observability가 Cloud Run 워크로드로 생성된 측정항목 데이터에 애플리케이션 라벨을 연결하도록 하려면 다음 단계를 따르세요.

  1. OpenTelemetry 또는 Cloud Run용 Managed Service for Prometheus 사이드카를 사용하여 애플리케이션을 계측합니다. 이러한 방법에 대한 자세한 내용은 다음 문서를 참조하세요.

  2. App Hub에 애플리케이션의 워크로드를 등록합니다.

측정항목 라벨 확인

애플리케이션이 Prometheus 측정항목을 프로젝트로 전송하는지 확인하려면 다음 단계를 따르세요.

  1. 애플리케이션이 Prometheus 측정항목을 프로젝트로 전송하는지 확인합니다.
    1. Google Cloud 콘솔에서  측정항목 탐색기 페이지로 이동합니다.

      측정항목 탐색기로 이동

      검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Monitoring인 결과를 선택합니다.

    2. Google Cloud 콘솔의 툴바에서 Google Cloud 프로젝트를 선택합니다. App Hub 구성의 경우 App Hub 호스트 프로젝트나 앱 지원 폴더의 관리 프로젝트를 선택합니다.
    3. 측정항목 요소에서 측정항목 선택 메뉴를 펼치고 필터 표시줄에 Prometheus Target을 입력한 후 하위 메뉴를 사용하여 특정 리소스 유형과 측정항목을 선택합니다.
      1. 활성 리소스 메뉴에서 Prometheus 대상을 선택합니다.
      2. 측정항목을 선택하려면 활성 측정항목 카테고리활성 측정항목 메뉴를 사용합니다.
      3. 적용을 클릭합니다.
    4. 쿼리 결과에서 시계열을 삭제하는 필터를 추가하려면 필터 요소를 사용합니다.

    5. 데이터를 보는 방법을 구성합니다.

      라벨을 보려면 필터 메뉴를 펼칩니다. 필터의 각 항목은 라벨에 해당합니다.

      차트 구성에 대한 자세한 내용은 측정항목 탐색기 사용 시 측정항목 선택을 참조하세요.

    Prometheus 측정항목이 표시되지 않으면 구성을 검토합니다.

Prometheus 측정항목에 애플리케이션 라벨이 포함되지 않은 경우 다음 단계를 따르세요.

  1. App Hub에 워크로드 또는 서비스를 등록했는지 확인합니다.

  2. 로그를 검사하여 오류가 있는지 확인합니다.

    예를 들어 OpenTelemetry Collector 또는 Google 기반 Collector를 배포하고 Google Kubernetes Engine에서 실행하는 경우 다음을 수행할 수 있습니다.

    1. Google Cloud 콘솔에서 워크로드 페이지로 이동합니다.

      워크로드로 이동

      검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Kubernetes Engine인 결과를 선택합니다.

    2. 수집기 배포를 선택한 다음 로그 탭을 선택합니다.
  3. OpenTelemetry Collector 또는 Google 기반의 Collector를 사용하는 경우 Collector의 구성을 검토합니다. Collector는 다음을 수행해야 합니다.

    • googlemanagedprometheus 내보내기 도구를 사용하여 측정항목 데이터를 내보냅니다.
    • k8sattributes 프로세서가 환경에서 namespace와 같은 메타데이터를 추출하도록 구성합니다.
    • project_id, location, cluster, namespace 속성을 설정하도록 transform/collision 프로세서를 구성합니다.
    • top_level_controller_nametop_level_controller_type 라벨을 채우도록 transform/aco-gke 프로세서를 구성합니다.

    예시를 보려면 Google 기반 Collector 구성 파일(otlp-k8s-ingest/config/collector.yaml)을 참조하세요.

trace 스팬에 애플리케이션 속성 추가

Cloud Trace가 애플리케이션의 서비스 및 워크로드에서 생성된 trace 데이터에 애플리케이션별 리소스 속성을 연결하도록 하려면 다음 단계를 따르세요.

  1. App Hub에 서비스와 워크로드를 등록합니다.
  2. OpenTelemetry로 애플리케이션을 계측하고 Google Cloud OTLP 엔드포인트를 사용하여 애플리케이션에서 수집된 trace 데이터를 프로젝트로 전송합니다.
  3. 내보낸 스팬 데이터에 애플리케이션에서 사용하는 지원되는 Google Cloud 리소스를 식별하는 OpenTelemetry 리소스 속성이 포함되도록 OpenTelemetry Collector 또는 Google 기반 Collector를 구성합니다. 리소스 속성에는 다음이 포함되어야 합니다.

    • cloud.account.id
    • cloud.{availability_zone,region} 중 하나
    • 리소스별 속성. 예를 들어 Kubernetes 워크로드의 경우 스팬에 k8s.cluster.name, k8s.namespace, Kubernetes 배포 유형이 설정되어 있어야 합니다.

    프로세서를 사용하여 수집기가 리소스별 속성을 스팬에 연결하도록 합니다. 자세히 알아보려면 resourcedetectionprocessork8sattributesprocessor를 참조하세요.

    Google Cloud Observability는 앞의 리소스 속성과 App Hub API를 사용하여 App Hub 애플리케이션을 식별합니다. 애플리케이션이 식별되면 애플리케이션별 속성이 trace 데이터에 추가됩니다.

이러한 속성에 대한 자세한 내용은 Google Cloud App Hub 시맨틱 규칙을 참조하세요.