Découvrez comment configurer le transfert de journaux de plan de contrôle Superviseur vers des systèmes de surveillance externes, tels que Grafana Loki ou Elastic Search, à l'aide de Fluent Bit.

Les journaux du plan de contrôle Superviseur sont automatiquement transférés au serveur Syslog configuré vers le dispositif vCenter Server à l'aide de Fluent Bit. Fluent Bit est un processeur et un redirecteur de journalisation et de mesures légers open source qui fournit des configurations pour prendre en charge divers types de données de journaux, le filtrage et les améliorations de balises de journaux.

Lors de l'activation ou de la mise à niveau de Superviseur, les journaux de démarrage sont toujours transférés par rsyslog aux serveurs Syslog configurés sur le dispositif vCenter Server. Une fois les machines virtuelles du plan de contrôle Superviseur en cours d'exécution, Fluent Bit devient le redirecteur de journaux par défaut pour les journaux du plan de contrôle Superviseur.

En tant qu'administrateur vSphere, vous pouvez utiliser Fluent Bit pour :

  • Transférer des journaux du plan de contrôle Superviseur et des journaux système vers les principales plates-formes de surveillance de journaux externes telles que Loki, Elastic Search, Grafana et d'autres plates-formes prises en charge par Fluent Bit.

  • Mettre à jour ou réinitialiser la configuration du transfert de journaux pour le plan de contrôle Superviseur à l'aide de l'API k8s.
Fluent Bit s'exécute en tant que DeamonSet sur les nœuds de plan de contrôle Superviseur. Il expose le ConfigMap fluentbit-config-custom sous l'espace de noms vmware-system-logging que les administrateurs vSphere peuvent modifier pour configurer le transfert de journaux vers des plates-formes externes en définissant des serveurs de journaux.
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

Personnaliser le transfert de journaux Fluent Bit

Suivez les étapes pour personnaliser la configuration du transfert de journaux Fluent Bit :

  1. Connectez-vous au plan de contrôle Superviseur en tant qu'administrateur vCenter Single Sign-On.
    > kubectl vsphere login --server=<supervisor-cluster-vip> -u [email protected]
    > kubectl config use-context <supervisor-cluster-vip>
  2. Mettez à jour ou ajoutez une sortie syslog dans la section outputs-custom.conf du ConfigMap fluentbit-config, qui transfère tous les journaux système de machine virtuelle du plan de contrôle vers un serveur externe.
    [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. Appliquez les modifications au ConfigMap fluentbit-config-custom.
    > 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. Surveillez l'espace Fluent Bit pour appliquer automatiquement les modifications de configuration et interrogez les journaux Superviseur sur le serveur Syslog. Si le DaemonSet Fluentbit s'exécute avec une erreur après le nouveau chargement de la configuration mise à jour, réparez ou réinitialisez la configuration dans le ConfigMap fluentbit-config-custom pour vous assurer que le DaemonSet Fluentbit est sain.

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

Transférer les journaux d'audit du serveur d'API Kubernetes vers un serveur Grafana Loki

Suivez les étapes pour configurer le transfert de journaux vers un serveur Grafana Loki externe :

  1. Connectez-vous au plan de contrôle Superviseur en tant qu'administrateur vCenter Single Sign-On.
    > kubectl vsphere login --server=<supervisor-cluster-vip> -u [email protected]
    > kubectl config use-context <supervisor-cluster-vip>
  2. Mettez à jour ou ajoutez une sortie Loki dans la section outputs-custom.conf du ConfigMap fluentbit-config-custom, qui transfère tous les journaux système de la machine virtuelle du plan de contrôle vers le serveur de journaux 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. Appliquez les modifications au ConfigMap fluentbit-config-custom.
    > 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. Surveillez l'espace Fluent Bit pour appliquer automatiquement les modifications de configuration et interrogez les journaux Superviseur sur le serveur Syslog. Si le DaemonSet Fluentbit s'exécute avec une erreur après le nouveau chargement de la configuration mise à jour, réparez ou réinitialisez la configuration dans le ConfigMap fluentbit-config-custom pour vous assurer que le DaemonSet Fluentbit est sain.

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

Transférer les journaux vers Elastic Search

Suivez les étapes pour configurer le transfert de journaux vers un serveur Elastic Search externe :
  1. Connectez-vous au plan de contrôle Superviseur en tant qu'administrateur vCenter Single Sign-On.
    > kubectl vsphere login --server=<supervisor-cluster-vip> -u [email protected]
    > kubectl config use-context <supervisor-cluster-vip>
  2. Mettez à jour ou ajoutez une sortie Elastic Search dans la section outputs-custom.conf du ConfigMap fluentbit-config-custom, qui transfère tous les journaux système de machine virtuelle du plan de contrôle au serveur journal ES.
    [OUTPUT]
           Name es
           Alias system_output_es
           Match system*
           Host <es-server-host>
           Port <es-server-port>
           Index supervisor
           Type controlplanevm
  3. Appliquez les modifications au ConfigMap fluentbit-config-custom.
    > 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. Surveillez l'espace Fluent Bit pour appliquer automatiquement les modifications de configuration et interrogez les journaux Superviseur sur le serveur Syslog.

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

Transférer les journaux d'audit de l'API Kubernetes vers un serveur Syslog

Suivez les étapes pour configurer le transfert des journaux d'audit de l'API Kubernetes vers un serveur Syslog externe :

  1. Ajoutez l'entrée kubectl-plugin-vsphere et 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. Ajoutez le filtre kubectl-plugin-vsphere et authproxy au ConfigMap fluentbit-config :
    [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. Ajoutez la sortie kubectl-plugin-vsphere au serveur syslog au ConfigMap fluentbit-config :
    [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. Incluez les fichiers ci-dessus dans le ConfigMap fluentbit-config sous l'espace de noms vmware-system-logging.
    > 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