10.2. 동일한 Pod의 컨테이너에서 JSON 로그를 별도의 인덱스로 전달

동일한 Pod 내의 여러 컨테이너에서 다른 인덱스로 구조화된 로그를 전달할 수 있습니다. 이 기능을 사용하려면 멀티컨테이너 지원을 사용하여 파이프라인을 구성하고 Pod에 주석을 달아야 합니다. 로그는 접두사 app- 가 있는 인덱스에 기록됩니다. 이를 수용하려면 Elasticsearch를 별칭으로 구성하는 것이 좋습니다.

중요

로그의 JSON 형식은 애플리케이션에 따라 다릅니다. 너무 많은 인덱스를 생성하면 성능에 영향을 미치므로 호환되지 않는 JSON 형식이 있는 로그에 대한 인덱스를 생성하기 위해 이 기능 사용을 제한합니다. 쿼리를 사용하여 다른 네임스페이스 또는 호환되는 JSON 형식의 로그를 분리합니다.

사전 요구 사항

  • logging subsystem for Red Hat OpenShift: 5.5

절차

  1. ClusterLogForwarder CR 오브젝트를 정의하는 YAML 파일을 생성하거나 편집합니다.

    apiVersion: "logging.openshift.io/v1"
    kind: ClusterLogForwarder
    metadata:
      name: instance
      namespace: openshift-logging
    spec:
      outputDefaults:
        elasticsearch:
          enableStructuredContainerLogs: true 1
      pipelines:
      - inputRefs:
        - application
        name: application-logs
        outputRefs:
        - default
        parse: json
    1
    멀티컨테이너 출력을 활성화합니다.
  2. Pod CR 오브젝트를 정의하는 YAML 파일을 생성하거나 편집합니다.

        apiVersion: v1
        kind: Pod
        metadata:
          annotations:
            containerType.logging.openshift.io/heavy: heavy 1
            containerType.logging.openshift.io/low: low
        spec:
          containers:
          - name: heavy 2
            image: heavyimage
          - name: low
            image: lowimage
    1
    Format: containerType.logging.openshift.io/<container-name>: <index>
    2
    주석 이름이 컨테이너 이름과 일치해야 함
주의

이 설정을 사용하면 클러스터의 shard 수가 크게 증가할 수 있습니다.

추가 리소스