Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ Cloud Container Engine/ Guia de usuário/ Complementos/ Monitoramento de cluster da nuvem nativa
Atualizado em 2024-11-28 GMT+08:00

Monitoramento de cluster da nuvem nativa

Introdução

kube-prometheus-stack usa o Prometheus-operator e o Prometheus para fornecer monitoramento de cluster do Kubernetes de ponta a ponta fácil de usar.

Este complemento permite que os dados de monitoramento sejam interconectados com Análise inteligente de contêineres (CIA) para que você possa ver os dados de monitoramento e configurar alarmes no console da CIA.

Comunidade de código aberto: https://github.com/prometheus/prometheus

Restrições

  • Por padrão, o componente kube-state-metrics do complemento não coleta rótulos e anotações de recursos do Kubernetes. Para coletar esses rótulos e anotações, habilite manualmente a função de coleta nos parâmetros de inicialização e verifique se as métricas correspondentes são adicionadas à lista branca de coleta de ServiceMonitor denominada kube-state-metrics. Para mais detalhes, consulte Coletar todos os rótulos e anotações de um pod.

Permissões

O componente node-exporter do complemento kube-prometheus-stack precisa ler os dados de informações do Docker do diretório /var/run/docker.sock no host para monitorar o espaço em disco do Docker.

A seguinte permissão é necessária para executar node-exporter:

  • cap_dac_override: lê os dados de informações do Docker.

Instalar o complemento

  1. Efetue logon no console do CCE e clique no nome do cluster para acessar o console do cluster. Escolha Add-ons no painel de navegação, localize Cloud Native Cluster Monitoring à direita e clique em Install.
  2. Na página Install Add-on, configure as especificações.

    • Containers: instância do componente criada pelo complemento. Para mais detalhes, consulte Componentes. Você pode selecionar ou personalizar uma especificação conforme necessário.

  3. Configure os parâmetros relacionados.

    • Connect to Third Party: para relatar dados do Prometheus a um sistema de monitoramento de terceiros, insira o endereço e o token do sistema de monitoramento de terceiros e determine se deve ignorar a autenticação de certificado.
    • Prometheus HA: os componentes Prometheus-server, Prometheus-operator, thanos-query, custom-metrics-apiserver e alertmanager são implementados no modo de várias instâncias no cluster.
    • Install Grafana: use Grafana para visualizar dados de monitoramento. Grafana cria um volume de armazenamento de 5 GiB por padrão. Desinstalar o complemento não excluirá esse volume. O nome de usuário e a senha padrão para o primeiro logon são admin. Você será solicitado a alterar a senha imediatamente após o logon.
    • Collection Period: período de coleta de dados de monitoramento.
    • Data Retention: período de retenção dos dados de monitoramento.
    • Storage: selecione o tipo e o tamanho do disco para armazenar dados de monitoramento. Desinstalar o complemento não excluirá esse volume.

      Uma PVC disponível chamado pvc-prometheus-server existe no namespace monitoring e será usado como fonte de armazenamento.

  4. Clique em Install.

    Depois que o complemento for instalado, talvez seja necessário executar as seguintes operações:

Componentes

Todos os recursos do Kubernetes criados durante a instalação do complemento kube-prometheus-stack são criados no namespace denominado monitoring.

Tabela 1 Componentes de kube-prometheus-stack

Componente

Descrição

Tipo de recurso

prometheusOperator

(nome da carga de trabalho: prometheus-operator)

Implementa e gerencia o Prometheus Server baseado em CustomResourceDefinitions (CRDs) e monitora e processa os eventos relacionados a esses CRDs. É o centro de controle de todo o sistema.

Implementação

prometheus

(nome da carga de trabalho: prometheus-server)

Um cluster de Prometheus Server implementado pelo operador com base nos CRDs de Prometheus que podem ser considerados StatefulSets.

StatefulSet

alertmanager

(nome da carga de trabalho: alertmanager-alertmanager)

Central de alarme do complemento. Ele recebe alarmes enviados pelo Prometheus e gerencia informações de alarme por meio da deduplicação, do agrupamento e da distribuição.

StatefulSet

thanosSidecar

Disponível apenas no modo HA. É executado com o prometheus-server no mesmo pod para implementar o armazenamento persistente de dados métricos do Prometheus.

Contêiner

thanosQuery

Disponível apenas no modo HA. Entrada para a consulta PromQL quando o Prometheus estiver em cenários de HA. Ele pode excluir métricas duplicadas de Store ou Prometheus.

Implementação

adapter

(nome da carga de trabalho: custom-metrics-apiserver)

Agrega métricas personalizadas ao servidor da API do Kubernetes nativo.

Implementação

kubeStateMetrics

(nome da carga de trabalho: kube-state-metrics)

Converte os dados de métrica do Prometheus em um formato que pode ser identificado pelas APIs do Kubernetes. Por padrão, o componente kube-state-metrics não coleta todos os rótulos e anotações dos recursos do Kubernetes. Para coletar todos os rótulos e anotações, consulte Coletar todos os rótulos e anotações de um pod.

NOTA:

Se os componentes forem executados em vários pods, apenas um pod fornecerá métricas.

Implementação

nodeExporter

(nome da carga de trabalho: node-exporter)

Implementado em cada nó para coletar dados de monitoramento de nó.

DaemonSet

grafana

(nome da carga de trabalho: grafana)

Visualiza dados de monitoramento. Grafana cria um volume de armazenamento de 5 GiB por padrão. Desinstalar o complemento não excluirá esse volume.

Implementação

clusterProblemDetector

(nome da carga de trabalho: cluster-problem-detector)

Monitora exceções de cluster.

Implementação

Fornecer métricas de recursos por meio de Metrics API

Métricas de recursos de contêineres e nós, como uso de CPU e memória, podem ser obtidas por meio da Metrics API do Kubernetes. As métricas de recursos podem ser acessadas diretamente, por exemplo, usando o comando kubectl top ou usadas pelas políticas HPA ou CustomedHPA para dimensionamento automático.

O complemento pode fornecer a Metrics API ao Kubernetes que está desativada por padrão. Para ativar a API, crie o seguinte objeto de APIService:

apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:
  labels:
    app: custom-metrics-apiserver
    release: cceaddon-prometheus
  name: v1beta1.metrics.k8s.io
spec:
  group: metrics.k8s.io
  groupPriorityMinimum: 100
  insecureSkipTLSVerify: true
  service:
    name: custom-metrics-apiserver
    namespace: monitoring
    port: 443
  version: v1beta1
  versionPriority: 100

Você pode salvar o objeto como um arquivo, nomeá-lo como metrics-apiservice.yaml e executar o seguinte comando:

kubectl create -f metrics-apiservice.yaml

Execute o comando de monitoramento kubectl top pod -n monitoring. Se as seguintes informações forem exibidas, a Metrics API poderá ser acessada:

# kubectl top pod -n monitoring
NAME                                                      CPU(cores)   MEMORY(bytes)
......
custom-metrics-apiserver-d4f556ff9-l2j2m                  38m          44Mi
......

Para desinstalar o complemento, execute o seguinte comando kubectl e exclua o objeto de APIService. Caso contrário, o complemento metrics-server não pode ser instalado devido a recursos residuais do APIService.

kubectl delete APIService v1beta1.metrics.k8s.io

Agregar métricas personalizadas ao servidor de API do Kubernetes

Por padrão, o kube-prometheus-stack da nova versão não agrega métricas personalizadas ao servidor de API do Kubernetes, e as regras de agregação de métricas não são mais configuradas no item de configuração user-adapter-config (ou adapter-config em versões anteriores). Para habilitar o dimensionamento HPA com base em métricas personalizadas, configure manualmente as regras de agregação de métricas. Para obter detalhes, consulte Detecção de métricas e configuração de apresentação. Se você atualizar o complemento, as configurações originais serão herdadas.

Para usar o prometheus para monitorar métricas personalizadas, o aplicativo precisa fornecer uma API de monitoramento de métricas. Para mais detalhes, consulte Coleta de dados de monitoramento de Prometheus.

  1. Efetue logon no console do CCE e clique no nome do cluster para acessar o console do cluster. No painel de navegação, escolha ConfigMaps and Secrets.
  2. Alterne para o namespace monitoring, localize o ConfigMap user-adapter-config (adapter-config em versões anteriores) na guia ConfigMaps e clique em Update.

    Figura 1 Atualizar um ConfigMap

  3. Em Data, clique em Edit para o arquivo config.yaml para adicionar uma regra de coleta de métrica personalizada no campo rules. Clique em OK.

    Você pode adicionar várias regras de coleta adicionando várias configurações no campo rules. Para obter detalhes, consulte Detecção de métricas e configuração de apresentação.

    Exemplo de regra de métrica personalizada:
    rules:
    # The rule matches the accumulated cAdvisor metric in seconds.
    - seriesQuery: '{__name__=~"^container_.*",container!="POD",namespace!="",pod!=""}'
      resources:
        # Specify pod and namespace resources.
        overrides:
          namespace:
            resource: namespace
          pod:
            resource: pod
      name:
        # Delete the container_ prefix and _seconds_total suffix, and use the content captured in .* as the metric name.
        matches: "^container_(.*)_seconds_total$"
      # Query metrics. .Series and .LabelMatchers are available in the Go language. Use separators << and >> to avoid conflicts with the Prometheus query language.
      metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>,container!="POD"}[2m])) by (<<.GroupBy>>)'

    No exemplo anterior, apenas as métricas básicas do pod são coletadas. Para coletar métricas personalizadas, consulte o guia oficial para adicionar ou modificar regras.

    Figura 2 Modificar dados do ConfigMap

  4. Reimplemente a carga de trabalho custom-metrics-apiserver no namespace monitoring.

    Figura 3 Reimplementação de custom-metrics-apiserver

Acessar ao Grafana

Se o Grafana for instalado durante a instalação do complemento, você poderá acessar o nó através do Serviço chamado grafana, que é um Serviço NodePort. Se o nó for acessado a partir de uma rede externa, você poderá vincular um EIP ao nó e acessar o nó através da porta do nó.

Como mostrado na figura a seguir, o endereço de acesso é http://{{Node EIP}}:30913.

Figura 4 Endereço para acessar Grafana

Coletar todos os rótulos e anotações de um pod

  1. Efetue logon no console do CCE e clique no nome do cluster para acessar o console do cluster. No painel de navegação, escolha Workloads.
  2. Alterne para o namespace monitoring, localize a carga de trabalho kube-state-metrics na página de guia Deployments e clique em Upgrade na coluna Operation.
  3. Na área Lifecycle das configurações de contêiner, edite o comando de inicialização.

    Figura 5 Editar o comando de inicialização
    Adicione as seguintes informações ao final do parâmetro de inicialização kube-state-metrics original:
    --metric-labels-allowlist=pods=[*],nodes=[node,failure-domain.beta.kubernetes.io/zone,topology.kubernetes.io/zone]
    Para coletar anotações, adicione parâmetros nos parâmetros de inicialização da mesma maneira.
    --metric-annotations-allowlist=pods=[*],nodes=[node,failure-domain.beta.kubernetes.io/zone,topology.kubernetes.io/zone]

    Ao editar o comando de inicialização, não modifique outros parâmetros de inicialização originais. Caso contrário, o componente pode ser anormal.

  4. kube-state-metrics começa a coletar os rótulos/anotações de pods e nós e verifica se kube_pod_labels/kube_pod_annotations está na tarefa de coleta de CloudScope.

    kubectl get servicemonitor kube-state-metrics -nmonitoring -oyaml | kube_pod_labels

Para obter mais parâmetros de inicialização do kube-state-metrics, consulte kube-state-metrics/cli-arguments.