Auf dieser Seite wird gezeigt, wie Sie einen Nutzercluster für Anthos-Cluster auf VMware (GKE On-Prem) konfigurieren, sodass benutzerdefinierte Logs und Messwerte aus Nutzeranwendungen an Cloud Logging und Cloud Monitoring gesendet werden.
Logging und Monitoring für Nutzeranwendungen aktivieren
Die Konfiguration für Logging und Monitoring wird in einem Stackdriver-Objekt namens stackdriver
gespeichert.
Öffnen Sie das Objekt
stackdriver
zum Bearbeiten:kubectl --kubeconfig=USER_CLUSTER_KUBECONFIG --namespace kube-system edit stackdriver stackdriver
Ersetzen Sie USER_CLUSTER_KUBECONFIG durch den Pfad der kubeconfig-Datei des Nutzerclusters.
Legen Sie unter
spec
den WertenableStackdriverForApplications
auftrue
fest:apiVersion: addons.sigs.k8s.io/v1alpha1 kind: Stackdriver metadata: name: stackdriver namespace: kube-system spec: projectID: ... clusterName: ... clusterLocation: ... proxyConfigSecretName: ... enableStackdriverForApplications: true enableVPC: ... optimizedMetrics: true
Schließen Sie die bearbeitete Datei.
Arbeitslasten annotieren
Fügen Sie dem Service- oder Deployment-Manifest der Anwendung die Annotation prometheus.io/scrape: "true"
hinzu, um das Erfassen benutzerdefinierter Messwerte aus einer Anwendung zu aktivieren.
Um die automatische Speicherbereinigung von Messwerten zu vermeiden, empfehlen wir, das Extraktionsintervall für Messwerte auf eine Minute festzulegen.
Beispielanwendung ausführen
In diesem Abschnitt erstellen Sie eine Anwendung, die benutzerdefinierte Logs schreibt und einen benutzerdefinierten Messwert bereitstellt.
Speichern Sie die folgenden Dienst- und Deployment-Manifeste in einer Datei mit dem
my-app.yaml
-Namen. Der Dienst hat dieprometheus.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
Erstellen Sie das Deployment und den Dienst:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG apply -f my-app.yaml
Anwendungslogs ansehen
Console
Rufen Sie in der Google Cloud Console den Log-Explorer auf.
Klicken Sie auf Ressource. Wählen Sie unter ALL_RESOURCE_TYPES die Option
Kubernetes Container
aus.Wählen Sie unter CLUSTER_NAME den Namen Ihres Nutzerclusters aus.
Wählen Sie unter NAMESPACE_NAME die Option
default
aus.Klicken Sie auf Hinzufügen und dann auf Abfrage ausführen.
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
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 Logging-Monitoring-Projekts.
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 aufrufen
Ihre Beispielanwendung stellt einen benutzerdefinierten Messwert namens example_monitoring_up
bereit.
Die Werte dieses Messwerts finden Sie in der Google Cloud Console.
Rufen Sie in der Google Cloud Console den Metrics Explorer auf.
Wählen Sie
Kubernetes Pod
als Ressourcentyp aus.Wählen Sie
external/prometheus/example_monitoring_up
als Messwert aus.Im Diagramm sehen Sie, dass
example_monitoring_up
einen wiederkehrenden Wert von 1 hat.