Logging und Monitoring für Anwendungen aktivieren

Auf dieser Seite wird erläutert, wie Sie einen Cluster für Anthos-Cluster auf Bare-Metal konfigurieren, damit benutzerdefinierte Logs und Messwerte von Nutzeranwendungen an Cloud Logging und Cloud Monitoring gesendet werden.

Logging und Monitoring für Nutzeranwendungen aktivieren

Verwenden Sie das Feld spec.clusterOperations.enableApplication in der Cluster-Konfigurationsdatei, um Logging und Monitoring für Ihre Anwendungen zu aktivieren.

  1. Aktualisieren Sie die Cluster-Konfigurationsdatei, um enableApplication auf true festzulegen:

    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-user-basic
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: user-basic
      namespace: cluster-user-basic
    spec:
      type: user
      ...
      clusterOperations:
        projectID: project-fleet
        location: us-central1
        enableApplication: true
        ...
    
  2. Wenden Sie die Änderungen mit bmctl update an:

    bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=ADMIN_KUBECONFIG
    

    Dabei gilt:

    • CLUSTER_NAME: der Name des Clusters, der aktualisiert werden soll.
    • ADMIN_KUBECONFIG: der Pfad zur kubeconfig-Datei des Administratorclusters.

Arbeitslasten annotieren

Zum Aktivieren benutzerdefinierter Messwerte aus einer Anwendung fügen Sie dem Dienst- oder Pod-Manifest der Anwendung die Annotation prometheus.io/scrape: "true" hinzu. Alternativ können Sie die Annotation in den Abschnitt spec.template des Deployment- oder DaemonSet-Manifests einfügen, damit es an die Pods übergeben wird.

Beispielanwendung ausführen

In diesem Abschnitt erstellen Sie eine Anwendung, die benutzerdefinierte Logs schreibt und einen benutzerdefinierten Messwert 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 CLUSTER_KUBECONFIG apply -f my-app.yaml

Anwendungslogs aufrufen.

Console

  1. Rufen Sie in der Google Cloud Console den Log-Explorer auf.

    Zum Log-Explorer

  2. Klicken Sie auf Ressource. Wählen Sie unter ALL_RESOURCE_TYPES die Option Kubernetes Container aus.

  3. Wählen Sie unter CLUSTER_NAME den Namen Ihres Nutzerclusters aus.

  4. Wählen Sie unter NAMESPACE_NAME die Option default aus.

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

  6. Unter Abfrageergebnisse sehen Sie die Logeinträge des Deployment 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 folgenden Befehl 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 in der Google Cloud Console ansehen

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

  1. Rufen Sie in der Google Cloud Console den Metrics Explorer auf.

    Zum Metrics Explorer

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

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

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