O Grafana permite consultar, visualizar, alertar e explorar métricas, independentemente de onde estejam armazenadas. O Grafana fornece ferramentas para formar gráficos e visualizações a partir de dados de aplicativos. Implante a extensão TKG para Grafana para gerar e visualizar métricas para clusters Tanzu Kubernetes.

Requisitos da extensão Grafana

Este tópico descreve como implantar e gerenciar a extensão TKG v1.3.1 para Grafana.

Siga os seguintes pré-requisitos para implantar a extensão. Além disso, a extensão de monitoramento Grafana requer uma classe de armazenamento persistente padrão. Você pode criar um cluster com uma classe de armazenamento persistente padrão ou especificar uma no arquivo de configuração do Prometheus ao implantar a extensão. Consulte o Revise os requisitos de armazenamento persistente para extensões TKG.

Implantar a extensão Grafana para visualização e análise

A extensão TKG para Grafana implanta um único contêiner. Para obter mais informações, consulte https://grafana.com/.
Container Tipo de Recurso Réplicas Descrição
Grafana Implantação 2 Visualização de dados
A extensão está configurada para receber os contêineres do registro público VMware em https://projects.registry.vmware.com/. Se você estiver usando um registro privado, altere a URL do endpoint nos valores de dados e nas configurações de extensão para corresponder. Consulte o Configurar a extensão Grafana.
  1. Verifique se você concluiu cada um dos pré-requisitos de extensão. Consulte o Requisitos da extensão Grafana.
  2. Altere o diretório para a extensão Grafana.
    cd /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana
  3. Crie o namespace tanzu-system-monitoring e a conta de serviço Grafana e os objetos de função.
    kubectl apply -f namespace-role.yaml
  4. Crie um arquivo de valores de dados Grafana.
    O arquivo de valores de dados de exemplo fornece a configuração mínima necessária.
    cp grafana-data-values.yaml.example grafana-data-values.yaml
  5. Configure a extensão Grafana atualizando o grafana-data-values.yaml.

    Personalize a configuração conforme necessário. Consulte o Configurar a extensão Grafana.

    O admin_password deve ser codificado em base64, mas não bloqueará a implantação da extensão se não estiver. No exemplo abaixo, a senha "admin" é codificada em base64. Codifique sua própria senha Grafana aqui: https://www.base64encode.org/.

    Se o cluster não estiver provisionado com uma classe de armazenamento padrão, você poderá especificá-la no arquivo de valores de dados. Além disso, certifique-se de que o namespace tenha armazenamento suficiente para as declarações de volume persistentes.
    monitoring:
      grafana:
        image:
          repository: "projects.registry.vmware.com/tkg/grafana"
        pvc:
          storage_class: vwt-storage-policy
          storage: "8Gi"  
        secret:
          admin_password: "YWRtaW4="
      grafana_init_container:
        image:
          repository: "projects.registry.vmware.com/tkg/grafana"
      grafana_sc_dashboard:
        image:
          repository: "projects.registry.vmware.com/tkg/grafana"
    
  6. Crie o segredo Grafana com o arquivo grafana-data-values.
    kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tanzu-system-monitoring

    O segredo grafana-data-values é criado no namespace tanzu-system-monitoring. Verifique usando kubectl get secrets -n tanzu-system-monitoring.

  7. Implante a extensão Grafana.
    kubectl apply -f grafana-extension.yaml

    Em caso de sucesso, o aplicativo Grafana é criado: app.kappctrl.k14s.io/grafana created.

  8. Verifique o status do aplicativo Grafana.
    kubectl get app grafana -n tanzu-system-monitoring
    O status deve mudar de Reconciling para Reconcile succeeded. Se o status for Reconcile failed, consulte Solução de problemas.
  9. Visualize o status detalhado no aplicativo Grafana.
    kubectl get app grafana -n tanzu-system-monitoring -o yaml
  10. Verifique a implantação do Grafana.
    kubectl get deployments -n tanzu-system-monitoring

Solução de problemas de implantação do Grafana

Se a implantação ou a reconciliação falhar, execute kubectl get pods -A para exibir o status do pod. Os pods contour e envoy devem ser Running. Se um status de pod for ImagePullBackOff ou ImageCrashLoopBackOff, a imagem do contêiner não poderá ser extraída. Verifique a URL do registro nos valores de dados e nos arquivos YAML de extensão e certifique-se de que eles sejam precisos.

Verifique os logs do contêiner, onde name-XXXX é o nome do pod exclusivo quando você executa kubectl get pods -A:
kubectl logs pod/grafana-XXXX -c grafana -n tanzu-system-monitoring

Atualizar a extensão Grafana

Atualize a extensão Grafana que é implantada em um cluster do Tanzu Kubernetes.

  1. Obtenha os valores de dados Grafana atuais do segredo grafana-data-values.
    kubectl get secret grafana-data-values -n tanzu-system-monitoring -o 'go-template={{ index .data "values.yaml" }}' | base64 -d > grafana-data-values.yaml
    
  2. Atualize os valores de dados Grafana em grafana-data-values.yaml. Consulte o Configurar a extensão Grafana.
  3. Atualize o segredo dos valores de dados Grafana.
    kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tanzu-system-monitoring -o yaml --dry-run | kubectl replace -f-
    
    A extensão Grafana é reconciliada com os valores de dados atualizados.
    Observação: Por padrão, o kapp-controller sincronizará os aplicativos a cada 5 minutos. A atualização deve entrar em vigor em 5 minutos ou menos. Se você quiser que a atualização entre em vigor imediatamente, altere syncPeriod em grafana-extension.yaml para um valor menor e aplique a extensão Grafana usando kubectl apply -f grafana-extension.yaml.
  4. Verifique o status da extensão.
    kubectl get app grafana -n tanzu-system-monitoring

    O status deve mudar para Reconcile Succeeded quando o Grafana for atualizado.

  5. Visualize o status detalhado e solucione problemas, se necessário.
    kubectl get app grafana -n tanzu-system-monitoring -o yaml

Excluir a extensão Grafana

Exclua a extensão Grafana de um cluster Tanzu Kubernetes.
Observação: Conclua as etapas em ordem. Não exclua o namespace, a conta de serviço e os objetos de função antes que o aplicativo Grafana seja totalmente excluído. Isso pode levar a erros do sistema.
Observação: As extensões Prometheus e Grafana são implantadas no mesmo namespace: tanzu-system-monitoring. Se você tiver implantado ambas as extensões no mesmo cluster, exclua cada extensão antes de excluir o namespace.
  1. Altere o diretório para a extensão Grafana.
    cd /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana
  2. Exclua o aplicativo Grafana.
    kubectl delete app grafana -n tanzu-system-monitoring

    Resultado esperado: app.kappctrl.k14s.io "grafana" deleted.

  3. Verifique se o aplicativo Grafana foi excluído.
    kubectl get app grafana -n tanzu-system-monintoring

    Resultado esperado: apps.kappctrl.k14s.io "grafana" not found.

  4. Exclua o namespace tanzu-system-monitoring e a conta de serviço Grafana e os objetos de função.
    Aviso: Não execute essa etapa se o Prometheus estiver implantado.
    kubectl delete -f namespace-role.yaml
  5. Se você quiser reimplantar o Grafana, remova o segredo grafana-data-values.
    kubectl delete secret grafana-data-values -n tanzu-system-monitoring

    Resultado esperado: secret "grafana-data-values" deleted.

Atualizar a extensão Grafana

Se você tiver uma extensão Grafana existente implantada, poderá atualizá-la para usar a versão mais recente.
  1. Exporte o mapa de configuração Grafana e salve-o como backup.
    kubectl get configmap grafana -n tanzu-system-monitoring -o 'go-template={{ index .data "grafana.yaml" }}' > grafana-configmap.yaml
  2. Exclua a extensão Grafana existente. Consulte o Excluir a extensão Grafana.
  3. Implante a extensão Grafana. Consulte o Implantar a extensão Grafana para visualização e análise.

Configurar a extensão Grafana

A configuração do Grafana é definida em /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana/grafana-data-values.yaml.
Tabela 1. Parâmetros de configuração do Grafana
Parâmetro Descrição Tipo Padrão
Monitoring.namespace Namespace onde o Prometheus será implantado cadeia de caracteres tanzu-system-Monitoring
Monitoring.create_namespace O sinalizador indica se é necessário criar o namespace especificado por Monitoring.namespace boolean falso
Monitoring.grafana.cluster_role.apiGroups grupo de APIs definido para grafana clusterrole lista [""]
Monitoring.grafana.cluster_role.resources recursos definidos para grafana clusterrole lista ["configmaps", "segredos"]
Monitoring.grafana.cluster_role.verbs permissão de acesso definida para clusterrole lista ["get", "watch", "list"]
Monitoring.grafana.config.grafana_ini Detalhes do arquivo de configuração Grafana arquivo de configuração grafana.ini

Nesse arquivo, a URL grafana_net é usada para integração com o Grafana, por exemplo, para importar o painel diretamente do Grafana.com.

Monitoring.grafana.config.datasource.type Tipo de fonte de dados Grafana cadeia de caracteres Prometheus
Monitoring.grafana.config.datasource.access modo de acesso. proxy ou direto (servidor ou navegador na interface do usuário) cadeia de caracteres proxy
Monitoring.grafana.config.datasource.isDefault marcar como fonte de dados Grafana padrão boolean verdadeiro
Monitoring.grafana.config.provider_yaml Arquivo de configuração para definir o provedor do painel Grafana arquivo yaml provider.yaml
Monitoring.grafana.service.type Tipo de serviço para expor o Grafana. Valores com suporte: ClusterIP, NodePort, LoadBalancer cadeia de caracteres vSphere: NodePort, aws / azure: LoadBalancer
Monitoring.grafana.pvc.storage_class Defina o modo de acesso para a reivindicação de volume persistente. Valores com suporte: ReadWriteOnce, ReadOnlyMany, ReadWriteMany cadeia de caracteres ReadWriteOnce
Monitoring.grafana.pvc.storage Defina o tamanho do armazenamento para a declaração de volume persistente cadeia de caracteres 2Gi
Monitoring.grafana.deployment.replicas Número de réplicas de grafana número inteiro 1
Monitoring.grafana.image.repository Localização do repositório com a imagem Grafana. O padrão é o registro público VMware. Altere esse valor se você estiver usando um repositório privado (por exemplo, ambiente isolado). cadeia de caracteres projects.registry.vmware.com/tkg/grafana
Monitoring.grafana.image.name Nome da imagem Grafana cadeia de caracteres grafana
Monitoring.grafana.image.tag Etiqueta de imagem Grafana. Esse valor pode precisar ser atualizado se você estiver atualizando a versão. cadeia de caracteres v7.3.5_vmware.1
Monitoring.grafana.image.pullPolicy Política de extração de imagem Grafana cadeia de caracteres IfNotPresent
Monitoring.grafana.secret.type Tipo de segredo definido para o painel Grafana cadeia de caracteres Opaco
Monitoring.grafana.secret.admin_user nome de usuário para acessar o painel Grafana cadeia de caracteres YWRtaW4 =

O valor é codificado em base64; para decodificar: echo "xxxxxx" | base64 --decode

Monitoring.grafana.secret.admin_password Senha para acessar o painel Grafana cadeia de caracteres nulo
Monitoring.grafana.secret.ldap_toml Se estiver usando autenticação LDAP, caminho do arquivo de configuração LDAP cadeia de caracteres ""
Monitoring.grafana_init_container.image.repository Repositório contendo a imagem de contêiner de inicialização de grafana. O padrão é o registro público VMware. Altere esse valor se você estiver usando um repositório privado (por exemplo, ambiente isolado). cadeia de caracteres projects.registry.vmware.com/tkg/grafana
Monitoring.grafana_init_container.image.name Nome da imagem de contêiner init de grafana cadeia de caracteres k8s-sidecar
Monitoring.grafana_init_container.image.tag Tag de imagem de contêiner init Grafana. Esse valor pode precisar ser atualizado se você estiver atualizando a versão. cadeia de caracteres 0.1.99
Monitoring.grafana_init_container.image.pullPolicy Política de extração de imagem de contêiner init Grafana cadeia de caracteres IfNotPresent
Monitoring.grafana_sc_dashboard.image.repository Repositório contendo a imagem do painel Grafana. O padrão é o registro público VMware. Altere esse valor se você estiver usando um repositório privado (por exemplo, ambiente isolado). cadeia de caracteres projects.registry.vmware.com/tkg/grafana
Monitoring.grafana_sc_dashboard.image.name Nome da imagem do painel Grafana cadeia de caracteres k8s-sidecar
Monitoring.grafana_sc_dashboard.image.tag Tag de imagem do painel Grafana. Esse valor pode precisar ser atualizado se você estiver atualizando a versão. cadeia de caracteres 0.1.99
Monitoring.grafana_sc_dashboard.image.pullPolicy Grafana dashboard image pull policy cadeia de caracteres IfNotPresent
Monitoring.grafana.ingress.enabled Ativar / desativar entrada para Grafana boolean verdadeiro
Monitoring.grafana.ingress.virtual_host_fqdn Nome do host para acessar o Grafana cadeia de caracteres grafana.system.tanzu
Monitoring.grafana.ingress.prefix Prefixo de caminho para grafana cadeia de caracteres /
Monitoring.grafana.ingress.tlsCertificate.tls.crt Certificado opcional para entrada se você quiser usar seu próprio certificado TLS. Um certificado autoassinado é gerado por padrão cadeia de caracteres Certificado gerado
Monitoring.grafana.ingress.tlsCertificate.tls.key Chave privada de certificado opcional para entrada se você quiser usar seu próprio certificado TLS. cadeia de caracteres Chave de certificado gerada