7.2. LokiStack 인스턴스로 로그 전달


OpenTelemetry 수집기를 배포하여 로그를 LokiStack 인스턴스로 전달할 수 있습니다.

사전 요구 사항

  • Red Hat build of OpenTelemetry Operator가 설치되어 있습니다.
  • Loki Operator가 설치되어 있습니다.
  • 지원되는 LokiStack 인스턴스는 클러스터에 배포됩니다.

프로세스

  1. OpenTelemetry 수집기의 서비스 계정을 생성합니다.

    ServiceAccount 오브젝트의 예

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: otel-collector-deployment
      namespace: openshift-logging

  2. 수집기의 서비스 계정에 LokiStack 애플리케이션 테넌트로 로그를 내보낼 수 있는 권한을 부여하는 클러스터 역할을 생성합니다.

    ClusterRole 오브젝트의 예

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: otel-collector-logs-writer
    rules:
     - apiGroups: ["loki.grafana.com"]
       resourceNames: ["logs"]
       resources: ["application"]
       verbs: ["create"]
     - apiGroups: [""]
       resources: ["pods", "namespaces", "nodes"]
       verbs: ["get", "watch", "list"]
     - apiGroups: ["apps"]
       resources: ["replicasets"]
       verbs: ["get", "list", "watch"]
     - apiGroups: ["extensions"]
       resources: ["replicasets"]
       verbs: ["get", "list", "watch"]

  3. 클러스터 역할을 서비스 계정에 바인딩합니다.

    ClusterRoleBinding 오브젝트의 예

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: otel-collector-logs-writer
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: otel-collector-logs-writer
    subjects:
      - kind: ServiceAccount
        name: otel-collector-deployment
        namespace: openshift-logging

  4. OpenTelemetryCollector CR(사용자 정의 리소스) 오브젝트를 생성합니다.

    OpenTelemetryCollector CR 오브젝트의 예

    apiVersion: opentelemetry.io/v1beta1
    kind: OpenTelemetryCollector
    metadata:
      name: otel
      namespace: openshift-logging
    spec:
      serviceAccount: otel-collector-deployment
      config:
        extensions:
          bearertokenauth:
            filename: "/var/run/secrets/kubernetes.io/serviceaccount/token"
        receivers:
          otlp:
            protocols:
              grpc: {}
              http: {}
        processors:
          k8sattributes: {}
          resource:
            attributes: 1
              - key:  kubernetes.namespace_name
                from_attribute: k8s.namespace.name
                action: upsert
              - key:  kubernetes.pod_name
                from_attribute: k8s.pod.name
                action: upsert
              - key: kubernetes.container_name
                from_attribute: k8s.container.name
                action: upsert
              - key: log_type
                value: application
                action: upsert
          transform:
            log_statements:
              - context: log
                statements:
                  - set(attributes["level"], ConvertCase(severity_text, "lower"))
        exporters:
          otlphttp:
            endpoint: https://logging-loki-gateway-http.openshift-logging.svc.cluster.local:8080/api/logs/v1/application/otlp
            encoding: json
            tls:
              ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt"
            auth:
              authenticator: bearertokenauth
          debug:
            verbosity: detailed
        service:
          extensions: [bearertokenauth] 2
          pipelines:
            logs:
              receivers: [otlp]
              processors: [k8sattributes, transform, resource]
              exporters: [otlphttp] 3
            logs/test:
              receivers: [otlp]
              processors: []
              exporters: [debug]

    1
    웹 콘솔에서 사용할 다음 리소스 특성을 제공합니다. kubernetes.namespace_name,kubernetes.pod_name,kubernetes.container_name, log_type.
    2
    OTLP HTTP Exporter에 필요한 BearerTokenAuth 확장을 활성화합니다.
    3
    OTLP HTTP Exporter가 수집기에서 로그를 내보낼 수 있습니다.
작은 정보

Telemetrygen을 테스트로 배포할 수 있습니다.

apiVersion: batch/v1
kind: Job
metadata:
  name: telemetrygen
spec:
  template:
    spec:
      containers:
        - name: telemetrygen
          image: ghcr.io/open-telemetry/opentelemetry-collector-contrib/telemetrygen:v0.106.1
          args:
            - logs
            - --otlp-endpoint=otel-collector.openshift-logging.svc.cluster.local:4317
            - --otlp-insecure
            - --duration=180s
            - --workers=1
            - --logs=10
            - --otlp-attributes=k8s.container.name="telemetrygen"
      restartPolicy: Never
  backoffLimit: 4
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.