8.3. Elasticsearch 로그 저장소로 JSON 로그 전달

Elasticsearch 로그 저장소의 경우 JSON 로그 항목이 다른 스키마를 따르는 경우 ClusterLogForwarder 사용자 정의 리소스(CR)를 구성하여 각 JSON 스키마를 단일 출력 정의로 그룹화합니다. 이렇게 하면 Elasticsearch는 각 스키마에 대해 별도의 인덱스를 사용합니다.

중요

동일한 인덱스로 다른 스키마를 전달하면 유형 충돌 및 카디널리티 문제가 발생할 수 있으므로 Elasticsearch 저장소로 데이터를 전달하기 전에 이 구성을 수행해야 합니다.

너무 많은 인덱스를 보유하는 것과 관련된 성능 문제를 방지하려면 공통 스키마로 표준화하여 가능한 스키마 수를 유지하는 것이 좋습니다.

절차

  1. 다음 조각을 ClusterLogForwarder CR YAML 파일에 추가합니다.

    outputDefaults:
     elasticsearch:
        structuredTypeKey: <log record field>
        structuredTypeName: <name>
    pipelines:
    - inputRefs:
      - application
      outputRefs: default
      parse: json
  2. 선택 사항: structuredTypeKey를 사용하여 이전 항목에 설명된 대로 로그 레코드 필드 중 하나를 지정하고 Elasticsearch에 대한 JSON 로그 데이터 구성을 지정합니다. 그렇지 않으면 다음 행을 제거합니다.
  3. 선택 사항: structuredTypeName을 사용하여 이전 항목에 설명된 대로 <name>을 지정하고 Elasticsearch에 대한 JSON 로그 데이터 구성을 지정합니다. 그렇지 않으면 다음 행을 제거합니다.

    중요

    JSON 로그를 구문 분석하려면 structuredTypeKey 또는 structuredTypeName, structuredTypeKeystructuredTypeName 모두를 설정해야 합니다.

  4. inputRefs의 경우 application, infrastructure, 또는 audit 등 해당 파이프라인을 사용하여 전달해야 하는 로그 유형을 지정합니다.
  5. parse: json 요소를 파이프라인에 추가합니다.
  6. CR 오브젝트를 생성합니다.

    $ oc create -f <file-name>.yaml

    Red Hat OpenShift Logging Operator는 Fluentd Pod를 재배포합니다. Pod가 재배포되지 않으면 Fluentd Pod를 삭제하여 강제로 재배포할 수 있습니다.

    $ oc delete pod --selector logging-infra=collector