Logs und Messwerte

Auf dieser Seite wird beschrieben, wie Google Distributed Cloud verschiedene Arten von Informationen zum Betrieb protokolliert und wie Sie diese Informationen aufrufen können. Für die Erhebung einiger Arten von Logs und Messwerten fallen zusätzliche Kosten an. Weitere Informationen finden Sie unter Abrechnung für Logs und Messwerte.

Logging und Monitoring konfigurieren

Bevor Sie mit dem Erfassen von Logs und Messwerten beginnen können, müssen Sie Folgendes tun:

  1. Aktivieren Sie die Logging APIs mit den folgenden Befehlen:

    gcloud services enable opsconfigmonitoring.googleapis.com --project PROJECT_ID
    gcloud services enable logging.googleapis.com --project PROJECT_ID
    gcloud services enable monitoring.googleapis.com --project PROJECT_ID
    

    Ersetzen Sie PROJECT_ID durch die ID des Zielprojekts Google Cloud .

  2. Weisen Sie die Rollen zu, die zum Schreiben von Logs und Messwerten erforderlich sind:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --role roles/opsconfigmonitoring.resourceMetadata.writer \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/metadata-agent]"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --role roles/logging.logWriter \
         --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/stackdriver-log-forwarder]"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --role roles/monitoring.metricWriter \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/gke-metrics-agent]"
    

    Ersetzen Sie PROJECT_ID durch die ID des Zielprojekts Google Cloud .

Logs

In diesem Abschnitt werden die von Distributed Cloud unterstützten Cloud Logging-Ressourcentypen aufgeführt. Verwenden Sie den Log-Explorer in der Google Cloud Console, um Distributed Cloud-Logs aufzurufen. Distributed Cloud-Logging ist immer aktiviert.

Die protokollierten Ressourcentypen von Distributed Cloud sind die folgenden Standard-Kubernetes-Ressourcen:

  • k8s_container
  • k8s_node

Sie können Distributed Cloud-Logs auch mit der Cloud Logging API erfassen und abrufen. Informationen zum Konfigurieren dieses Logging-Mechanismus finden Sie in der Dokumentation zu Cloud Logging-Clientbibliotheken.

Messwerte

In diesem Abschnitt werden die von Distributed Cloud unterstützten Cloud Monitoring-Messwerte aufgeführt. Verwenden Sie den Metrics Explorer in derGoogle Cloud Console, um Distributed Cloud-Messwerte aufzurufen.

Messwerte für Distributed Cloud-Cluster

Für Distributed Cloud-Cluster bietet Distributed Cloud die folgenden Arten von Messwerten, die von Distributed Cloud-Knoten generiert werden:

  • Ressourcenmesswerte enthalten Informationen zur Leistung von Distributed Cloud-Knoten und ‑Pods, z. B. zur CPU-Last und zur Arbeitsspeichernutzung.
  • Messwerte für Systemanwendungen enthalten Informationen zu Distributed Cloud-Systemarbeitslasten wie coredns.

Eine Liste dieser Messwerte finden Sie unter Google Distributed Cloud-Messwerte.

Distributed Cloud stellt keine Messwerte bereit, die von den Kubernetes-Steuerungsebenen generiert werden, die mit Distributed Cloud-Clustern verknüpft sind.

Messwerte für Distributed Cloud-Hardware

Distributed Cloud stellt Messwerte für Distributed Cloud-Hardware mit den folgenden Ressourcentypen bereit:

  • edgecontainer.googleapis.com/Machine
  • edgecontainer.googleapis.com/Rack

Machine Ressourcenmesswerte

Distributed Cloud schreibt die folgenden Cloud Monitoring API-Messwerte für die edgecontainer.googleapis.com/Machine-Ressource:

Messwert Beschreibung
/machine/cpu/total_cores
  • Art: GAUGE
  • Typ: INT
Gesamtzahl der physischen Prozessorkerne auf dem Computer.
/machine/cpu/usage_time
  • Art: CUMULATIVE
  • Typ: DOUBLE
  • Einheit: Seconds
Kumulative CPU-Nutzungszeit für alle Kerne auf dem Computer. Der Typ kann workload (Kundenarbeitslasten) oder system (alles andere) sein.
/machine/cpu/utilization
  • Art: GAUGE
  • Typ: DOUBLE
Prozentuale CPU-Auslastung auf dem Computer. Der Bereich liegt zwischen 0 und 1. Der Typ kann workload (Kundenarbeitslasten) oder system (alles andere) sein.
/machine/memory/total_bytes
  • Art: GAUGE
  • Typ: INT64
Byte-Anzahl des Gesamtspeichers auf dem Computer.
/machine/memory/used_bytes
  • Art: GAUGE
  • Typ: INT64
Anzahl der Byte des verwendeten Arbeitsspeichers auf dem Computer. memory_type ist entweder evictable (vom Kernel zurückforderbar) oder non-evictable (nicht zurückforderbar).
/machine/memory/utilization
  • Art: GAUGE
  • Typ: DOUBLE
Prozentuale Arbeitsspeichernutzung auf dem Computer. Der Bereich liegt zwischen 0 und 1. memory_type ist entweder evictable (vom Kernel zurückforderbar) oder non-evictable (nicht zurückforderbar).
/machine/network/up
  • Art: GAUGE
  • Typ: BOOL
Gibt an, ob die Netzwerkschnittstelle aktiv ist. Enthält primäre Karten, sekundäre Karten und Ports.
/machine/network/link_speed
  • Art: GAUGE
  • Typ: DOUBLE
  • Einheit: Byte pro Sekunde
Linkgeschwindigkeit der primären Netzwerkkarte.
/machine/network/received_bytes_count
  • Art: CUMULATIVE
  • Typ: DOUBLE
Anzahl der empfangenen Byte für die primäre Netzwerkkarte.
/machine/network/sent_bytes_count
  • Art: CUMULATIVE
  • Typ: DOUBLE
Anzahl der gesendeten Byte für die primäre Netzwerkkarte.
/machine/network/connectivity
  • Art: GAUGE
  • Typ: BOOL
Gibt an, ob die primäre Netzwerkschnittstellenkarte eine Internetverbindung hat.
/machine/disk/total_bytes
  • Art: GAUGE
  • Typ: INT64
Byte-Anzahl des gesamten Festplattenspeicherplatzes auf dem Computer.
/machine/disk/used_bytes
  • Art: GAUGE
  • Typ: INT64
Anzahl der Byte des verwendeten Speicherplatzes auf dem Computer.
/machine/disk/utilization
  • Art: GAUGE
  • Typ: DOUBLE
Prozentsatz der Speicherplatzauslastung auf dem Computer. Der Bereich liegt zwischen 0 und 1.
/machine/restart_count
  • Art: CUMULATIVE
  • Typ: INT
Anzahl der Neustarts des Geräts.
/machine/uptime
  • Art: GAUGE
  • Typ: INT
  • Einheit: Seconds
Betriebszeit des Geräts seit dem letzten Neustart.
/machine/connected
  • Art: GAUGE
  • Typ: INT64
Gibt an, ob der Computer mit Google Cloudverbunden ist.

Rack Ressourcenmesswerte

Distributed Cloud schreibt die folgenden Cloud Monitoring API-Messwerte für die edgecontainer.googleapis.com/Rack-Ressource:

Messwert Beschreibung
/router/bgp_up
  • Art: GAUGE
  • Typ: BOOL
Gibt an, ob die BGP-Peering-Sitzung auf dem Router aktiv und fehlerfrei ist. router_id gibt den jeweiligen Router an (bis zu 2 pro Rack).
/router/connected
  • Art: GAUGE
  • Typ: BOOL
Gibt an, ob der BGP-Router mit Google Cloudverbunden ist. router_id gibt den jeweiligen Router an (bis zu 2 pro Rack).

Benutzerdefinierte Anwendungslogs und ‑messwerte exportieren

Distributed Cloud exportiert automatisch Logs für Anwendungen, die auf Distributed Cloud-Arbeitslasten ausgeführt werden. Wenn Sie Messwerte für eine Anwendung exportieren möchten, die auf Distributed Cloud-Arbeitslasten ausgeführt wird, müssen Sie sie wie im nächsten Abschnitt beschrieben annotieren.

Arbeitslast annotieren, um den Export von Messwerten zu aktivieren

Fügen Sie dem Dienst- oder Bereitstellungsmanifest der Anwendung die folgenden Anmerkungen hinzu, um das Erfassen benutzerdefinierter Messwerte aus einer Anwendung zu aktivieren:

  • prometheus.io/scrape: "true"
  • prometheus.io/path: "ENDPOINT_PATH". Ersetzen Sie ENDPOINT_PATH durch den vollständigen Pfad zum Messwertendpunkt der Zielanwendung.
  • prometheus.io/port: "PORT_NUMBER": Der Port, an dem der Metrikendpunkt der Anwendung auf Verbindungen wartet.

Beispielanwendung ausführen

In diesem Abschnitt erstellen Sie eine Anwendung, die benutzerdefinierte Logs schreibt und einen benutzerdefinierten Messwertendpunkt bereitstellt.

  1. Speichern Sie die folgenden Dienst- und Deployment-Manifeste in einer Datei mit dem my-app.yaml-Namen. Der Dienst hat die prometheus.io/scrape: "true"-Annotation:

    kind: Service
    apiVersion: v1
    metadata:
      name: "monitoring-example"
      namespace: "default"
      annotations:
        prometheus.io/scrape: "true"
    spec:
      selector:
        app: "monitoring-example"
      ports:
        - name: http
          port: 9090
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: "monitoring-example"
      namespace: "default"
      labels:
        app: "monitoring-example"
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: "monitoring-example"
      template:
        metadata:
          labels:
            app: "monitoring-example"
        spec:
          containers:
          - image: gcr.io/google-samples/prometheus-dummy-exporter:latest
            name: prometheus-example-exporter
            imagePullPolicy: Always
            command:
            - /bin/sh
            - -c
            - ./prometheus-dummy-exporter --metric-name=example_monitoring_up --metric-value=1 --port=9090
            resources:
              requests:
                cpu: 100m
    
  2. Erstellen Sie das Deployment und den Dienst:

    kubectl --kubeconfig apply -f my-app.yaml

Anwendungslogs aufrufen.

Console

  1. Rufen Sie in der Console von Google Cloud die Seite Log-Explorer auf.

    Zum Log-Explorer

  2. Klicken Sie auf Ressource.

  3. Wählen Sie in der Liste Alle Ressourcentypen die Option Kubernetes Container aus.

  4. Wählen Sie unter Clustername den Namen Ihres Nutzerclusters aus.

  5. Wählen Sie bei Namespace-Name die Option default aus.

  6. Klicken Sie auf Hinzufügen und dann auf Abfrage ausführen.

  7. Im Abschnitt Abfrageergebnisse sehen Sie die Logeinträge des Deployments monitoring-example. Beispiel:

    {
      "textPayload": "2020/11/14 01:24:24 Starting to listen on :9090\n",
      "insertId": "1oa4vhg3qfxidt",
      "resource": {
        "type": "k8s_container",
        "labels": {
          "pod_name": "monitoring-example-7685d96496-xqfsf",
          "cluster_name": ...,
          "namespace_name": "default",
          "project_id": ...,
          "location": "us-west1",
          "container_name": "prometheus-example-exporter"
        }
      },
      "timestamp": "2020-11-14T01:24:24.358600252Z",
      "labels": {
        "k8s-pod/pod-template-hash": "7685d96496",
        "k8s-pod/app": "monitoring-example"
      },
      "logName": "projects/.../logs/stdout",
      "receiveTimestamp": "2020-11-14T01:24:39.562864735Z"
    }
    

gcloud

  1. Führen Sie den Befehl gcloud logging read aus:

    gcloud logging read 'resource.labels.project_id="PROJECT_ID" AND \
        resource.type="k8s_container" AND resource.labels.namespace_name="default"'

    Ersetzen Sie PROJECT_ID durch die ID Ihres Projekts.

  2. In der Ausgabe sehen Sie die Logeinträge des Deployments monitoring-example. Beispiel:

    insertId: 1oa4vhg3qfxidt
    labels:
      k8s-pod/app: monitoring-example
      k8s- pod/pod-template-hash: 7685d96496
    logName: projects/.../logs/stdout
    receiveTimestamp: '2020-11-14T01:24:39.562864735Z'
    resource:
      labels:
        cluster_name: ...
        container_name: prometheus-example-exporter
        location: us-west1
        namespace_name: default
        pod_name: monitoring-example-7685d96496-xqfsf
        project_id: ...
      type: k8s_container
    textPayload: |
      2020/11/14 01:24:24 Starting to listen on :9090
    timestamp: '2020-11-14T01:24:24.358600252Z'
    

Anwendungsmesswerte ansehen

Ihre Beispielanwendung stellt einen benutzerdefinierten Messwert namens example_monitoring_up bereit. Die Werte dieses Messwerts finden Sie in der Google Cloud Console.

  1. Wechseln Sie in der Google Cloud Console zur Seite Metrics Explorer.

    Zum Metrics Explorer

  2. Wählen Sie Kubernetes Pod als Ressourcentyp aus.

  3. Wählen Sie external/prometheus/example_monitoring_up als Messwert aus.

  4. Im Diagramm sehen Sie, dass example_monitoring_up einen wiederkehrenden Wert von 1 hat.

Nächste Schritte