4.9. systemd-journald 및 Fluentd 구성

Fluentd는 저널에서 읽고 저널 기본 설정이 매우 낮기 때문에 저널은 시스템 서비스의 로깅 속도를 유지할 수 없으므로 저널 항목이 손실될 수 있습니다.

저널이 항목을 손실하지 않도록 RateLimitIntervalSec=30sRateLimitBurst = 10000(또는 필요한 경우 더 높음)을 설정하는 것이 좋습니다.

4.9.1. OpenShift Logging을 위한 systemd-journald 구성

프로젝트를 확장할 때 기본 로깅 환경을 조정해야 할 수도 있습니다.

예를 들어, 로그가 누락된 경우 저널에 대한 비율 제한을 늘려야 할 수 있습니다. OpenShift Logging이 로그를 삭제하지 않고 과도한 리소스를 사용하지 않도록 지정된 기간 동안 보유할 메시지 수를 조정할 수 있습니다.

로그 압축 여부, 로그 보존 기간, 로그 저장 방법 또는 저장 여부 및 기타 설정을 확인할 수도 있습니다.

절차

  1. 필요한 설정과 함께 /etc/systemd/journald.conf 파일을 포함하는 Butane 구성 파일 40-worker-custom-journald.bu를 만듭니다.

    참고

    Butane에 대한 자세한 내용은 “Butane 을 사용하여 머신 구성 생성”을 참조하십시오.

    variant: openshift
    version: 4.8.0
    metadata:
      name: 40-worker-custom-journald
      labels:
        machineconfiguration.openshift.io/role: "worker"
    storage:
      files:
      - path: /etc/systemd/journald.conf
        mode: 0644 1
        overwrite: true
        contents:
          inline: |
            Compress=yes 2
            ForwardToConsole=no 3
            ForwardToSyslog=no
            MaxRetentionSec=1month 4
            RateLimitBurst=10000 5
            RateLimitIntervalSec=30s
            Storage=persistent 6
            SyncIntervalSec=1s 7
            SystemMaxUse=8G 8
            SystemKeepFree=20% 9
            SystemMaxFileSize=10M 10
    1
    journal.conf 파일에 대한 권한을 설정합니다. 0644 권한을 설정하는 것이 좋습니다.
    2
    로그를 파일 시스템에 쓰기 전에 압축할지 여부를 지정합니다. 메시지를 압축하려면 yes를 지정하고 압축하지 않으려면 no를 지정합니다. 기본값은 yes입니다.
    3
    로그 메시지를 전달할지 여부를 구성합니다. 각각에 대해 기본값은 no입니다. 다음을 지정합니다.
    • 시스템 콘솔에 로그를 전달하려면 ForwardToConsole을 지정합니다.
    • 로그를 커널 로그 버퍼로 전달하려면 ForwardToKsmg를 지정합니다.
    • syslog 데몬으로 전달하려면 ForwardToSyslog를 지정합니다.
    • 로그인한 모든 사용자에게 월(wall) 메시지로 메시지를 전달하려면 ForwardToWall을 지정합니다.
    4
    저널 항목을 저장할 최대 시간을 지정합니다. 초를 지정하려면 숫자를 입력합니다. 또는 "year", "month", "week", "day", "h"또는 "m"과 같은 단위를 포함합니다. 비활성화하려면 0을 입력합니다. 기본값은 1month입니다.
    5
    속도 제한을 구성합니다. RateLimitIntervalSec에서 정의한 시간 간격 동안 RateLimitBurst에 지정된 것보다 더 많은 로그를 수신하는 경우 간격이 끝날 때까지 간격 내의 모든 추가 메시지는 삭제됩니다. 기본값인 RateLimitIntervalSec=30sRateLimitBurst=10000을 설정하는 것이 좋습니다.
    6
    로그 저장 방법을 지정합니다. 기본값은 persistent입니다.
    • /var/log/journal/에서 메모리에 로그를 저장하기 위한 volatile입니다.
    • /var/log/journal/의 디스크에 로그를 저장하기 위한 persistent입니다. systemd는 디렉토리가 없는 경우 디렉토리를 생성합니다.
    • 디렉토리가 존재하는 경우 /var/log/journal/에 로그를 저장하기 위한 auto입니다. 존재하지 않는 경우 systemd는 /run/systemd/journal에 로그를 임시 저장합니다.
    • 로그를 저장하지 않는 none입니다. systemd는 모든 로그를 삭제합니다.
    7
    ERR, WARNING, NOTICE, INFODEBUG 로그에 대해 저널 파일을 디스크에 동기화하기 전에 제한 시간을 지정합니다. CRIT, ALERT 또는 EMERG 로그를 수신하면 systemd가 즉시 동기화됩니다. 기본값은 1s입니다.
    8
    저널이 사용할 수 있는 최대 크기를 지정합니다. 기본값은 8G 입니다.
    9
    시스템에서 사용 가능한 디스크 공간을 지정합니다. 기본값은 20%입니다.
    10
    /var/log/journal에 지속적으로 저장된 개별 저널 파일의 최대 크기를 지정합니다. 기본값은 10M입니다.
    참고

    속도 제한을 제거하는 경우 이전에 제한되었던 메시지를 처리할 때 시스템 로깅 데몬에서 CPU 사용률이 증가할 수 있습니다.

    시스템 설정에 대한 자세한 내용은 https://www.freedesktop.org/software/systemd/man/journald.conf.html을 참조하십시오. 해당 페이지에 나열된 기본 설정은 OpenShift Container Platform에 적용되지 않을 수 있습니다.

  2. Butane을 사용하여 노드로 전달할 구성이 포함된 MachineConfig 개체 파일 40-worker-custom-journald.yaml을 생성합니다.

    $ butane 40-worker-custom-journald.bu -o 40-worker-custom-journald.yaml
  3. 머신 구성을 적용합니다. 예를 들면 다음과 같습니다.

    $ oc apply -f 40-worker-custom-journald.yaml

    컨트롤러는 새로운 MachineConfig를 감지하고 새로운 rendered-worker-<hash> 버전을 생성합니다.

  4. 각 노드에 새로 렌더링된 구성의 롤아웃 상태를 모니터링합니다.

    $ oc describe machineconfigpool/worker

    출력 예

    Name:         worker
    Namespace:
    Labels:       machineconfiguration.openshift.io/mco-built-in=
    Annotations:  <none>
    API Version:  machineconfiguration.openshift.io/v1
    Kind:         MachineConfigPool
    
    ...
    
    Conditions:
      Message:
      Reason:                All nodes are updating to rendered-worker-913514517bcea7c93bd446f4830bc64e