Registro y supervisión de aplicaciones

En esta página, se muestra cómo configurar un clúster de usuario para clústeres de Anthos alojados en VMware (GKE On-Prem) a fin de que las métricas y los registros personalizados de las aplicaciones de usuario se envíen a Cloud Logging y Cloud Monitoring.

Habilita Logging y Monitoring para las aplicaciones de usuario

La configuración de Logging y Monitoring se conserva en un objeto de Stackdriver llamado stackdriver.

  1. Abre el objeto stackdriver para editarlo:

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

    Reemplaza USER_CLUSTER_KUBECONFIG con la ruta de tu archivo kubeconfig del clúster de usuario.

  2. En spec, configura enableStackdriverForApplications como 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. Cierra el archivo editado.

Anota cargas de trabajo

Para habilitar la recopilación de métricas personalizadas de una aplicación, agrega la anotación prometheus.io/scrape: "true" al manifiesto de servicio o implementación de la aplicación:

Ejecuta una aplicación de ejemplo

En esta sección, crearás una aplicación que escriba registros personalizados y exponga una métrica personalizada.

  1. Guarda los siguientes manifiestos de Service y Deployment en un archivo llamado my-app.yaml. Ten en cuenta que el Service tiene la anotación 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 el Deployment y el Service:

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

Ve registros de aplicaciones

Console

  1. Ve al Explorador de registros en la consola de Google Cloud.

    Ve al Explorador de registros.

  2. Haz clic en Recurso. En ALL_RESOURCE_TYPES, selecciona Kubernetes Container.

  3. En CLUSTER_NAME, selecciona el nombre de tu clúster de usuario.

  4. En NAMESPACE_NAME, selecciona default.

  5. Haz clic en Agregar y, luego, en Ejecutar consulta.

  6. En Resultados de la consulta, puedes ver las entradas de registro del Deployment monitoring-example. Por ejemplo:

    {
      "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. Ejecuta este comando:

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

    Reemplaza PROJECT_ID con el ID de tu proyecto de registro y supervisión.

  2. En el resultado, puedes ver las entradas de registro del Deployment monitoring-example. Por ejemplo:

    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'
    

Visualiza métricas de aplicaciones en la consola de Google Cloud

Tu aplicación de ejemplo expone una métrica personalizada llamada example_monitoring_up. Puedes ver los valores de esa métrica en la consola de Google Cloud.

  1. Ve al Explorador de métricas en la consola de Google Cloud.

    Ir al Explorador de métricas

  2. En Tipo de recurso, selecciona Kubernetes Pod.

  3. En Métrica, selecciona external/prometheus/example_monitoring_up.

  4. En el gráfico, puedes ver que example_monitoring_up tiene un valor repetido de 1.