• /
  • EnglishEspañol日本語한국어Português
  • 로그인지금 시작하기

사용자의 편의를 위해 제공되는 기계 번역입니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

OpenTelemetry 계측 애플리케이션을 Kubernetes에 연결

Kubernetes 에서 개발자 기능을 실행하는 경우 뉴렐릭을 사용하여 Kubernetes OpenTelemetry 제공하는 데 어떤 영향을 미치는지 이해할 수 있습니다.

아래 단계를 완료한 후 뉴렐릭 UI 사용하여 OpenTelemetry 의 작곡 수준 지표를 Kubernetes 통합 지표와 상호 연관시킬 수 있습니다. 이를 통해 텔레메트리 데이터의 전체 환경을 확인하고 팀 간 협업을MTTR Kubernetes 통해 환경의 문제에 대한 평균 해결 시간(MTTR)( )을 더 빠르게 달성할 수 있습니다.

데이터를 상호 연관시키는 방법

이 문서에서는 텔넷리 데이터에 고정 관련 데이터를 삽입할 수 있도록 설정하는 과정을 안내합니다. 그 결과 뉴렐릭 UI 실행 가능한 정보로 채워집니다. 시작하기 위해 취해야 할 단계는 다음과 같습니다.

시작하기 전에

아래 단계를 성공적으로 완료하려면 OpenTelemetry 및 Kubernetes에 대해 이미 잘 알고 있어야 하며 다음을 수행해야 합니다.

뉴렐릭에서 수집기를 사용하는 것에 대한 일반적인 질문이 있으면 뉴렐릭에서 OpenTelemetry 수집기 소개를 참조하세요.

원격 분석 데이터를 OpenTelemetry Collector로 보내도록 애플리케이션 구성

이를 설정하려면 Kubernetes YAML 파일의 env 섹션에 사용자 정의 스니펫을 추가해야 합니다. 아래 예는 샘플 프런트엔드 마이크로서비스(Frontend.yaml)에 대한 스니펫을 보여줍니다. 스니펫에는 다음을 수행하는 2개의 섹션이 포함되어 있습니다.

  • Section 1: 텔레메트리 데이터가 수집기로 전송되는지 확인합니다. 이렇게 하면 호스트 IP로 환경 변수 OTEL_EXPORTER_OTLP_ENDPOINT 이 설정됩니다. 이는 하향 API를 호출하여 호스트 IP를 가져와서 수행합니다.

  • Section 2: 인프라별 메타데이터를 첨부합니다. 이를 위해 하향 API를 사용하여 metadata.uid 캡처하고 이를 OTEL_RESOURCE_ATTRIBUTES 환경 변수에 추가합니다. 이 환경 변수는 OpenTelemetry 수집기의 resourcedetectionk8sattributes 프로세서에서 망원경 관련 컨텍스트를 추가로 추가하는 데 사용됩니다.

OpenTelemetry로 계측된 각 마이크로서비스에 대해 아래 강조표시된 줄을 매니페스트의 env 섹션에 추가하세요.

# Frontend.yaml
apiVersion: apps/v1
kind: Deployment
# ...
spec:
containers:
- name: yourfrontendservice
image: yourfrontendservice-beta
env:
# Section 1: Ensure that telemetry data is sent to the collector
- name: HOST_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
# This is picked up by the opentelemetry sdks
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: "http://$(HOST_IP):55680"
# Section 2: Attach infrastructure-specific metadata
# Get pod ip so that k8sattributes can tag resources
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_UID
valueFrom:
fieldRef:
fieldPath: metadata.uid
# This is picked up by the resource detector
- name: OTEL_RESOURCE_ATTRIBUTES
value: "service.instance.id=$(POD_NAME),k8s.pod.uid=$(POD_UID)"

OpenTelemetry 수집기 구성 및 구현, 배포

쿠버네티스 클러스터 내의 모든 노드에 수집기를 에이전트로 구현하고 배포하는 것이 좋습니다. 에이전트는 텔레메트리 데이터를 수신하고 메타데이터를 통해 텔레메트리 데이터를 강화할 수 있습니다. 예를 들어, 수집기는 프로세서를 통해 사용자 정의 속성이나 통계 정보를 추가할 수 있고, 클라이언트 시스템 수준에서 덜 효율적으로 처리되는 일괄 처리, 재시도, 압축 및 추가적인 고급 기능을 처리할 수 있습니다.

다음 옵션 중 하나를 선택하여 클러스터를 모니터링할 수 있습니다.

  • (권장) OpenTelemetry사용하여 쿠버네티스 클러스터를 설치합니다. 이 옵션은 에이전트로 수집기를 자동으로 구현합니다. 모든 것이 바로 Kubernetes APM 작동하며 텔레메트리와 Kubernetes UI에서 구성을 사용할 수 있습니다.

  • 수동 설정 및 배포: 수동으로 구성하려면 다음 단계를 따르세요.

    OTLP 내보내기 구성

    OpenTelemetry 수집기 설정 YAML 파일 에 OTLP 내보내기 도구를 추가하고 헤더로 뉴렐릭 을 추가합니다.

    exporters:
    otlp:
    endpoint: $OTEL_EXPORTER_OTLP_ENDPOINT
    headers: api-key: $NEW_RELIC_API_KEY

    배치 프로세서 구성

    배치 프로세서는 스팬, 메트릭 또는 로그를 수용하여 배치에 배치합니다. 이를 통해 데이터를 압축하고 수집기에서 나가는 요청을 줄이는 것이 더 쉬워집니다.

    processors:
    batch:

    리소스 감지 프로세서 구성

    resourcedetection 프로세서는 수집기를 통해 처리되는 텔레메트리 데이터에 추가적인 컨텍스트를 추가하기 위해 호스트별 정보를 가져옵니다. 이 예에서는 Google Kubernetes Engine(GKE)과 Google 컴퓨팅 Engine(GCE)을 사용하여 다음을 포함한 Google Cloud관련 항목을 가져옵니다.

    • cloud.provider ("gcp")

    • cloud.platform ("gcp_compute_engine")

    • cloud.account.id

    • cloud.region

    • cloud.availability_zone

    • host.id

    • host.image.id

    • host.type

      processors:
      resourcedetection:
      detectors: [gke, gce]

    Kubernetes 속성 프로세서 구성(일반)

    에이전트로 실행되는 OpenTelemetry Collector의 일부로 k8sattributes 프로세서를 실행하면 OpenTelemetry Collector 에이전트에 원격 측정 데이터를 보내는 Pod의 IP 주소를 감지하고 이를 사용하여 Pod 메타데이터를 추출합니다. 다음은 프로세서 섹션만 있는 기본 Kubernetes 매니페스트 예시입니다. OpenTelemetry Collector를 DaemonSet 로 배포하려면 이 포괄적인 매니페스트 예제를 읽어보세요.

    processors:
    k8sattributes:
    auth_type: "serviceAccount"
    passthrough: false
    filter:
    node_from_env_var: KUBE_NODE_NAME
    extract:
    metadata:
    - k8s.pod.name
    - k8s.pod.uid
    - k8s.deployment.name
    - k8s.cluster.name
    - k8s.namespace.name
    - k8s.node.name
    - k8s.pod.start_time
    pod_association:
    - from: resource_attribute
    name: k8s.pod.uid

    Kubernetes 속성 프로세서(RBAC) 구성

    역할 기반 액세스 제어(RBAC)에 대한 설정을 추가해야 합니다. k8sattributes 프로세서에는 구성된 필터에 포함된 파드 및 지우스페이스 리소스에 대한 get, watchlist 권한이 필요합니다. 이 예에서는 클러스터에 있는 모든 파드 및 지우스페이스에 대해 필요한 권한을 ServiceAccount 에 부여하기 위해 ClusterRole 에 대한 역할 기반 액세스 제어(RBAC)를 구성하는 방법을 보여줍니다.

    Kubernetes 속성 프로세서(검색 필터) 구성

    수집기를 에이전트로 실행하는 경우 검색 필터를 적용하여 프로세서가 실행 중인 호스트에서만 파일을 검색하도록 해야 합니다. 필터를 사용하지 않으면 특히 매우 큰 클러스터에서는 리소스 사용량이 불필요하게 높아질 수 있습니다. 필터가 적용되면, 각 프로세서는 자체 노드에서 실행되는 Kubernetes API 대해서만 쿼리를 실행합니다.

    필터를 설정하려면 하향 API 사용하여 OpenTelemetry 수집기 에이전트 설정 YAML 파일의 파드 env 섹션에 노드 이름을 환경 변수로 삽입합니다. 예를 보려면 GitHub의 otel-collector-config.yml 파일을 참조하세요. 그러면 OpenTelemetry 수집기 에이전트 컨테이너에 새로운 환경 변수가 주입됩니다. 값은 파드가 실행되도록 예약된 노드의 이름이 됩니다.

    spec:
    containers:
    - env:
    - name: KUBE_NODE_NAME
    valueFrom:
    fieldRef:
    apiVersion: v1
    fieldPath: spec.nodeName

    그런 다음 k8sattributes 을 사용하여 노드별로 필터링할 수 있습니다.

    k8sattributes:
    filter:
    node_from_env_var: KUBE_NODE_NAME

구성이 작동하는지 확인

OpenTelemetry 데이터를 Kubernetes 데이터와 성공적으로 연결한 후에는 설정이 작동하는지 확인할 수 있어야 합니다.

주의

Kubernetes 요약 페이지에는 뉴렐릭 에이전트 또는 OpenTelemetry 의 인력 모니터 데이터만 표시됩니다. 사용자 환경에서 여러 계측 공급자를 혼합하여 사용하는 경우 이 페이지에서 전체 데이터를 볼 수 없습니다.

  1. one.newrelic.com > All capabilities > APM & Services 으로 이동하여 Services - OpenTelemetry 내에서 애플리케이션을 선택합니다.

  2. 왼쪽 탐색 창에서 Kubernetes 클릭합니다.

This is an image of the Kubernetes APM page

Kubernetes 요약 페이지를 보려면 one.newrelic.com > All capabilities > APM & Services > (selected app) > Kubernetes 로 이동하세요.

다음 단계 선택

See our best practices guide

OpenTelemetry 및 뉴렐릭의 사용을 개선하는 방법을 알아보세요.

Check out this blog post

OpenTelemetry 트레이스, 메트릭 및 복제를 Kubernetes 성능 데이터와 연관시키세요.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.