Journalisation et surveillance des applications

Cette page explique comment configurer un cluster d'utilisateur pour Anthos clusters on VMware (GKE On-Prem) 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

La configuration de Logging et Monitoring se trouve dans un objet Stackdriver nommé stackdriver.

  1. Ouvrez l'objet stackdriver à modifier :

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

    Remplacez USER_CLUSTER_KUBECONFIG par le chemin d'accès du fichier kubeconfig de votre cluster d'utilisateur.

  2. Sous spec, définissez enableStackdriverForApplications sur 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. Fermez le fichier modifié.

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 de service ou de déploiement de l'application.

Pour éviter la récupération de mémoire de métriques, nous vous recommandons de définir l'intervalle de scraping des métriques sur une minute.

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

Afficher des 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 de journalisation et de surveillance.

  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. 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.