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/ Observabilidade/ Monitoramento/ Monitoramento de métricas dos componentes do nó principais
Atualizado em 2024-11-28 GMT+08:00

Monitoramento de métricas dos componentes do nó principais

Exibir métricas dos componentes do nó principal

O complemento kube-prometheus-stack (Monitoramento de cluster da nuvem nativa) da versão 3.5.0 ou posterior pode monitorar e coletar métricas de kube-apiserver, kube-controller, kube-schedule e etcd-server nos nós principais.

  1. Instale o kube-prometheus-stack da versão 3.5.0 ou posterior em seu cluster. Para mais detalhes, consulte Monitoramento de cluster da nuvem nativa.
  2. Após a instalação, aguarde até que todas as instâncias complementares estejam em execução.
  3. Crie um serviço de rede pública do Serviço LoadBalancer para o Prometheus. Digite load balancer public IP: Service port na caixa de endereço do navegador para acessar o Prometheus. Para obter detalhes, consulte Acesso do Prometheus.

  4. Escolha Status > Targets. Os componentes de nó principal anteriores são exibidos.

Coletar métricas dos componentes do nó principal usando Prometheus autoconstruído

Esta seção descreve como coletar as métricas dos componentes do nó principal usando o prometheus autoconstruído.

  • A versão do cluster deve ser 1.19 ou posterior.
  • O prometheus-operator deve ser instalado no cluster. Para obter detalhes, consulte Operador de Prometheus.
  1. Prometheus autoconstruído deve ser instalado no cluster. Para obter detalhes, consulte Gráficos do Helm da comunidade de Prometheus. O complemento de prometheus (Prometheus (EOM)) está em fim de manutenção e não suporta esta função. Portanto, evite usar esse complemento.
  2. Use kubectl para se conectar ao cluster.
  3. Modifique o ClusterRole de Prometheus.

    kubectl edit ClusterRole prometheus -n {namespace}
    Adicione o seguinte conteúdo sob o campo rules:
    rules:
    ...
    - apiGroups:
      - proxy.exporter.k8s.io
      resources:
      - "*"
      verbs: ["get", "list", "watch"]

  4. Crie um arquivo chamado kube-apiserver.yaml e edite-o.

    vi kube-apiserver.yaml
    Exemplo de conteúdo do arquivo:
    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      labels:
        app.kubernetes.io/name: apiserver
      name: kube-apiserver
      namespace: monitoring    # Change it to the namespace where Prometheus will be installed.
    spec:
      endpoints:
      - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
        interval: 30s
        metricRelabelings:
        - action: keep
          regex: (aggregator_unavailable_apiservice|apiserver_admission_controller_admission_duration_seconds_bucket|apiserver_admission_webhook_admission_duration_seconds_bucket|apiserver_admission_webhook_admission_duration_seconds_count|apiserver_client_certificate_expiration_seconds_bucket|apiserver_client_certificate_expiration_seconds_count|apiserver_current_inflight_requests|apiserver_request_duration_seconds_bucket|apiserver_request_total|go_goroutines|kubernetes_build_info|process_cpu_seconds_total|process_resident_memory_bytes|rest_client_requests_total|workqueue_adds_total|workqueue_depth|workqueue_queue_duration_seconds_bucket|aggregator_unavailable_apiservice_total|rest_client_request_duration_seconds_bucket)
          sourceLabels:
          - __name__
        - action: drop
          regex: apiserver_request_duration_seconds_bucket;(0.15|0.25|0.3|0.35|0.4|0.45|0.6|0.7|0.8|0.9|1.25|1.5|1.75|2.5|3|3.5|4.5|6|7|8|9|15|25|30|50)
          sourceLabels:
          - __name__
          - le
        port: https
        scheme: https
        tlsConfig:
          caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
          serverName: kubernetes
      jobLabel: component
      namespaceSelector:
        matchNames:
        - default
      selector:
        matchLabels:
          component: apiserver
          provider: kubernetes

    Crie um ServiceMonitor:

    kubectl apply -f kube-apiserver.yaml

  5. Crie um arquivo chamado kube-controller.yaml e edite-o.

    vi kube-controller.yaml
    Exemplo de conteúdo do arquivo:
    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      labels:
        app.kubernetes.io/name: kube-controller
      name: kube-controller-manager
      namespace: monitoring    # Change it to the namespace where Prometheus will be installed.
    spec:
      endpoints:
        - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
          interval: 15s
          honorLabels: true
          port: https
          relabelings:
            - regex: (.+)
              replacement: /apis/proxy.exporter.k8s.io/v1beta1/kube-controller-proxy/${1}/metrics
              sourceLabels:
                - __address__
              targetLabel: __metrics_path__
            - regex: (.+)
              replacement: ${1}
              sourceLabels:
                - __address__
              targetLabel: instance
            - replacement: kubernetes.default.svc.cluster.local:443
              targetLabel: __address__
          scheme: https
          tlsConfig:
            caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
      jobLabel: app
      namespaceSelector:
        matchNames:
          - kube-system
      selector:
        matchLabels:
          app: kube-controller-proxy
          version: v1

    Crie um ServiceMonitor:

    kubectl apply -f kube-controller.yaml

  6. Crie um arquivo chamado kube-scheduler.yaml e edite-o.

    vi kube-scheduler.yaml
    Exemplo de conteúdo do arquivo:
    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      labels:
        app.kubernetes.io/name: kube-scheduler
      name: kube-scheduler
      namespace: monitoring    # Change it to the namespace where Prometheus will be installed.
    spec:
      endpoints:
        - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
          interval: 15s
          honorLabels: true
          port: https
          relabelings:
            - regex: (.+)
              replacement: /apis/proxy.exporter.k8s.io/v1beta1/kube-scheduler-proxy/${1}/metrics
              sourceLabels:
                - __address__
              targetLabel: __metrics_path__
            - regex: (.+)
              replacement: ${1}
              sourceLabels:
                - __address__
              targetLabel: instance
            - replacement: kubernetes.default.svc.cluster.local:443
              targetLabel: __address__
          scheme: https
          tlsConfig:
            caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
      jobLabel: app
      namespaceSelector:
        matchNames:
          - kube-system
      selector:
        matchLabels:
          app: kube-scheduler-proxy
          version: v1

    Crie um ServiceMonitor:

    kubectl apply -f kube-scheduler.yaml

  7. Crie um arquivo chamado etcd-server.yaml e edite-o.

    vi etcd-server.yaml
    Exemplo de conteúdo do arquivo:
    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      labels:
        app.kubernetes.io/name: etcd-server
      name: etcd-server
      namespace: monitoring    # Change it to the namespace where Prometheus will be installed.
    spec:
      endpoints:
        - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
          interval: 15s
          honorLabels: true
          port: https
          relabelings:
            - regex: (.+)
              replacement: /apis/proxy.exporter.k8s.io/v1beta1/etcd-server-proxy/${1}/metrics
              sourceLabels:
                - __address__
              targetLabel: __metrics_path__
            - regex: (.+)
              replacement: ${1}
              sourceLabels:
                - __address__
              targetLabel: instance
            - replacement: kubernetes.default.svc.cluster.local:443
              targetLabel: __address__
          scheme: https
          tlsConfig:
            caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
      jobLabel: app
      namespaceSelector:
        matchNames:
          - kube-system
      selector:
        matchLabels:
          app: etcd-server-proxy
          version: v1

    Crie um ServiceMonitor:

    etcd-server.yaml

  8. Após a criação, se você tiver criado um Serviço LoadBalancer de rede pública para Prometheus, poderá acessar load balancer public IP: Service port para acessar o Prometheus.

  9. Escolha Status > Targets. Os componentes de nó principal anteriores são exibidos.