Journaux et métriques

Cette page explique comment Google Distributed Cloud connecté enregistre différents types d'informations sur son fonctionnement et comment les afficher. La collecte de certains types de journaux et de métriques entraîne des frais supplémentaires. Pour en savoir plus, consultez la section Facturation des journaux et des métriques.

Configurer la journalisation et la surveillance

Avant de commencer à collecter des journaux et des métriques, vous devez procéder comme suit :

  1. Activez les API de journalisation à l'aide des commandes suivantes :

    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
    

    Remplacez PROJECT_ID par l'ID du projet cible. Google Cloud

  2. Attribuez les rôles requis pour écrire des journaux et des métriques :

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

    Remplacez PROJECT_ID par l'ID du projet cible. Google Cloud

Journaux

Cette section répertorie les types de ressources Cloud Logging compatibles avec Distributed Cloud. Pour afficher les journaux Distributed Cloud, utilisez l'explorateur de journaux dans la Google Cloud console. La journalisation Distributed Cloud est toujours activée.

Les types de ressources journalisées Distributed Cloud connecté sont les ressources Kubernetes standards suivantes :

  • k8s_container
  • k8s_node

Vous pouvez également capturer et récupérer les journaux Distributed Cloud connecté à l'aide de l'API Cloud Logging. Pour savoir comment configurer ce mécanisme de journalisation, consultez la documentation des bibliothèques clientes Cloud Logging.

Métriques

Cette section répertorie les métriques Cloud Monitoring compatibles avec Distributed Cloud. Pour afficher les métriques Distributed Cloud, utilisez l' explorateur de métriques dans la Google Cloud console.

Métriques de cluster Distributed Cloud connecté

Pour les clusters Distributed Cloud connecté, Distributed Cloud connecté fournit les types de métriques suivants générés par les nœuds Distributed Cloud connecté :

  • Les métriques sur les ressources fournissent des informations sur les performances des nœuds et des pods Distributed Cloud connecté, telles que la charge du processeur et l'utilisation de la mémoire.
  • Les métriques d'application système fournissent des informations sur les charges de travail du système Distributed Cloud connecté, telles que coredns.

Pour obtenir la liste de ces métriques, consultez la page Métriques Google Distributed Cloud et Google Distributed Cloud.

Distributed Cloud connecté ne fournit pas de métriques générées par les plans de contrôle Kubernetes associés aux clusters Distributed Cloud connecté.

Métriques matérielles Distributed Cloud connecté

Distributed Cloud connecté fournit des métriques pour le matériel Distributed Cloud connecté à l'aide des types de ressources suivants :

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

Métriques de ressource Machine

Distributed Cloud connecté écrit les métriques d'API Cloud Monitoring suivantes pour la ressource edgecontainer.googleapis.com/Machine :

Métrique Description
/machine/cpu/total_cores
  • Genre : GAUGE
  • Type: INT
Nombre total de cœurs de processeur physiques présents sur la machine.
/machine/cpu/usage_time
  • Genre : CUMULATIVE
  • Type: DOUBLE
  • Unité : Seconds
Temps d'utilisation cumulé du processeur pour tous les cœurs de la machine. Le type peut être workload (charges de travail client) ou system (tout le reste).
/machine/cpu/utilization
  • Genre : GAUGE
  • Type: DOUBLE
Pourcentage d'utilisation du processeur sur la machine. La plage de valeurs s'étend de 0 à 1. Le type peut être workload (charges de travail client) ou system (tout le reste).
/machine/memory/total_bytes
  • Genre : GAUGE
  • Type: INT64
Nombre d'octets de mémoire totale sur la machine.
/machine/memory/used_bytes
  • Genre : GAUGE
  • Type: INT64
Nombre d'octets de mémoire utilisée sur la machine. memory_type est soit evictable (récupérable par le noyau) soit non-evictable (non récupérable).
/machine/memory/utilization
  • Genre : GAUGE
  • Type: DOUBLE
Pourcentage d'utilisation de la mémoire sur la machine. La plage de valeurs s'étend de 0 à 1. memory_type est evictable (récupérable par le noyau) ou non-evictable (non récupérable).
/machine/network/up
  • Genre : GAUGE
  • Type: BOOL
Indique si l'interface réseau est opérationnelle. Inclut les cartes primaires, les cartes secondaires et les ports.
/machine/network/link_speed
  • Genre : GAUGE
  • Type: DOUBLE
  • Unité : octets par seconde
Vitesse de liaison de la carte d'interface réseau principale.
/machine/network/received_bytes_count
  • Genre : CUMULATIVE
  • Type: DOUBLE
Nombre d'octets reçus pour la carte d'interface réseau principale.
/machine/network/sent_bytes_count
  • Genre : CUMULATIVE
  • Type: DOUBLE
Nombre d'octets envoyés pour la carte d'interface réseau principale.
/machine/network/connectivity
  • Genre : GAUGE
  • Type: BOOL
Indique si la carte d'interface réseau principale dispose d'une connectivité Internet.
/machine/disk/total_bytes
  • Genre : GAUGE
  • Type: INT64
Nombre d'octets d'espace disque total sur la machine.
/machine/disk/used_bytes
  • Genre : GAUGE
  • Type: INT64
Nombre d'octets d'espace disque utilisé sur la machine.
/machine/disk/utilization
  • Genre : GAUGE
  • Type: DOUBLE
Pourcentage d'utilisation de l'espace disque sur la machine. La plage de valeurs s'étend de 0 à 1.
/machine/restart_count
  • Genre : CUMULATIVE
  • Type: INT
Nombre de redémarrages effectués par la machine.
/machine/uptime
  • Genre : GAUGE
  • Type: INT
  • Unité : Seconds
Temps de disponibilité de la machine depuis le dernier redémarrage.
/machine/connected
  • Genre : GAUGE
  • Type: INT64
Indique si la machine est connectée à Google Cloud.

Métriques de ressource Rack

Distributed Cloud connecté écrit les métriques d'API Cloud Monitoring suivantes pour la ressource edgecontainer.googleapis.com/Rack :

Métrique Description
/router/bgp_up
  • Genre : GAUGE
  • Type: BOOL
Indique si la session d'appairage BGP sur le routeur est active et saine. router_id identifie le routeur spécifique (jusqu'à deux par rack).
/router/connected
  • Genre : GAUGE
  • Type: BOOL
Indique si le routeur BGP est connecté à Google Cloud. router_id identifie le routeur spécifique (jusqu'à deux par rack).

Exporter des journaux et des métriques d'application personnalisés

Distributed Cloud connecté exporte automatiquement les journaux des applications exécutées sur les charges de travail Distributed Cloud connecté. Pour exporter les métriques d'une application exécutée sur les charges de travail Distributed Cloud connecté, vous devez l'annoter comme décrit dans la section suivante.

Annoter la charge de travail pour activer l'exportation des métriques

Pour activer la collecte de métriques personnalisées à partir d'une application, ajoutez les annotations suivantes au fichier manifeste de service ou de déploiement de l'application :

  • prometheus.io/scrape: "true"
  • prometheus.io/path: "ENDPOINT_PATH". Remplacez ENDPOINT_PATH par le chemin complet du point de terminaison de métrique de l'application cible.
  • prometheus.io/port: "PORT_NUMBER" : port sur lequel le point de terminaison de métrique de l'application écoute les connexions.

Exécuter un exemple d'application

Dans cette section, vous allez créer une application qui écrit des journaux personnalisés et expose un point de terminaison de métrique personnalisé.

  1. Enregistrez les fichiers manifeste de service et de déploiement suivants dans un fichier nommé my-app.yaml. Notez que le service possède l'annotation 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. Créez le déploiement et le service :

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

Afficher les journaux d'application

Console

  1. Dans la console Google Cloud , accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Cliquez sur Ressource.

  3. Dans la liste Tous les types de ressources, sélectionnez Kubernetes Container.

  4. Dans le champ Nom du cluster, sélectionnez le nom de votre cluster d'utilisateur.

  5. Dans le champ Nom de l'espace de noms, sélectionnez default.

  6. Cliquez sur Ajouter, puis sur Exécuter la requête.

  7. Dans la section Résultats de la requête, vous pouvez voir les entrées de journal du déploiement monitoring-example. Exemple :

    {
      "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. Exécutez la commande gcloud logging read :

    gcloud logging read 'resource.labels.project_id="PROJECT_ID" AND \
        resource.type="k8s_container" AND resource.labels.namespace_name="default"'

    Remplacez PROJECT_ID par l'ID de votre projet.

  2. Le résultat affiche les entrées de journal du déploiement monitoring-example. Exemple :

    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'
    

Afficher les métriques d'application

Votre exemple d'application présente une métrique personnalisée nommée example_monitoring_up. Vous pouvez consulter les valeurs de cette métrique dans la Google Cloud console.

  1. Dans la Google Cloud console, accédez à la page Explorateur de métriques.

    Accéder à l'explorateur de métriques

  2. Pour Type de ressource, sélectionnez Kubernetes Pod.

  3. Pour Métrique, sélectionnez external/prometheus/example_monitoring_up.

  4. Le graphique montre que example_monitoring_up a une valeur répétée de 1.

Collecter des métriques avec Prometheus

Distributed Cloud connecté est compatible avec la Prometheus Prometheus pour collecter des métriques sur les charges de travail exécutées sur des clusters de plan de contrôle locaux lorsque ces clusters sont en mode de survie. Cette intégration n'est pas disponible sur les clusters de plan de contrôle cloud.

À cet effet, Distributed Cloud connecté crée un espace de noms non géré nommé prom-monitoring lorsque vous créez un cluster de plan de contrôle local. Nous vous recommandons d'utiliser cet espace de noms pour déployer Prometheus. Vous pouvez également copier les ressources requises de l'espace de noms prom-monitoring vers l'espace de noms de votre choix et y déployer Prometheus.

Collecter des métriques Distributed Cloud connecté avec Prometheus

Pour collecter des métriques Distributed Cloud connecté avec Prometheus, vous devez configurer la récupération des métriques Prometheus. Pour ce faire, installez le ConfigMap prometheus-scrape-config dans votre pod Prometheus et ajoutez la configuration de récupération du ConfigMap à votre configuration Prometheus. Exemple :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus-deployment
  namespace: prom-monitoring
  labels:
    app: prom-monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: prom-monitoring
  template:
    metadata:
      labels:
        app: prom-monitoring
    spec:
      containers:
        - name: prometheus
          image: prom/prometheus:main
          args:
            - "--config.file=/etc/prometheus/prometheus.yml"
            - "--storage.tsdb.path=/prometheus/"
          ports:
            - containerPort: 9090
          volumeMounts:
            - name: prometheus-config-volume
              mountPath: /etc/prometheus/
            - name: prometheus-scrape-config-volume
              mountPath: /etc/prometheus/scrape/
            - name: prometheus-storage-volume
              mountPath: /prometheus/
            - name: prometheus-scrape-token
              mountPath: /var/run/secrets/kubernetes.io/stackdriver-prometheus-scrape
            - name: stackdriver-prometheus-scrape-cert
              mountPath: /certs/stackdriver-prometheus-scrape
            - name: metrics-providers-ca
              mountPath: /certs/metrics-providers
            - name: stackdriver-prometheus-etcd-scrape
              mountPath: /stackdriver-prometheus-etcd-scrape
      volumes:
        - name: prometheus-storage-volume
          emptyDir: {}
        - name: prometheus-config-volume
          configMap:
            defaultMode: 420
            name: prometheus-config
        - name: prometheus-scrape-config-volume
          configMap:
            defaultMode: 420
            name: prometheus-scrape-config
        - name: prometheus-scrape-token
          secret:
            defaultMode: 420
            secretName: prometheus-scrape
        - name: stackdriver-prometheus-scrape-cert
          secret:
            defaultMode: 420
            secretName: stackdriver-prometheus-scrape-cert
        - name: metrics-providers-ca
          secret:
            defaultMode: 420
            items:
            - key: ca.crt
              path: ca.crt
            secretName: metrics-providers-ca
        - name: stackdriver-prometheus-etcd-scrape
          secret:
            defaultMode: 420
            optional: true
            secretName: stackdriver-prometheus-etcd-scrape

Collecter des métriques de charge de travail avec Prometheus

Pour collecter des métriques de charge de travail avec Prometheus, vous devez ajouter des annotations aux services et aux pods qui exécutent les charges de travail cibles comme suit :

prometheus.io/unmanaged_scrape: "true"
prometheus.io/unmanaged_path: "ENDPOINT_PATH"
prometheus.io/unmanaged_port: "PORT_NUMBER"

Étape suivante