containerd로 전환한 후 k8s의 Filebeat 구성

2424 단어 kubernetes
무시할 수 없습니다. dockershim(Kubernetes에서 Docker Runtime을 사용하기 위한 계층)will be removed starting 1.24 . 걱정하지 마세요. 매우 매끄럽게 변경되며 Docker로 빌드된 이미지는 여전히 완벽하게 작동합니다.

그러나 현재 클러스터 노드가 Docker Runtime을 통해 실행 중인 경우 Docker에 긴밀하게 하드코딩된 일부 구성이 있는 것이 확실합니다.

이 기사에서는 원래 Docker Runtime용으로 설정된 filebeat 구성과 중요한 로그를 계속 가져오기 위해 containerd로 전환한 후 수행해야 하는 작업에 중점을 둘 것입니다.

주요 단계는 filebeat 구성 파일을 업데이트하는 것입니다.
  • symlinks 옵션 활성화 중
  • 로그 파일의 경로 업데이트
  • dissectdrop_fields 프로세서를 함께 사용하여 필요한
  • 만 구문 분석하고 유지합니다.

    그런 다음 filebeat DaemonSet 정의의 volumeMounts 섹션을 업데이트합니다.
  • 각각의 기존 mountPath 또는 값이 /var/lib/docker/containers인 경로를 /var/log/containers로 변경해야 합니다.

  • 다음은 저에게 도움이 된 filebeat 구성 파일의 스니펫입니다. 어떤 식으로든 도움이 되었거나 개선을 위한 제안이 있는 경우 주저하지 말고 알려주십시오.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: filebeat-config
      namespace: kube-system
    data:
      filebeat.yml: |-
        setup.ilm.enabled: false
        filebeat.inputs:
        - type: log
          symlinks: true
          paths:
            - /var/log/containers/*.log
          processors:
            - add_kubernetes_metadata:
                host: ${NODE_NAME}
                in_cluster: true
                default_matchers.enabled: false
                matchers:
                - logs_path:
                    logs_path: /var/log/containers/
    
        processors:
          - add_cloud_metadata:
          - drop_event:
              when:
                equals:
                  kubernetes.namespace: "kube-system"
          - dissect:
              tokenizer: "%{timestamp} %{std} %{capital-letter} %{parsed-message}"
              field: "message"
              target_prefix: ""
          - decode_json_fields:
              fields: ["message","log","logs.log","parsed-message"]
              target: "logs"
              process_array: true
          - drop_fields:
              when:
                regexp:
                  message: "^{\""
              fields: ["message"]
              ignore_missing: true
          - drop_fields:
              fields: ["log.file.path","timestamp","std","capital-letter","parsed-message"]
              ignore_missing: true
    
    ...
    


    좋은 하루 되세요!

    좋은 웹페이지 즐겨찾기