Questa pagina mostra come configurare un cluster per Cluster Anthos on bare metal in modo che i log e le metriche personalizzati delle applicazioni utente vengano inviati a Cloud Logging, Cloud Monitoring e Managed Service per Prometheus.
Abilita Managed Service for Prometheus
La configurazione per Managed Service per Prometheus è specificata in un oggetto Stackdriver
denominato stackdriver
. Per ulteriori informazioni, tra cui le best practice e la risoluzione dei problemi, consulta la documentazione di Managed Service per Prometheus.
Per configurare l'oggetto stackdriver
per abilitare Google Cloud Managed Service per Prometheus:
Apri l'oggetto stackdriver per la modifica:
kubectl --kubeconfig=CLUSTER_KUBECONFIG \ --namespace kube-system edit stackdriver stackdriver
Sostituisci
CLUSTER_KUBECONFIG
con il percorso del file kubeconfig del cluster.In
spec
, impostaenableGMPForApplications
sutrue
:apiVersion: addons.sigs.k8s.io/v1alpha1 kind: Stackdriver metadata: name: stackdriver namespace: kube-system spec: projectID: ... clusterName: ... clusterLocation: ... proxyConfigSecretName: ... enableGMPForApplications: true enableVPC: ... optimizedMetrics: true
Salva e chiudi il file modificato.
I componenti di Prometheus gestiti da Google vengono avviati automaticamente nel cluster nello spazio dei nomi
gmp-system
.Verifica i componenti di Prometheus gestiti da Google:
kubectl --kubeconfig=CLUSTER_KUBECONFIG --namespace gmp-system get pods
L'output di questo comando è simile al seguente:
NAME READY STATUS RESTARTS AGE collector-abcde 2/2 Running 1 (5d18h ago) 5d18h collector-fghij 2/2 Running 1 (5d18h ago) 5d18h collector-klmno 2/2 Running 1 (5d18h ago) 5d18h gmp-operator-68d49656fc-abcde 1/1 Running 0 5d18h rule-evaluator-7c686485fc-fghij 2/2 Running 1 (5d18h ago) 5d18h
Managed Service per Prometheus supporta la valutazione e gli avvisi delle regole. Per configurare la valutazione delle regole, consulta Valutazione delle regole.
Esegui un'applicazione di esempio
Il servizio gestito fornisce un manifest per un'applicazione di esempio prom-example
che emette metriche di Prometheus nella porta metrics
. L'applicazione utilizza tre repliche.
Per eseguire il deployment dell'applicazione:
Crea lo spazio dei nomi
gmp-test
per le risorse che crei nell'ambito dell'applicazione di esempio:kubectl --kubeconfig=CLUSTER_KUBECONFIG create ns gmp-test
Applica il manifest dell'applicazione con il seguente comando:
kubectl -n gmp-test apply \ -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.4.1/examples/example-app.yaml
Configura una risorsa PodMonitoring
In questa sezione configurerai una risorsa personalizzata PodMonitoring
per acquisire i dati delle metriche emessi dall'applicazione di esempio e inviarli a Managed Service per Prometheus. La risorsa personalizzata PodMonitoring
utilizza lo scraping di destinazione. In questo caso, gli agenti di raccoglitore acquisiscono l'endpoint /metrics
a cui l'applicazione di esempio emette i dati.
Una risorsa personalizzata PodMonitoring
esegue il scraping delle destinazioni nello spazio dei nomi in cui viene eseguito il deployment. Per eseguire il scraping delle destinazioni in più spazi dei nomi, esegui il deployment della stessa risorsa personalizzata PodMonitoring
in ogni spazio dei nomi. Per verificare che la risorsa PodMonitoring
sia installata nello spazio dei nomi previsto, esegui questo comando:
kubectl --kubeconfig CLUSTER_KUBECONFIG get podmonitoring -A
Per la documentazione di riferimento su tutte le risorse personalizzate di Managed Service per Prometheus, consulta la documentazione di riferimento di Prometheus-engine/doc/api.
Il file manifest seguente definisce una risorsa PodMonitoring
, prom-example
, nello spazio dei nomi gmp-test
. La risorsa trova tutti i pod nello spazio dei nomi con l'etichetta app
con valore prom-example
. I pod corrispondenti vengono criptati su una porta denominata metrics
, ogni 30 secondi, nel percorso HTTP /metrics
.
apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
name: prom-example
spec:
selector:
matchLabels:
app: prom-example
endpoints:
- port: metrics
interval: 30s
Per applicare questa risorsa, esegui il comando seguente:
kubectl --kubeconfig CLUSTER_KUBECONFIG -n gmp-test apply \
-f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.4.1/examples/pod-monitoring.yaml
Managed Service per Prometheus sta eseguendo lo scraping dei pod corrispondenti.
Dati sulle metriche delle query
Il modo più semplice per verificare l'esportazione dei dati Prometheus è utilizzare la pagina Managed Service per Prometheus basato su PromQL nella console Google Cloud.
Per visualizzare questa pagina:
Nella console Google Cloud, vai alla pagina Monitoring o fai clic sul pulsante seguente:
Nel riquadro di navigazione di Monitoring, fai clic su Prometheus gestito.
Nella pagina Managed Service per Prometheus puoi utilizzare le query PromQL per recuperare e registrare i dati raccolti con il servizio gestito. Questa pagina può eseguire query solo sui dati raccolti da Managed Service per Prometheus.
Il seguente screenshot mostra un grafico che mostra la metrica up
:
Se raccogli grandi quantità di dati, puoi filtrare le metriche esportate per ridurre i costi.
Abilita Cloud Logging per le applicazioni utente
La configurazione per Cloud Logging e Cloud Monitoring si trova in un oggetto Stackdriver denominato stackdriver
.
Apri l'oggetto stackdriver per la modifica:
kubectl --kubeconfig=CLUSTER_KUBECONFIG \ --namespace kube-system edit stackdriver stackdriver
Sostituisci
CLUSTER_KUBECONFIG
con il percorso del file kubeconfig del cluster utente.Nella sezione
spec
, impostaenableCloudLoggingForApplications
sutrue
:apiVersion: addons.sigs.k8s.io/v1alpha1 kind: Stackdriver metadata: name: stackdriver namespace: kube-system spec: projectID: ... clusterName: ... clusterLocation: ... proxyConfigSecretName: ... enableCloudLoggingForApplications: true enableVPC: ... optimizedMetrics: true
Salva e chiudi il file modificato.
Esegui un'applicazione di esempio
In questa sezione creerai un'applicazione che scrive log personalizzati.
Salva i seguenti manifest di deployment in un file denominato
my-app.yaml
.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
Crea il deployment
kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f my-app.yaml
Visualizza log applicazione
Console
Vai a Esplora log nella console Google Cloud.
Fai clic su Risorsa. Nel menu TUTTI I TIPI DI RISORSE, seleziona Container Kubernetes.
In CLUSTER_NAME, seleziona il nome del tuo cluster utente.
In NAMESPACE_NAME, seleziona default.
Fai clic su Aggiungi e poi su Esegui query.
In Risultati delle query, puoi vedere le voci di log del deployment
monitoring-example
. Ad esempio:{ "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" }
Interfaccia a riga di comando gcloud
Esegui questo comando:
gcloud logging read 'resource.labels.project_id="PROJECT_ID" AND \ resource.type="k8s_container" AND resource.labels.namespace_name="default"'
Sostituisci
PROJECT_ID
con l'ID del tuo progetto.Nell'output puoi vedere le voci di log del deployment
monitoring-example
. Ad esempio: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'
Abilita Logging e Monitoring per le applicazioni utente (legacy)
Per abilitare Logging e Monitoring per le tue applicazioni, utilizza il campo spec.clusterOperations.enableApplication
nel file di configurazione del cluster.
Aggiorna il file di configurazione del cluster per impostare
enableApplication
sutrue
: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 ...
Utilizza
bmctl update
per applicare le modifiche:bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=ADMIN_KUBECONFIG
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster di cui eseguire l'upgrade.ADMIN_KUBECONFIG
: il percorso del file kubeconfig del cluster di amministrazione.
Annota i carichi di lavoro
Per abilitare la raccolta di metriche personalizzate da un'applicazione, aggiungi l'annotazione prometheus.io/scrape: "true"
al manifest del servizio o del pod dell'applicazione oppure aggiungi la stessa annotazione alla sezione spec.template
nel manifest del deployment o del DaemonSet per poterla trasmettere ai loro pod.
Esegui un'applicazione di esempio
In questa sezione, creerai un'applicazione che scrive log personalizzati ed espone una metrica personalizzata.
Salva i seguenti manifest di servizio e deployment in un file denominato
my-app.yaml
. Nota che il servizio ha l'annotazioneprometheus.io/scrape: "true"
: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
Crea il deployment e il servizio:
kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f my-app.yaml
Visualizza log applicazione
Console
Vai a Esplora log nella console Google Cloud.
Fai clic su Risorsa. In TUTTI I TIPI DI RISORSE, seleziona Container Kubernetes.
In CLUSTER_NAME, seleziona il nome del tuo cluster utente.
In NAMESPACE_NAME, seleziona default.
Fai clic su Aggiungi e poi su Esegui query.
In Risultati delle query, puoi vedere le voci di log del deployment
monitoring-example
. Ad esempio:{ "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" }
Interfaccia a riga di comando gcloud
Esegui questo comando:
gcloud logging read 'resource.labels.project_id="PROJECT_ID" AND \ resource.type="k8s_container" AND resource.labels.namespace_name="default"'
Sostituisci
PROJECT_ID
con l'ID del tuo progetto.Nell'output puoi vedere le voci di log del deployment
monitoring-example
. Ad esempio: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'
Visualizzare le metriche delle applicazioni nella console Google Cloud
L'applicazione di esempio espone una metrica personalizzata denominata example_monitoring_up
.
Puoi visualizzare i valori della metrica nella console Google Cloud.
Vai a Metrics Explorer nella console Google Cloud.
In Tipo di risorsa, seleziona
Kubernetes Pod
oKubernetes Container
.Per metrica, seleziona
external.googleapis.com/prometheus/example_monitoring_up
.Nel grafico, puoi vedere che
example_monitoring_up
ha un valore ripetuto di 1.