Log e metriche

Questa pagina spiega come Google Distributed Cloud registra vari tipi di informazioni sul suo funzionamento e come visualizzarle. La raccolta di alcuni tipi di log e metriche comporta costi aggiuntivi. Per ulteriori informazioni, consulta Fatturazione per log e metriche.

Configurazione di logging e monitoraggio

Prima di poter iniziare a raccogliere log e metriche, devi eseguire le seguenti operazioni:

  1. Abilita le API di logging utilizzando i seguenti comandi:

    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
    

    Sostituisci PROJECT_ID con l'ID del progetto di destinazione Google Cloud .

  2. Concedi i ruoli necessari per scrivere log e metriche:

    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]"
    

    Sostituisci PROJECT_ID con l'ID del progetto di destinazione Google Cloud .

Log

Questa sezione elenca i tipi di risorse Cloud Logging supportati da Distributed Cloud. Per visualizzare i log di Distributed Cloud, utilizza Esplora log nella Google Cloud console. Il logging di Distributed Cloud è sempre abilitato.

I tipi di risorse registrate di Distributed Cloud sono le seguenti risorse Kubernetes standard:

  • k8s_container
  • k8s_node

Puoi anche acquisire e recuperare i log di Distributed Cloud utilizzando l'API Cloud Logging. Per informazioni su come configurare questo meccanismo di logging, consulta la documentazione delle librerie client di Cloud Logging.

Metriche

Questa sezione elenca le metriche di Cloud Monitoring supportate da Distributed Cloud. Per visualizzare le metriche di Distributed Cloud, utilizza Esplora metriche nella Google Cloud console.

Metriche dei cluster Distributed Cloud

Per i cluster Distributed Cloud, Distributed Cloud fornisce i seguenti tipi di metriche generate dai nodi Distributed Cloud:

  • Le metriche delle risorse forniscono informazioni sulle prestazioni dei nodi e dei pod di Distributed Cloud, come il carico della CPU e la memoria utilizzata.
  • Le metriche delle applicazioni di sistema forniscono informazioni sui carichi di lavoro di sistema di Distributed Cloud, come coredns.

Per un elenco di queste metriche, consulta Metriche di Google Distributed Cloud e Google Distributed Cloud.

Distributed Cloud non fornisce metriche generate dai piani di controllo Kubernetes associati ai cluster Distributed Cloud.

Metriche hardware di Distributed Cloud

Distributed Cloud fornisce metriche per l'hardware di Distributed Cloud utilizzando i seguenti tipi di risorse:

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

Metriche delle risorse Machine

Distributed Cloud scrive le seguenti metriche dell'API Cloud Monitoring per la risorsa edgecontainer.googleapis.com/Machine:

Metrica Descrizione
/machine/cpu/total_cores
  • Tipo: GAUGE
  • Tipo: INT
Conteggio totale dei core del processore fisico presenti sulla macchina.
/machine/cpu/usage_time
  • Tipo: CUMULATIVE
  • Tipo: DOUBLE
  • Unità: Seconds
Tempo di utilizzo cumulativo della CPU per tutti i core della macchina. Il tipo può essere workload (carichi di lavoro dei clienti) o system (tutto il resto).
/machine/cpu/utilization
  • Tipo: GAUGE
  • Tipo: DOUBLE
Percentuale di utilizzo della CPU sulla macchina. L'intervallo è compreso tra 0 e 1. Il tipo può essere workload (carichi di lavoro dei clienti) o system (tutto il resto).
/machine/memory/total_bytes
  • Tipo: GAUGE
  • Tipo: INT64
Conteggio in byte della memoria totale sulla macchina.
/machine/memory/used_bytes
  • Tipo: GAUGE
  • Tipo: INT64
Conteggio in byte della memoria utilizzata sulla macchina. memory_type è `evictable` (recuperabile dal kernel) o `non-evictable` (non recuperabile).evictablenon-evictable
/machine/memory/utilization
  • Tipo: GAUGE
  • Tipo: DOUBLE
Percentuale di utilizzo della memoria sulla macchina. L'intervallo è compreso tra 0 e 1. memory_type è evictable (recuperabile dal kernel) o non-evictable (non recuperabile).
/machine/network/up
  • Tipo: GAUGE
  • Tipo: BOOL
Indica se l'interfaccia di rete è attiva e in esecuzione. Include schede principali, schede secondarie e porte.
/machine/network/link_speed
  • Tipo: GAUGE
  • Tipo: DOUBLE
  • Unità: byte al secondo
Velocità del collegamento della scheda di interfaccia di rete principale.
/machine/network/received_bytes_count
  • Tipo: CUMULATIVE
  • Tipo: DOUBLE
Conteggio dei byte ricevuti per la scheda di interfaccia di rete principale.
/machine/network/sent_bytes_count
  • Tipo: CUMULATIVE
  • Tipo: DOUBLE
Conteggio dei byte inviati per la scheda di interfaccia di rete principale.
/machine/network/connectivity
  • Tipo: GAUGE
  • Tipo: BOOL
Indica se la scheda di interfaccia di rete principale ha la connettività a internet.
/machine/disk/total_bytes
  • Tipo: GAUGE
  • Tipo: INT64
Conteggio in byte dello spazio su disco totale sulla macchina.
/machine/disk/used_bytes
  • Tipo: GAUGE
  • Tipo: INT64
Conteggio in byte dello spazio su disco utilizzato sulla macchina.
/machine/disk/utilization
  • Tipo: GAUGE
  • Tipo: DOUBLE
Percentuale di utilizzo dello spazio su disco sulla macchina. L'intervallo è compreso tra 0 e 1.
/machine/restart_count
  • Tipo: CUMULATIVE
  • Tipo: INT
Numero di riavvii della macchina.
/machine/uptime
  • Tipo: GAUGE
  • Tipo: INT
  • Unità: Seconds
Tempo di attività della macchina dall'ultimo riavvio.
/machine/connected
  • Tipo: GAUGE
  • Tipo: INT64
Indica se la macchina è connessa a Google Cloud.

Metriche delle risorse Rack

Distributed Cloud scrive le seguenti metriche dell'API Cloud Monitoring per la risorsa edgecontainer.googleapis.com/Rack:

Metrica Descrizione
/router/bgp_up
  • Tipo: GAUGE
  • Tipo: BOOL
Indica se la sessione di peering BGP sul router è attiva e integra. router_id identifica il router specifico (fino a 2 per rack).
/router/connected
  • Tipo: GAUGE
  • Tipo: BOOL
Indica se il router BGP è connesso a Google Cloud. router_id identifica il router specifico (fino a 2 per rack).

Esportare log e metriche delle applicazioni personalizzate

Distributed Cloud esporta automaticamente i log per le applicazioni in esecuzione sui carichi di lavoro di Distributed Cloud. Per esportare le metriche di un'applicazione in esecuzione sui carichi di lavoro di Distributed Cloud, devi annotarla come descritto nella sezione successiva.

Annotare il carico di lavoro per abilitare l'esportazione delle metriche

Per abilitare la raccolta di metriche personalizzate da un'applicazione, aggiungi le seguenti annotazioni al manifest del servizio o del deployment dell'applicazione:

  • prometheus.io/scrape: "true"
  • prometheus.io/path: "ENDPOINT_PATH". Sostituisci ENDPOINT_PATH con il percorso completo dell'endpoint delle metriche dell'applicazione di destinazione.
  • prometheus.io/port: "PORT_NUMBER": la porta su cui l'endpoint delle metriche dell'applicazione è in ascolto delle connessioni.

Eseguire un'applicazione di esempio

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

  1. Salva i seguenti manifest del servizio e del deployment in un file denominato my-app.yaml. Tieni presente 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 apply -f my-app.yaml

Visualizza log applicazione

Console

  1. Nella console Google Cloud , vai alla pagina Esplora log.

    Vai a Esplora log

  2. Fai clic su Risorsa.

  3. Nell'elenco Tutti i tipi di risorse, seleziona Kubernetes Container.

  4. In Nome cluster, seleziona il nome del cluster utente.

  5. In Nome spazio dei nomi, seleziona default.

  6. Fai clic su Aggiungi e poi su Esegui query.

  7. Nella sezione Risultati delle query, puoi visualizzare 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. Utilizza il comando gcloud logging read:

    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.

  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'
    

Visualizza metriche delle applicazioni

L'applicazione di esempio espone una metrica personalizzata denominata example_monitoring_up. Puoi visualizzare i valori di questa metrica nella Google Cloud console.

  1. Nella Google Cloud console, vai alla pagina Esplora metriche.

    Vai a Esplora metriche

  2. In Tipo di risorsa, seleziona Kubernetes Pod.

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

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

Passaggi successivi