Activer la journalisation et la surveillance des applications

Cette page explique comment configurer un cluster pour les clusters Anthos sur solution Bare Metal afin que les journaux personnalisés et les métriques des applications utilisateur soient envoyés à Cloud Logging et à Cloud Monitoring.

Activer Logging et Monitoring pour les applications utilisateur

Pour activer Logging et Monitoring pour vos applications, utilisez le champ spec.clusterOperations.enableApplication dans le fichier de configuration du cluster.

  1. Mettez à jour le fichier de configuration du cluster pour définir enableApplication sur true :

    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
        ...
    
  2. Utilisez bmctl update pour appliquer vos modifications :

    bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=ADMIN_KUBECONFIG
    

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom du cluster à mettre à niveau.
    • ADMIN_KUBECONFIG : chemin d'accès au fichier kubeconfig du cluster d'administrateur.

Annoter des charges de travail

Pour activer la collecte de métriques personnalisées à partir d'une application, ajoutez l'annotation prometheus.io/scrape: "true" au fichier manifeste du service ou du pod de l'application, ou ajoutez la même annotation à la section spec.template dans le fichier manifeste "Déploiement" ou DaemonSet afin qu'elles soient transmises à leurs pods.

Exécuter un exemple d'application

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

  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 CLUSTER_KUBECONFIG apply -f my-app.yaml
    

Afficher les journaux d'application

Console

  1. Accédez à l'explorateur de journaux dans la console Google Cloud.

    Accéder à l'explorateur de journaux

  2. Cliquez sur Ressource. Sous ALL_RESOURCE_TYPES, sélectionnez Kubernetes Container.

  3. Sous CLUSTER_NAME, sélectionnez le nom de votre cluster d'utilisateur.

  4. Sous NAMESPACE_NAME, sélectionnez default.

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

  6. Les entrées de journal du déploiement monitoring-example sont affichées sous Résultats de la requête. 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 cette commande :

    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 de l'application dans Google Cloud Console

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 console Google Cloud.

  1. Accédez à l'explorateur de métriques dans la console Google Cloud.

    Accéder à l'explorateur de métriques

  2. Dans le champ Type de ressource, sélectionnez Kubernetes Pod ou Kubernetes Container.

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

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