Fluent Bit를 사용하여 감독자 제어부 로그를 Grafana Loki 또는 Elastic Search와 같은 외부 모니터링 시스템으로 전달을 구성하는 방법을 확인합니다.

감독자 제어부 로그는 Fluent Bit를 사용하여 vCenter Server 장치에 구성된 Syslog 서버로 자동으로 전달됩니다. Fluent Bit는 다양한 로그 데이터 유형, 필터링 및 로그 태그 기능 향상을 지원하는 구성을 제공하는 오픈 소스 경량 로깅 및 메트릭 프로세서 및 전달자입니다.

감독자 활성화 또는 업그레이드 중에 부트스트랩 로그는 rsyslog를 통해 vCenter Server 장치에 구성된 Syslog 서버로 계속 전달됩니다. 감독자 제어부 VM이 가동되어 실행되면 Fluent Bit감독자 제어부 로그의 기본 로그 전달자가 됩니다.

vSphere 관리자는 다음에 Fluent Bit를 사용할 수 있습니다.

  • 감독자 제어부 로그 및 시스템 저널 로그를 Fluent Bit에서 지원되는 Loki, Elastic Search, Grafana 및 기타 플랫폼과 같은 주요 외부 로그 모니터링 플랫폼으로 전달합니다.

  • k8s API를 사용하여 감독자 제어부에 대한 로그 전달 구성을 업데이트하거나 재설정합니다.
Fluent Bit는 감독자 제어부 노드에서 DeamonSet로 실행됩니다. vSphere 관리자가 로그 서버를 정의하여 외부 플랫폼으로 로그 전달을 구성하도록 편집할 수 있는 vmware-system-logging 네임스페이스 아래에 fluentbit-config-custom ConfigMap을 노출합니다.
inputs-custom.conf: |
  [INPUT]
      Name              tail
      Alias             audit_apiserver_tail
      Tag               audit.apiserver.*
      Path              /var/log/vmware/audit/kube-apiserver.log
      DB                /var/log/vmware/fluentbit/flb_audit_apiserver.db
      Buffer_Max_Size   12MBb
      Mem_Buf_Limit     32MB
      Skip_Long_Lines   On
      Refresh_Interval  10
 
filters-custom.conf: |
  [FILTER]
      Name           record_modifier
      Alias          audit_apiserver_modifier
      Match          audit.apiserver.*
      Record         hostname ${NODE_NAME}
      Record         appname audit-kube-apiserver
      Record         filename kube-apiserver.log
 
outputs-custom.conf: |
  [OUTPUT]
     Name                 syslog
     Alias                audit_apiserver_output_syslog
     Match                audit.apiserver.*
     Host                 <syslog-server-host>
     Port                 <syslog-server-port>
     Mode                 tcp
     Syslog_Format        rfc5424
     Syslog_Message_key   log
     Syslog_Hostname_key  hostname
     Syslog_Appname_key   appname
     Syslog_Msgid_key     filename

Fluent Bit 로그 전달 사용자 지정

단계에 따라 Fluent Bit 로그 전달 구성을 사용자 지정합니다.

  1. 감독자 제어부에 vCenter Single Sign-On 관리자로 로그인합니다.
    > kubectl vsphere login --server=<supervisor-cluster-vip> -u [email protected]
    > kubectl config use-context <supervisor-cluster-vip>
  2. fluentbit-config-custom ConfigMap의 outputs-custom.conf 섹션에서 syslog 출력을 업데이트하거나 추가합니다. 그러면 모든 제어부 VM 시스템 로그가 외부 서버로 전달됩니다.
    [OUTPUT]
         Name                 syslog
         Alias                syslog_system
         Match                system*
         Host                 <syslog-server-host>
         Port                 <syslog-server-port>
         Mode                 tcp
         Syslog_Format        rfc5424
         Syslog_Message_key   log
         Syslog_Hostname_key  hostname
         Syslog_Appname_key   appname
         Syslog_Msgid_key     filename
         # add the following if the mode is TLS
         Tls                  on
         Tls.verify           off
         Tls.ca_file          /etc/ssl/certs/vmca.pem
  3. fluentbit-config-custom ConfigMap에 변경 내용을 적용합니다.
    > kubectl -n vmware-system-logging edit cm fluentbit-config-custom
     
    # use the below command if the change is stored in outputs-custom.conf file
    > kubectl -n vmware-system-logging create configmap fluentbit-config-custom --from-file=filters-custom.conf --from-file=inputs-custom.conf --from-file=outputs-custom.conf -o yaml --from-file=parsers-custom.conf --dry-run | kubectl replace -f -
    
  4. Fluent Bit 포드를 모니터링하여 구성 변경 내용을 자동으로 적용하고 Syslog 서버에서 감독자 로그를 쿼리합니다. 업데이트된 구성이 다시 로드된 후 Fluentbit DaemonSet가 오류로 실행되는 경우 fluentbit-config-custom ConfigMap의 구성을 복구하거나 재설정하여 Fluentbit DaemonSet가 정상 상태가 되도록 합니다.

    > kubectl -n vmware-system-logging get pod
    > kubectl -n vmware-system-logging logs <fluentbit-pod-name>

Grafana Loki 서버에 Kubernetes API 서버 감사 로그 전달

다음 단계에 따라 외부 Grafana Loki 서버로 로그 전달을 구성합니다.

  1. 감독자 제어부에 vCenter Single Sign-On 관리자로 로그인합니다.
    > kubectl vsphere login --server=<supervisor-cluster-vip> -u [email protected]
    > kubectl config use-context <supervisor-cluster-vip>
  2. fluentbit-config-custom ConfigMap의 outputs-custom.conf 섹션에서 Loki 출력을 업데이트하거나 추가합니다. 그러면 모든 제어부 VM 시스템 로그가 Loki 로그 서버로 전달됩니다.
    [OUTPUT]
            Name loki
            Alias system_output_loki
            Match system*
            Host <loki-server-host>
            Port <loki-server-port>
            Labels $hostname,$appname,$filename,$procid,$labels
  3. fluentbit-config-custom ConfigMap에 변경 내용을 적용합니다.
    > kubectl -n vmware-system-logging edit cm fluentbit-config-custom
     
    # use the below command if the change is stored in outputs-custom.conf file
    > kubectl -n vmware-system-logging create configmap fluentbit-config-custom --from-file=filters-custom.conf --from-file=inputs-custom.conf --from-file=outputs-custom.conf -o yaml --from-file=parsers-custom.conf --dry-run | kubectl replace -f -
    
  4. Fluent Bit 포드를 모니터링하여 구성 변경 내용을 자동으로 적용하고 Syslog 서버에서 감독자 로그를 쿼리합니다. 업데이트된 구성이 다시 로드된 후 Fluentbit DaemonSet가 오류로 실행되는 경우 fluentbit-config-custom ConfigMap의 구성을 복구하거나 재설정하여 Fluentbit DaemonSet가 정상 상태가 되도록 합니다.

    > kubectl -n vmware-system-logging get pod
    > kubectl -n vmware-system-logging logs <fluentbit-pod-name>

Elastic Search에 로그 전달

다음 단계에 따라 외부 Elastic Search 서버로 로그 전달을 구성합니다.
  1. 감독자 제어부에 vCenter Single Sign-On 관리자로 로그인합니다.
    > kubectl vsphere login --server=<supervisor-cluster-vip> -u [email protected]
    > kubectl config use-context <supervisor-cluster-vip>
  2. fluentbit-config-custom ConfigMap의 outputs-custom.conf 섹션에서 Elastic Search 출력을 업데이트하거나 추가합니다. 그러면 모든 제어부 VM 시스템 로그가 ES 로그 서버에 전달됩니다.
    [OUTPUT]
           Name es
           Alias system_output_es
           Match system*
           Host <es-server-host>
           Port <es-server-port>
           Index supervisor
           Type controlplanevm
  3. fluentbit-config-custom ConfigMap에 변경 내용을 적용합니다.
    > kubectl -n vmware-system-logging edit cm fluentbit-config-custom
     
    # use the below command if the change is stored in outputs-custom.conf file
    > kubectl -n vmware-system-logging create configmap fluentbit-config-custom --from-file=filters-custom.conf --from-file=inputs-custom.conf --from-file=outputs-custom.conf -o yaml --from-file=parsers-custom.conf --dry-run | kubectl replace -f -
    
  4. Fluent Bit 포드를 모니터링하여 구성 변경 내용을 자동으로 적용하고 Syslog 서버에서 감독자 로그를 쿼리합니다.

    > kubectl -n vmware-system-logging get pod
    > kubectl -n vmware-system-logging logs <fluentbit-pod-name>

Syslog 서버에 Kubernetes API 감사 로그 전달

다음 단계에 따라 외부 Syslog 서버로 Kubernetes API 감사 로그 전달을 구성합니다.

  1. kubectl-plugin-vsphereauthproxy 입력을 fluentbit-config ConfigMap에 추가합니다.
    [INPUT]
        Name              tail
        Tag               auth.kubectl-plugin.*
        Path              /var/log/containers/audit/kubectl-plugin-vsphere*.log
        DB                /var/log/vmware/fluentbit/flb_auth_kubectl-plugin.db
        Skip_Long_Lines   Off
        Refresh_Interval  10
     
    [INPUT]
        Name              tail
        Tag               auth.authproxy.*
        Path              /var/log/containers/audit/wcp-authproxy*.log
        DB                /var/log/vmware/fluentbit/flb_auth_authproxy.db
        Skip_Long_Lines   Off
        Refresh_Interval  10
  2. kubectl-plugin-vsphereauthproxy 필터를 fluentbit-config ConfigMap에 추가합니다.
    [FILTER]
        Name           kubernetes
        Match          auth.*
        Kube_URL       https://localhost:6443
        Tls.verify     Off
        K8S-Logging.Parser On
        K8S-Logging.Exclude On
     
    [FILTER]
        Name           record_modifier
        Match          auth.*
        Operation      lift
        Nested_under   kubernetes
     
    [FILTER]
        Name           modify
        Match          auth.*
        Rename         container_name appname
        Rename         host hostname
        Rename         pod_name procid
    
  3. Syslog 서버에 kubectl-plugin-vsphere 출력을 fluentbit-config ConfigMap에 추가합니다.
    [OUTPUT]
        Name                 syslog
        Match                auth.*
        Host                 <syslog-server-host>
        Port                 <syslog-server-port>
        Mode                 tcp
        Syslog_Format        rfc5424
        Syslog_Message_key   log
        Syslog_Hostname_key  hostname
        Syslog_Appname_key   appname
        Syslog_Msgid_key     filename
  4. 위의 파일을 vmware-system-logging 네임스페이스 아래의 fluentbit-config ConfigMap에 포함합니다.
    > k -n vmware-system-logging edit cm fluentbit-config
    > k -n vmware-system-logging rollout restart ds fluentbit
    > k -n vmware-system-logging rollout status ds fluentbit