7.8. 외부 Elasticsearch 인스턴스로 로그 전달

선택적으로 내부 OpenShift Container Platform Elasticsearch 인스턴스에 추가하거나 대신 외부 Elasticsearch 인스턴스에 로그를 전달할 수 있습니다. OpenShift Container Platform에서 로그 데이터를 수신하도록 외부 로그 집계기를 구성해야 합니다.

외부 Elasticsearch 인스턴스에 대한 로그 전달을 구성하려면 해당 인스턴스에 대한 출력과 출력을 사용하는 파이프라인이 있는 ClusterLogForwarder 사용자 정의 리소스(CR)를 생성해야 합니다. 외부 Elasticsearch 출력은 HTTP(비보안) 또는 HTTPS(보안 HTTP) 연결을 사용할 수 있습니다.

외부 및 내부 Elasticsearch 인스턴스 모두에 로그를 전달하려면 외부 인스턴스에 대한 출력 및 파이프라인과 default 출력을 사용하여 내부 인스턴스로 로그를 전달하는 파이프라인을 생성합니다. default 출력을 생성할 필요가 없습니다. default 출력을 구성하는 경우 default 출력이 Red Hat OpenShift Logging Operator용으로 예약되므로 오류 메시지가 나타납니다.

참고

내부 OpenShift Container Platform Elasticsearch 인스턴스에만 로그를 전달하려는 경우 ClusterLogForwarder CR을 생성할 필요가 없습니다.

사전 요구 사항

  • 지정된 프로토콜 또는 형식을 사용하여 로깅 데이터를 수신하도록 구성된 로깅 서버가 있어야 합니다.

절차

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

    apiVersion: "logging.openshift.io/v1"
    kind: ClusterLogForwarder
    metadata:
      name: instance 1
      namespace: openshift-logging 2
    spec:
      outputs:
       - name: elasticsearch-insecure 3
         type: "elasticsearch" 4
         url: http://elasticsearch.insecure.com:9200 5
       - name: elasticsearch-secure
         type: "elasticsearch"
         url: https://elasticsearch.secure.com:9200 6
         secret:
            name: es-secret 7
      pipelines:
       - name: application-logs 8
         inputRefs: 9
         - application
         - audit
         outputRefs:
         - elasticsearch-secure 10
         - default 11
         parse: json 12
         labels:
           myLabel: "myValue" 13
       - name: infrastructure-audit-logs 14
         inputRefs:
         - infrastructure
         outputRefs:
         - elasticsearch-insecure
         labels:
           logs: "audit-infra"
    1
    ClusterLogForwarder CR의 이름은 instance여야 합니다.
    2
    ClusterLogForwarder CR의 네임스페이스는 openshift-logging이어야 합니다.
    3
    출력 이름을 지정합니다.
    4
    elasticsearch 유형을 지정합니다.
    5
    외부 Elasticsearch 인스턴스의 URL과 포트를 유효한 절대 URL로 지정합니다. http(비보안) 또는 https(보안 HTTP) 프로토콜을 사용할 수 있습니다. CIDR 주석을 사용하는 클러스터 전체 프록시가 활성화된 경우 출력은 IP 주소가 아닌 서버 이름 또는 FQDN이어야 합니다.
    6
    보안 연결의 경우 secret을 지정하여 인증하는 https 또는 http URL을 지정할 수 있습니다.
    7
    https 접두사의 경우 TLS 통신의 엔드포인트에 필요한 보안 이름을 지정합니다. 시크릿은 openshift-logging 프로젝트에 있어야 하며 해당하는 각 인증서를 가리키는 tls.crt,tls.keyca-bundle.crt 키가 있어야 합니다. 그러지 않으면 httphttps 접두사의 경우 사용자 이름과 암호가 포함된 시크릿을 지정할 수 있습니다. 자세한 내용은 다음 "예: 사용자 이름과 암호가 포함된 시크릿 설정".
    8
    선택 사항: 파이프라인의 이름을 지정합니다.
    9
    파이프라인을 사용하여 전달할 로그 유형 (application, infrastructure, 또는 audit)을 지정합니다.
    10
    이 파이프라인으로 로그를 전달할 때 사용할 출력 이름을 지정합니다.
    11
    선택 사항: 로그를 내부 Elasticsearch 인스턴스로 보내려면 기본 출력을 지정합니다.
    12
    선택 사항: 구조화된 필드에서 JSON 오브젝트로 구조화된 JSON 로그 항목을 전달할지 여부를 지정합니다. 로그 항목에 유효한 구조화된 JSON이 포함되어야 합니다. 그렇지 않으면 OpenShift Logging이 structured 필드를 제거하고 대신 기본 인덱스인 app-00000x로 로그 항목을 보냅니다.
    13
    선택 사항: 문자열. 로그에 추가할 하나 이상의 레이블입니다.
    14
    선택 사항: 지원되는 유형의 다른 외부 로그 집계기로 로그를 전달하도록 다중 출력을 구성합니다.
    • 파이프라인을 설명하는 이름입니다.
    • inputRefs는 pipeline: application, infrastructure 또는 audit를 사용하여 전달할 로그 유형입니다.
    • outputRefs는 사용할 출력의 이름입니다.
    • 선택 사항: 문자열. 로그에 추가할 하나 이상의 레이블입니다.
  2. CR 오브젝트를 생성합니다.

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

예제: 사용자 이름 및 암호가 포함된 보안 설정

사용자 이름과 암호가 포함된 시크릿을 사용하여 외부 Elasticsearch 인스턴스에 대한 보안 연결을 인증할 수 있습니다.

예를 들어 타사가 Elasticsearch 인스턴스를 작동하기 때문에 상호 TLS(mTLS) 키를 사용할 수 없는 경우 HTTP 또는 HTTPS를 사용하고 사용자 이름과 암호가 포함된 시크릿을 설정할 수 있습니다.

  1. 다음 예와 유사한 Secret YAML 파일을 생성합니다. usernamepassword 필드에 base64로 인코딩된 값을 사용합니다. 기본적으로 secret 유형은 opaque입니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: openshift-test-secret
    data:
      username: dGVzdHVzZXJuYW1lCg==
      password: dGVzdHBhc3N3b3JkCg==
  2. 시크릿을 생성합니다.

    $ oc create secret -n openshift-logging openshift-test-secret.yaml
  3. ClusterLogForwarder CR에서 시크릿 이름을 지정합니다.

    kind: ClusterLogForwarder
    metadata:
      name: instance
      namespace: openshift-logging
    spec:
      outputs:
       - name: elasticsearch
         type: "elasticsearch"
         url: https://elasticsearch.secure.com:9200
         secret:
            name: openshift-test-secret
    참고

    url 필드의 값에서 접두사는 http 또는 https가 될 수 있습니다.

  4. CR 오브젝트를 생성합니다.

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