Logging e monitoraggio delle applicazioni

10

Questa pagina mostra come configurare un cluster utente per i cluster Anthos su VMware (GKE On-Prem) in modo che log e metriche personalizzati dalle applicazioni utente vengano inviati a Cloud Logging e Cloud Monitoring.

Abilitazione di Logging e Monitoring per le applicazioni utente

La configurazione per Logging e Monitoring è conservata in un oggetto Stackdriver denominato stackdriver.

  1. Apri l'oggetto stackdriver per modificare:

    kubectl --kubeconfig=USER_CLUSTER_KUBECONFIG --namespace kube-system edit stackdriver stackdriver
    

    Sostituisci USER_CLUSTER_KUBECONFIG con il percorso del file kubeconfig del cluster utente.

  2. In spec, imposta enableStackdriverForApplications su true:

      apiVersion: addons.sigs.k8s.io/v1alpha1
      kind: Stackdriver
      metadata:
        name: stackdriver
        namespace: kube-system
      spec:
        projectID: ...
        clusterName: ...
        clusterLocation: ...
        proxyConfigSecretName: ...
        enableStackdriverForApplications: true
        enableVPC: ...
        optimizedMetrics: true
    
  3. Chiudi il file modificato.

Annotazione dei 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 deployment dell'applicazione.

Per evitare la garbage collection delle metriche, ti consigliamo di impostare l'intervallo di scraping delle metriche su 1 minuto.

Esecuzione di un'applicazione di esempio

In questa sezione, creerai un'applicazione che scrive log personalizzati ed espone una metrica personalizzata.

  1. Salva i seguenti manifest di servizio e deployment in un file denominato my-app.yaml. Nota che il servizio ha l'annotazione prometheus.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
    
  2. Crea il deployment e il servizio:

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

Visualizzazione dei log delle applicazioni

console

  1. Vai a Esplora log nella console Google Cloud.

    Vai a Esplora log

  2. Fai clic su Risorsa. In ALL_RESOURCE_TYPES, seleziona Kubernetes Container.

  3. In CLUSTER_NAME, seleziona il nome del tuo cluster utente.

  4. In NAMESPACE_NAME, seleziona default.

  5. Fai clic su Aggiungi, quindi su Esegui query.

  6. 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"
    }
    

gcloud

  1. 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 di monitoraggio del logging.

  2. Nell'output puoi visualizzare 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 in Google Cloud Console

L'applicazione di esempio espone una metrica personalizzata denominata example_monitoring_up. Puoi visualizzare i valori della metrica in Google Cloud Console.

  1. Vai a Metrics Explorer nella Google Cloud Console.

    Vai a Metrics Explorer

  2. In Tipo di risorsa, seleziona Kubernetes Pod.

  3. Per Metrica, seleziona external/prometheus/example_monitoring_up.

  4. Nel grafico puoi vedere che example_monitoring_up ha un valore ripetuto di 1.