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 ConfigMap が公開されます。vSphere 管理者はそれを編集し、ログ サーバを定義して、外部プラットフォームへのログ転送を構成できます。
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 出力を更新または追加します。これにより、すべての制御プレーン仮想マシン システム ログが Elastic Search ログ サーバに転送されるようになります。
    [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-vsphere および authproxy 入力を 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-vsphere および authproxy フィルタを 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