11.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 수를 크게 늘릴 수 있습니다.

추가 리소스