Habilitar el registro y la supervisión de la aplicación

En esta página, se muestra cómo configurar un clúster para los clústeres de Anthos en equipos físicos a fin de que las métricas y los registros personalizados de las aplicaciones de usuarios se envíen a Cloud Logging y Cloud Monitoring.

Habilita Logging y Monitoring para las aplicaciones de usuario

A fin de habilitar Logging y Monitoring para tus aplicaciones, usa el campo spec.clusterOperations.enableApplication en el archivo de configuración del clúster.

  1. Actualiza el archivo de configuración del clúster para establecer enableApplication en 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. Usa bmctl update para aplicar los cambios:

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

    Reemplaza lo siguiente:

    • CLUSTER_NAME: el nombre del clúster que se actualizará
    • ADMIN_KUBECONFIG es la ruta al archivo kubeconfig del clúster de administrador.

Anota las 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 pod de la aplicación, o agrega la misma anotación a la sección spec.template en el manifiesto de implementación o DaemonSet para pasar a sus pods.

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

Ver los registros de la aplicación

Consola

  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 por el ID de tu proyecto.

  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'
    

Ve las métricas de la aplicación 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 Resource type (Tipo de recurso), selecciona Kubernetes Pod o Kubernetes Container.

  3. En metric, selecciona external.googleapis.com/prometheus/example_monitoring_up.

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