Logging e monitoraggio

Dashboard di Monitoring

Esempi di monitoraggio delle metriche relative a cluster e nodi sono disponibili nel Centro di gestione.

Scheda Monitoring

Il pulsante Grafana Monitoring Dashboard apre l'applicazione Grafana ospitata sul cluster di amministrazione. L'accesso a Grafana è controllato tramite il Centro di gestione. Se hai eseguito l'accesso al Centro di gestione, non è richiesto alcun accesso aggiuntivo.

Dashboard

Dopo l'accesso, è disponibile un elenco di dashboard di esempio a scopo dimostrativo:

Dashboard di Grafana

Log

Il pulsante "Log di Grazaana Loki" consente di aprire Grafana Explorer, dove è possibile eseguire query sui log di sistema di Kubernetes.

Le etichette vengono aggiunte ai log da interrogare.

Etichette di log

Tipo di log Etichette
Log dei container
  • cluster=CLUSTER_NAME
  • risorse=k8s_container
  • Spazio dei nomi=NAMESPACE_NAME
  • nodo=NODE_NAME
  • pod = POD_NAME
  • container=CONTAINER_NAME
  • Altre etichette Kubernetes
Log del journal di nodi
  • cluster=CLUSTER_NAME
  • risorse=nodo_k8s
  • nodo=NODE_NAME
  • identificatore=SYSLOG_IDENTIFIER
  • macchina=MACHINE_ID
Audit log
  • cluster=CLUSTER_NAME
  • risorsa=k8s_audit
  • tipo=KIND
  • apiVersion=API_VERSION
  • level=LEVEL
  • vert=VERB
  • requestURI=REQUEST_URI

Tutte le etichette Kubernetes e un'etichetta cluster sono incluse come etichette di log.

Query di esempio

  • Log dei container

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

    Log container Query Grafana

  • Log del journal di nodi

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

    Log dei nodi delle query Grafana

  • Audit log

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

    Audit log delle query Grafana

Configurazione di un oggetto StorageClass

PersistentVolumeClaims deve archiviare le metriche, i log, le dashboard e gli avvisi. Quando crei un cluster, il cluster crea automaticamente una risorsa personalizzata LogMon. Per sostituire l'impostazione predefinita StorageClass, completa i seguenti passaggi:

  1. Esegui questo comando per aprire la risorsa personalizzata LogMon in un editor della riga di comando:

    kubectl --kubeconfig=ADMIN_OIDC_KUBECONFIG -n kube-system edit logmon logmon-default
    
  2. Nella risorsa personalizzata LogMon, aggiorna storageClassName nel campo 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. Per salvare le modifiche apportate alla risorsa personalizzata LogMon, salva e esci dall'editor della riga di comando.

Configurazione delle dimensioni di archiviazione

Quando crei un cluster, il cluster crea automaticamente una risorsa personalizzata LogMon. Per eseguire l'override delle dimensioni di archiviazione per metriche, log, dashboard e avvisi, procedi come riportato di seguito:

  1. Esegui questo comando per aprire la risorsa personalizzata LogMon in un editor della riga di comando:

    kubectl --kubeconfig=ADMIN_OIDC_KUBECONFIG -n kube-system edit logmon logmon-default
    
  2. Nella risorsa personalizzata LogMon, aggiorna storageSize nel campo 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. Per salvare le modifiche apportate alla risorsa personalizzata LogMon, salva e esci dall'editor della riga di comando.

Configurazione del tempo di conservazione

Per configurare il tempo di conservazione per i log negli agenti Prometheus e Loki in esecuzione nel cluster, completa i passaggi seguenti:

  1. Esegui questo comando per aprire la risorsa personalizzata LogMon in un editor della riga di comando:

    kubectl --kubeconfig=ADMIN_OIDC_KUBECONFIG -n kube-system edit logmon logmon-default
    
  2. Nella risorsa personalizzata LogMon, aggiorna retentionTime nel campo 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. Per salvare le modifiche apportate alla risorsa personalizzata LogMon, salva e esci dall'editor della riga di comando.

Configurazione di un output aggiuntivo in modalità fluente

È supportata l'esportazione di log in altre destinazioni oltre al Loki in esecuzione nel cluster. Consulta l'elenco delle destinazioni supportate. Per configurare la destinazione di output dei log aggiuntivi, segui questi passaggi:

  1. Crea una configmap nello spazio dei nomi kube-system con l'etichetta logmon: system_logs. La configurazione dell'output aggiuntiva ha la stessa sintassi dei plug-in di output a bit fluente e deve essere aggiunta al file output.conf nel campo data. Consulta i file di configurazione di esempio.

    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. Esegui questo comando per aprire la risorsa personalizzata LogMon in un editor della riga di comando:

    kubectl --kubeconfig=ADMIN_OIDC_KUBECONFIG -n kube-system edit logmon logmon-default
    
  3. Nella risorsa personalizzata LogMon, aggiungi il campo additionalOutput sotto il campo spec/system_logs/outputs.

    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. Per salvare le modifiche apportate alla risorsa personalizzata LogMon, salva e esci dall'editor della riga di comando.