Logging und Monitoring

Monitoring-Dashboards

Beispieldashboards für das Monitoring von Clustern und Knoten finden Sie im Management Center.

Tab: Monitoring

Mit der Schaltfläche Grafana Monitoring Dashboard wird die Grafana-Anwendung geöffnet, die im Administratorcluster gehostet wird. Der Grafana-Zugriff wird über das Management Center gesteuert. Wenn Sie im Management Center angemeldet sind, ist keine zusätzliche Anmeldung erforderlich.

Dashboards

Nach der Anmeldung ist eine Liste mit Beispiel-Dashboards verfügbar:

Grafana-Dashboards

Logs

Die Schaltfläche „Grafana Loki Logs“ öffnet die Grafana Explorer, in der Logs, einschließlich Kubernetes-Systemlogs, abgefragt werden können.

Labels werden den Logs hinzugefügt, die abgefragt werden sollen.

Loglabels

Logtyp Labels
Containerlogs
  • cluster=CLUSTER_NAME
  • resources=k8s_container
  • namespace=NAMESPACE_NAME
  • node=NODE_NAME
  • pod=POD_NAME
  • container=CONTAINER_NAME
  • Weitere Kubernetes-Labels
Knoten-Journald-Logs
  • cluster=CLUSTER_NAME
  • resources=k8s_node
  • node=NODE_NAME
  • identifier=SYSLOG_IDENTIFIER
  • machine=MACHINE_ID
Audit-Logs
  • cluster=CLUSTER_NAME
  • resource=k8s_audit
  • kind=KIND
  • apiVersion=API_VERSION
  • level=LEVEL
  • vert=VERB
  • requestURI=REQUEST_URI

Alle Kubernetes-Labels und das Label Cluster sind als Loglabels enthalten.

Beispielabfragen

  • Containerlogs

    {cluster="admin", namespace="kube-system", resources="k8s_container", container="kube-apiserver"}
    

    Grafana Query-Containerlogs

  • Knoten-Journald-Logs

    {cluster="admin", resources="k8s_node"}
    

    Grafana Query-Knotenlogs

  • Audit-Logs

    {cluster="admin", resources="k8s_audit"}
    

    Grafana Query-Audit-Logs

StorageClass konfigurieren

PersistentVolumeClaims sind erforderlich, um die Messwerte, Logs, Dashboards und Benachrichtigungen zu speichern. Wenn Sie einen Cluster erstellen, legt der Cluster automatisch eine benutzerdefinierte LogMon-Ressource an. Um die Standard-StorageClass zu überschreiben, führen Sie die folgenden Schritte aus:

  1. Führen Sie den folgenden Befehl aus, um Ihre benutzerdefinierte LogMon-Ressource in einem Befehlszeileneditor zu öffnen:

    kubectl --kubeconfig=ADMIN_OIDC_KUBECONFIG -n kube-system edit logmon logmon-default
    
  2. Aktualisieren Sie in der benutzerdefinierten Ressource LogMon den storageClassName unter dem Feld spec:

    apiVersion: addons.gke.io/v1alpha1
    kind: Logmon
    metadata:
      # Don't change the name
      name: logmon-default
      # Don't change the namespace
      namespace: kube-system
    spec:
      system_logs:
        outputs:
          default_loki:
            deployment:
              storageClassName: anthos-system # configure the new storage class here 
      system_metrics:
        outputs:
          default_prometheus:
            deployment:
              storageClassName: anthos-system # configure the new storage class here
    
  3. Um die Änderungen der benutzerdefinierten Ressource LogMon zu speichern, speichern Sie im Befehlszeileneditor und beenden Sie ihn.

Speichergröße konfigurieren

Wenn Sie einen Cluster erstellen, legt der Cluster automatisch eine benutzerdefinierte LogMon-Ressource an. Um die Speichergröße für Messwerte, Logs, Dashboards und Benachrichtigungen zu überschreiben, führen Sie die folgenden Schritte aus:

  1. Führen Sie den folgenden Befehl aus, um Ihre benutzerdefinierte LogMon-Ressource in einem Befehlszeileneditor zu öffnen:

    kubectl --kubeconfig=ADMIN_OIDC_KUBECONFIG -n kube-system edit logmon logmon-default
    
  2. Aktualisieren Sie in der benutzerdefinierten Ressource LogMon die storageSize unter dem Feld spec:

    apiVersion: addons.gke.io/v1alpha1
    kind: Logmon
    metadata:
      # Don't change the name
      name: logmon-default
      # Don't change the namespace
      namespace: kube-system
    spec:
      system_logs:
        outputs:
          default_loki:
            deployment:
              components:
                loki:
                   storageSize: 20Gi # configure the new storage size for logs here
      system_metrics:
        outputs:
          default_prometheus:
            deployment:
              components:
                alertmanager:
                   storageSize: 1Gi # configure the new storage size for alerts here
                grafana:
                   storageSize: 1Gi # configure the new storage size for dashboards here
                prometheus:
                   storageSize: 20Gi # configure the new storage size for metrics here
    ````
    
  3. Um die Änderungen der benutzerdefinierten Ressource LogMon zu speichern, speichern Sie im Befehlszeileneditor und beenden Sie ihn.

Aufbewahrungsdauer konfigurieren

Um die Aufbewahrungsdauer für Logs in den Prometheus- und Loki-Agents zu konfigurieren, die im Cluster ausgeführt werden, führen Sie die folgenden Schritte aus:

  1. Führen Sie den folgenden Befehl aus, um Ihre benutzerdefinierte LogMon-Ressource in einem Befehlszeileneditor zu öffnen:

    kubectl --kubeconfig=ADMIN_OIDC_KUBECONFIG -n kube-system edit logmon logmon-default
    
  2. Aktualisieren Sie in der benutzerdefinierten Ressource LogMon die retentionTime unter dem Feld spec:

    apiVersion: addons.gke.io/v1alpha1
    kind: Logmon
    metadata:
      # Don't change the name
      name: logmon-default
      # Don't change the namespace
      namespace: kube-system
    spec:
      system_logs:
        outputs:
          default_loki:
            deployment:
              retentionPolicy:
                retentionTime: 720h # configure the new retention time for logs here
      system_metrics:
        outputs:
          default_prometheus:
            deployment:
              retentionPolicy:
                retentionTime: 720h # configure the new retention time for metrics here
    
  3. Um die Änderungen der benutzerdefinierten Ressource LogMon zu speichern, speichern Sie im Befehlszeileneditor und beenden Sie ihn.

Zusätzliche Fluent-Bit-Ausgabe konfigurieren

Neben dem im Cluster ausgeführten Loki wird der Export von Logs an weitere Ziele unterstützt. Informationen dazu finden Sie unter Liste der unterstützten Ziele. Um das zusätzliche Logausgabeziel zu konfigurieren, führen Sie die folgenden Schritte aus:

  1. Erstellen Sie eine ConfigMap im Namespace kube-system mit dem Label logmon: system_logs. Die zusätzliche Ausgabekonfiguration hat die gleiche Syntax wie Fluent-Bit-Ausgabe-Plug-ins und muss der Datei output.conf unter dem Feld data hinzugefügt werden. Weitere Informationen finden Sie in den Beispielkonfigurationsdateien.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      # The name should match the configmap name specified in step 3.
      name: <customized-system-logs-fluent-bit-output-config>
      # Don't change the namespace
      namespace: kube-system
      labels:
        # This label is required.
        logmon: system_logs
    data:
      # The file name must be output.conf
      output.conf: |
        # Add a customized fluent-bit output plugin configuration here
    
  2. Führen Sie den folgenden Befehl aus, um Ihre benutzerdefinierte LogMon-Ressource in einem Befehlszeileneditor zu öffnen:

    kubectl --kubeconfig=ADMIN_OIDC_KUBECONFIG -n kube-system edit logmon logmon-default
    
  3. Fügen Sie in der benutzerdefinierten Ressource LogMon das Feld additionalOutput unter dem Feld spec/system_logs/outputs hinzu.

    apiVersion: addons.gke.io/v1alpha1
    kind: Logmon
    metadata:
      # Don't change the name
      name: logmon-default
      # Don't change the namespace
      namespace: kube-system
    spec:
      system_logs:
        outputs:
          additionalOutput:
            fluentbitConfigmaps:
            # The name should match the configmap name created in step 1.
            - "<customized-system-logs-fluent-bit-output-config>"
            # Scheme: []v1.VolumeMount. Add volumeMounts if necessary
            volumeMounts:
            - ...
            - ...
            # Scheme: []v1.Volume. Add volumes if necessary
            volumes:
            - ...
            - ...
    
  4. Um die Änderungen der benutzerdefinierten Ressource LogMon zu speichern, speichern Sie im Befehlszeileneditor und beenden Sie ihn.