瞭解如何使用 Fluent Bit 設定將 主管 控制平面記錄轉送到外部監控系統 (如 Grafana Loki 或 Elastic Search)。

主管 控制平面記錄會自動轉送到使用 Fluent Bit 設定為 vCenter Server 應用裝置的 syslog 伺服器。Fluent Bit 是一種開放原始碼輕量型記錄和度量處理器和轉寄站,可提供組態以支援各種記錄資料類型、篩選和記錄標籤增強功能。

主管 啟用或升級期間,啟動載入記錄仍由 rsyslog 轉送到設定為 vCenter Server 應用裝置的 syslog 伺服器。主管 控制平面虛擬機器啟用並執行後,Fluent Bit 將成為 主管 控制平面記錄的預設記錄轉寄站。

身為 vSphere 管理員,您可以使用 Fluent Bit 來:

  • 主管 控制平面記錄和系統日誌記錄轉送到主要外部記錄監控平台,如 Loki、Elastic Search、Grafana 以及 Fluent Bit 支援的其他平台。

  • 使用 k8s API 更新或重設 主管 控制平面的記錄轉送組態。
Fluent Bit 在 主管 控制平面節點上做為 DeamonSet 執行。它在 vmware-system-logging 命名空間下公開了 fluentbit-config-custom,管理員可以編輯該命名空間,以透過定義記錄伺服器將記錄轉送設定到外部平台。
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 輸出,該輸出會將所有控制平面虛擬機器系統記錄轉送至外部伺服器。
    [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>

將 Kubernetes API 伺服器稽核記錄轉送到 Grafana Loki 伺服器

請遵循下列步驟來設定將記錄轉送到外部 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 輸出,該輸出會將所有控制平面虛擬機器系統記錄轉送到 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 輸出,該輸出會將所有控制平面虛擬機器系統記錄轉送到 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>

將 Kubernetes API 稽核記錄轉送到 Syslog 伺服器

請遵循下列步驟來設定將 Kubernetes API 稽核記錄轉送到外部 syslog 伺服器:

  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