Geração de registros e monitoramento de aplicativos

Nesta página, mostramos como configurar um cluster de usuário para clusters do Anthos no VMware (GKE On-Prem) para que os registros e as métricas personalizadas dos aplicativos do usuário sejam enviados para o Cloud Logging e o Cloud Monitoring.

Como ativar o Logging e o Monitoring para aplicativos do usuário

A configuração do Logging e do Monitoring é mantida em um objeto do Stackdriver chamado stackdriver.

  1. Abra o objeto stackdriver para edição:

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

    Substitua USER_CLUSTER_KUBECONFIG pelo caminho do arquivo kubeconfig do cluster de usuário.

  2. Em spec, defina enableStackdriverForApplications como true:

      apiVersion: addons.gke.io/v1alpha1
      kind: Stackdriver
      metadata:
        name: stackdriver
        namespace: kube-system
      spec:
        projectID: ...
        clusterName: ...
        clusterLocation: ...
        proxyConfigSecretName: ...
        enableStackdriverForApplications: true
        enableVPC: ...
        optimizedMetrics: true
    
  3. Feche o arquivo editado.

Como anotar cargas de trabalho

Para ativar a coleta de métricas personalizadas de um aplicativo, adicione a anotação prometheus.io/scrape: "true" ao manifesto de serviço ou pod do aplicativo ou inclua a mesma anotação na seção spec.template em "Implantação" ou "Manifesto do DaemonSet" para ser transmitida aos pods deles.

Para evitar a coleta de lixo de métricas, recomendamos definir o intervalo de extração de métricas para um minuto.

Como executar um aplicativo de exemplo

Nesta seção, você criará um aplicativo que grava registros personalizados e expõe uma métrica personalizada.

  1. Salve os seguintes manifestos de Serviço e Implantação em um arquivo chamado my-app.yaml. Observe que o Serviço tem a anotação 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. Crie a implantação e o serviço:

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

Como exibir registros do aplicativo

Console

  1. Acesse o Explorador de registros no console do Google Cloud:

    Acessar o Explorador de registros

  2. Clique em Recurso. Em ALL_RESOURCE_TYPES, selecione Kubernetes Container.

  3. Em CLUSTER_NAME, selecione o nome do seu cluster de usuário.

  4. Em NAMESPACE_NAME, selecione default.

  5. Clique em Adicionar e em Executar consulta.

  6. Em Resultados da consulta, é possível ver as entradas de registro da implantação monitoring-example. Exemplo:

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

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

    Substitua PROJECT_ID pelo ID do projeto de geração de registros.

  2. Na saída, é possível ver entradas de registro da implantação monitoring-example. Exemplo:

    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'
    

Como visualizar métricas de aplicativo no console do Google Cloud

O aplicativo de exemplo expõe uma métrica personalizada chamada example_monitoring_up. É possível ver os valores dessa métrica no console do Cloud.

  1. Acesse o Metrics Explorer no Console do Google Cloud:

    Acessar o Metrics Explorer

  2. Em Tipo de recurso, selecione Kubernetes Pod ou Kubernetes Container.

  3. Em Métrica, selecione external.googleapis.com/prometheus/example_monitoring_up.

  4. No gráfico, você pode ver que example_monitoring_up tem um valor repetido de 1.