검색

14.2. 콘텐츠로 로그 필터링

download PDF

클러스터에서 모든 로그를 수집하면 많은 양의 데이터가 생성될 수 있으며 전송 및 저장에는 비용이 많이 들 수 있습니다.

저장하지 않아도 되는 낮은 우선 순위 데이터를 필터링하여 로그 데이터의 볼륨을 줄일 수 있습니다. 로깅은 로그 데이터의 볼륨을 줄이는 데 사용할 수 있는 콘텐츠 필터를 제공합니다.

참고

콘텐츠 필터는 입력 선택기와 다릅니다. 입력 선택기는 소스 메타데이터를 기반으로 전체 로그 스트림을 선택하거나 무시합니다. 콘텐츠 필터는 로그 스트림을 편집하여 레코드 콘텐츠를 기반으로 레코드를 제거하고 수정합니다.

다음 방법 중 하나를 사용하여 로그 데이터 볼륨을 줄일 수 있습니다.

14.2.1. 원하지 않는 로그 레코드를 삭제하도록 콘텐츠 필터 구성

드롭 필터가 구성되면 로그 수집기는 전달 전에 필터에 따라 로그 스트림을 평가합니다. 수집기는 지정된 구성과 일치하는 원하지 않는 로그 레코드를 삭제합니다.

사전 요구 사항

  • Red Hat OpenShift Logging Operator가 설치되어 있습니다.
  • 관리자 권한이 있습니다.
  • ClusterLogForwarder CR(사용자 정의 리소스)을 생성했습니다.

절차

  1. ClusterLogForwarder CR의 필터 사양에 필터 구성을 추가합니다.

    다음 예제에서는 정규식을 기반으로 로그 레코드를 삭제하도록 ClusterLogForwarder CR을 구성하는 방법을 보여줍니다.

    ClusterLogForwarder CR의 예

    apiVersion: logging.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
    # ...
    spec:
      filters:
      - name: <filter_name>
        type: drop 1
        drop: 2
          test: 3
          - field: .kubernetes.labels."foo-bar/baz" 4
            matches: .+ 5
          - field: .kubernetes.pod_name
            notMatches: "my-pod" 6
      pipelines:
      - name: <pipeline_name> 7
        filterRefs: ["<filter_name>"]
    # ...

    1
    필터 유형을 지정합니다. drop 필터는 필터 구성과 일치하는 로그 레코드를 삭제합니다.
    2
    드롭 필터를 적용하기 위한 구성 옵션을 지정합니다.
    3
    로그 레코드 삭제 여부를 평가하는 데 사용되는 테스트에 대한 구성을 지정합니다.
    • 테스트에 지정된 모든 조건이 true이면 테스트가 통과되고 로그 레코드가 삭제됩니다.
    • drop 필터 구성에 대해 여러 테스트가 지정되면 테스트가 통과하면 레코드가 삭제됩니다.
    • 예를 들어 평가 중인 로그 레코드에서 필드가 누락되면 해당 조건이 false로 평가됩니다.
    4
    로그 레코드의 필드 경로인 점으로 구분된 필드 경로를 지정합니다. 경로에는 alpha-numeric 문자 및 밑줄(a-zA-Z0-9_)을 포함할 수 있습니다(예: .kubernetes.namespace_name ). 세그먼트에 이 범위를 벗어나는 문자가 포함된 경우 세그먼트는 따옴표로 묶어야 합니다(예: .kubernetes.labels."foo.bar-bar/baz". 단일 테스트 구성에 여러 필드 경로를 포함할 수 있지만 테스트가 통과하고 drop 필터를 적용하려면 모두 true로 평가되어야 합니다.
    5
    정규식을 지정합니다. 로그 레코드가 이 정규식과 일치하는 경우 해당 레코드가 삭제됩니다. 단일 필드 경로에 대해 matches 또는 notMatches 조건을 설정할 수 있지만 둘 다 설정할 수는 없습니다.
    6
    정규식을 지정합니다. 로그 레코드가 이 정규식과 일치하지 않으면 삭제됩니다. 단일 필드 경로에 대해 matches 또는 notMatches 조건을 설정할 수 있지만 둘 다 설정할 수는 없습니다.
    7
    drop 필터가 적용되는 파이프라인을 지정합니다.
  2. 다음 명령을 실행하여 ClusterLogForwarder CR을 적용합니다.

    $ oc apply -f <filename>.yaml

추가 예

다음 추가 예제에서는 우선 순위가 높은 로그 레코드만 유지하도록 drop 필터를 구성하는 방법을 보여줍니다.

apiVersion: logging.openshift.io/v1
kind: ClusterLogForwarder
metadata:
# ...
spec:
  filters:
  - name: important
    type: drop
    drop:
      test:
      - field: .message
        notMatches: "(?i)critical|error"
      - field: .level
        matches: "info|warning"
# ...

단일 테스트 구성에 여러 필드 경로를 포함하는 것 외에도 또는 검사로 처리되는 추가 테스트를 포함할 수도 있습니다. 다음 예에서는 테스트 구성이 true로 평가되면 레코드가 삭제됩니다. 그러나 두 번째 테스트 구성의 경우 두 필드 사양을 모두 true로 평가하려면 모두 true여야 합니다.

apiVersion: logging.openshift.io/v1
kind: ClusterLogForwarder
metadata:
# ...
spec:
  filters:
  - name: important
    type: drop
    drop:
      test:
      - field: .kubernetes.namespace_name
        matches: "^open"
      test:
      - field: .log_type
        matches: "application"
      - field: .kubernetes.pod_name
        notMatches: "my-pod"
# ...

14.2.2. 로그 레코드를 정리하도록 콘텐츠 필터 구성

정리 필터가 구성되면 로그 수집기는 전달 전에 필터에 따라 로그 스트림을 평가합니다. 수집기는 Pod 주석과 같은 낮은 값 필드를 제거하여 로그 레코드를 정리합니다.

사전 요구 사항

  • Red Hat OpenShift Logging Operator가 설치되어 있습니다.
  • 관리자 권한이 있습니다.
  • ClusterLogForwarder CR(사용자 정의 리소스)을 생성했습니다.

절차

  1. ClusterLogForwarder CR의 prune 사양에 필터 구성을 추가합니다.

    다음 예제에서는 필드 경로를 기반으로 로그 레코드를 정리하도록 ClusterLogForwarder CR을 구성하는 방법을 보여줍니다.

    중요

    둘 다 지정된 경우 먼저 notIn 배열에 따라 레코드가 정리되며, 이 경우 in 배열보다 우선합니다. notIn 배열을 사용하여 레코드를 정리하면 in 배열을 사용하여 정리됩니다.

    ClusterLogForwarder CR의 예

    apiVersion: logging.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
    # ...
    spec:
      filters:
      - name: <filter_name>
        type: prune 1
        prune: 2
          in: [.kubernetes.annotations, .kubernetes.namespace_id] 3
          notIn: [.kubernetes,.log_type,.message,."@timestamp"] 4
      pipelines:
      - name: <pipeline_name> 5
        filterRefs: ["<filter_name>"]
    # ...

    1
    필터 유형을 지정합니다. prune 필터는 구성된 필드를 통해 로그 레코드를 정리합니다.
    2
    prune 필터를 적용하기 위한 구성 옵션을 지정합니다. innotIn 필드는 로그 레코드의 필드 경로의 경로인 점으로 구분된 필드 경로의 배열로 지정됩니다. 이러한 경로에는 alpha-numeric 문자 및 밑줄(a-zA-Z0-9_)을 포함할 수 있습니다(예: .kubernetes.namespace_name ). 세그먼트에 이 범위를 벗어나는 문자가 포함된 경우 세그먼트는 따옴표로 묶어야 합니다(예: .kubernetes.labels."foo.bar-bar/baz".
    3
    선택 사항: 이 배열에 지정된 모든 필드는 로그 레코드에서 제거됩니다.
    4
    선택 사항: 이 배열에 지정되지 않은 모든 필드는 로그 레코드에서 제거됩니다.
    5
    prune 필터가 적용되는 파이프라인을 지정합니다.
  2. 다음 명령을 실행하여 ClusterLogForwarder CR을 적용합니다.

    $ oc apply -f <filename>.yaml

14.2.3. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.