Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Monitor an ACK cluster with open-source Prometheus

Última atualização: Aug 21, 2026

O Prometheus é uma ferramenta de monitoramento open source para aplicações cloud-native. Este tópico descreve como implantar o Prometheus em um cluster ACK.

Contexto

Este tópico aborda o monitoramento de componentes do sistema e entidades de recursos em um cluster Kubernetes. Os alvos de monitoramento dividem-se em duas categorias:

  • Monitoramento de recursos: rastreia a utilização de recursos de nós, clusters e Pods.

  • Monitoramento de aplicações: acompanha métricas internas da aplicação, como contagem de usuários em tempo real. Exponha portas para ativar o monitoramento e os alertas no nível da aplicação.

Os alvos de monitoramento incluem:

  • Componentes do sistema: componentes nativos do Kubernetes, como API Server, cloud-controller-manager e etcd. Configure o monitoramento nos respectivos arquivos de configuração.

  • Entidades de recursos estáticos: recursos como status de nó e eventos de kernel. Especifique-os nos arquivos de configuração para ativar o monitoramento.

  • Entidades de recursos dinâmicos: objetos de workload do Kubernetes, como Deployments, DaemonSets e Pods. Implante o Prometheus para monitorá-los.

  • Aplicações personalizadas: exponha portas e use o Prometheus para coletar métricas personalizadas das suas aplicações.

Etapa 1: Implantar o Prometheus open source

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Applications > Helm.

  3. Na página Helm, clique em Deploy. Na seção Chart, pesquise e selecione **ack-prometheus-operator**, mantenha as configurações padrão e clique em Next.

    • Por padrão, o componente é instalado no namespace monitoring, recebendo o nome do próprio componente.

    • Personalize o nome da aplicação e o namespace conforme necessário.

  4. Na página Parameters, selecione a versão do Chart 12.0.0, defina os parâmetros necessários e clique em OK.

    A versão 12.0.0 oferece suporte à configuração de alertas com funcionalidades integradas.

    Parâmetros opcionais:

    Após a instalação, verifique o status do componente na lista de charts Helm na página Helm .

Etapa 2: Visualizar tarefas de coleta do Prometheus

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Network > Services.

  3. Na página Services, selecione o namespace monitoring onde o ack-prometheus-operator foi implantado. Na coluna Actions referente ao ack-prometheus-operator-prometheus, clique em Update.

  4. Na caixa de diálogo, defina Type como LoadBalancer. Selecione Create Resource, defina Access Method como Public Access e configure Billing Method como Pay-as-you-go (Pay-by-CU). Clique em OK.

    Consulte CLB Billing Overview .
  5. Após a atualização, copie o endereço IP externo. Acesse a interface do Prometheus em <external_IP_address>:9090, por exemplo, 47.XX.XX.12:9090.

  6. Na interface do Prometheus, acesse para visualizar todas as tarefas de coleta de dados.

    Se todas as tarefas exibirem UP, a coleta de dados está funcionando corretamente.

  7. Na barra de menus, clique em Alerts para visualizar as regras de alerta atuais.

    Na página Alerts, visualize estatísticas de status dos alertas: Inactive (89), Pending (3) e Firing (4). Os alertas acionados no momento incluem TargetDown (2 ativos) e Watchdog (1 ativo).

Etapa 3: Visualizar dados agregados no Grafana

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Network > Services.

  3. Na página Services, selecione o namespace onde o **ack-prometheus-operator** está implantado (monitoring por padrão). Clique em Update na coluna Actions do Service chamado ack-prometheus-operator-grafana.

  4. Na caixa de diálogo, defina Type como LoadBalancer. Selecione Create Resource, defina Access Method como Public Access e configure Billing Method como Pay-as-you-go (Pay-by-CU). Clique em OK.

    Consulte CLB Billing Overview .
  5. Após a atualização, copie o endereço IP externo. Abra o painel do Grafana em <external_IP_address> (porta padrão: 80), por exemplo, 47.XX.XX.12.

    Dashboard

Configuração de alertas

O componente ack-prometheus-operator oferece suporte a alertas via DingTalk e e-mail.

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Applications > Helm.

  3. Clique em Create, localize ack-prometheus-operator e prossiga para a etapa Next. Na página Parameters, selecione a versão do Chart e configure os parâmetros conforme descrito abaixo.

    Caso o ack-prometheus-operator já esteja instalado, clique no respectivo nome na lista de charts Helm e, em seguida, clique em Parameters para atualizar a configuração.

Configurar alertas do DingTalk

  1. No arquivo de configuração, localize o campo dingtalk e defina enabled como true.

  2. No campo token, insira a URL do webhook do DingTalk.

    Consulte Use DingTalk Chatbots for Kubernetes Monitoring and Alerting para obter a URL do webhook.
  3. No campo alertmanager config, localize a configuração receiver e insira o nome do alerta do DingTalk definido em receivers. O nome padrão é webhook.

    Exemplo: Configurar múltiplos chatbots do DingTalk

    Caso possua dois chatbots do DingTalk, siga estas etapas:

    1. Substitua a configuração de token do DingTalk.

      Nas configurações do chatbot do DingTalk, substitua as URLs do webhook pelos endereços de dingtalk1 e dingtalk2. Substitua https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxx pelas URLs reais do seu webhook.

      ##
      podAnnotations: {}
      service:
        ## Configuration for dingtalk service
        ##
        annotations: {}
      clusterIP: ""
      externalIPs: ""
      loadBalancerIP: ""
      type: ClusterIP
      image:
        repository: timonwong/prometheus-webhook-dingtalk
        tag: latest
        pullPolicy: IfNotPresent
      # pls fill your dingtalk rebot token
      # ref: https://open-doc.dingtalk.com/microapp/serverapi2/qf2nxq
      token:
      - dingtalk1=https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxx
      - dingtalk2=https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxx
    2. Modifique receivers.

      No campo alertmanager config, localize receiver e insira os nomes correspondentes dos alertas do DingTalk provenientes da sua configuração de receivers. Neste exemplo, os nomes são webhook1 e webhook2.

    3. Altere o valor da URL.

      Substitua o valor na URL pelo nome correspondente do webhook do DingTalk. Neste exemplo, os nomes são dingtalk1 e dingtalk2.

      config:
        global:
          resolve_timeout: 5m
        route:
          group_by: ['job']
          group_wait: 1m
          group_interval: 1m
          repeat_interval: 2m
          receiver: "webhook1"
          routes:
            - match:
                alertname: Watchdog
              receiver: "webhook2"
        receivers:
        #- name: "null"
        - name: webhook1
          webhook_configs:
            - url: http://ack-prometheus-operator-dingtalk:8060/dingtalk/dingtalk1/send
              send_resolved: true
        - name: webhook2
          webhook_configs:
            - url: http://ack-prometheus-operator-dingtalk:8060/dingtalk/dingtalk2/send
              send_resolved: true
    Nota

    Para adicionar mais chatbots do DingTalk, inclua cada configuração de webhook sequencialmente.

Configurar alertas por e-mail

  1. Na seção destacada, insira os detalhes do e-mail.

  2. No campo alertmanager config, localize receiver e insira o nome do alerta por e-mail definido em receivers. O nome padrão é mail.

config:
  global:
    resolve_timeout: 5m
  route:
    group_by: ['job']
    group_wait: 1m
    group_interval: 1m
    repeat_interval: 2m
    receiver: "null"
    routes:
    - match:
        alertname: Watchdog
      receiver: "null"
  receivers:
  - name: "null"
  #- name: webhook
  #  webhook_configs:
  #  - url: http://ack-prometheus-operator-alertmanager.monitoring:8060/dingtalk/ops_dingding/send
  #    send_resolved: true
  #- name: 'mail'
  #  email_configs:
  #  - to: 'xxxxxxx@qq.com'        #receive address
  #    smarthost: 'smtp.163.com:465' #stmp server address
  #    from: 'xxxxx@163.com'        #sender address
  #    auth_username: 'xxxxx@163.com'  #email-username
  #    auth_password: 'xxxxxxxxx'      #email-password(Authorization code)
  #    require_tls: false             #tls switch
  #    send_resolved: true

Modelo de receptor de alertas

Personalize os modelos de alerta na seção templateFiles da configuração do alertmanager.

##
templateFiles: {}
#
# An example template:
#   template_1.tmpl: |-
#     {{ define "cluster" }}{{ .ExternalURL | reReplaceAll ".*alertmanager\.(.*)" "$1" }}{{ end }}
#
#     {{ define "slack.myorg.text" }}
#     {{- $root := . -}}
#     {{ range .Alerts }}
#       *Alert:* {{ .Annotations.summary }} - `{{ .Labels.severity }}`
#       *Cluster:*  {{ template "cluster" $root }}
#       *Description:* {{ .Annotations.description }}
#       *Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:>
#       *Runbook:* <{{ .Annotations.runbook }}|:spiral_note_pad:>
#       *Details:*
#         {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`
#         {{ end }}

Montar um ConfigMap personalizado no Prometheus

Use um ConfigMap chamado special-config para montar um arquivo de configuração e especificá-lo como parâmetro --config.file na inicialização do Pod.

  1. Crie um ConfigMap.

    Expanda para visualizar um exemplo de ConfigMap

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: special-config
    data:
      config.yaml: |-
          global:
            # Scrape interval, default is 1m
            [ scrape_interval: <duration> | default = 1m ]
    
            # Scrape timeout, default is 10s
            [ scrape_timeout: <duration> | default = 10s ]
    
            # Rule evaluation interval, default is 1m
            [ evaluation_interval: <duration> | default = 1m ]
    
          # Scrape configurations
          scrape_configs:
            [ - <scrape_config> ... ]
    
          # Rule files
          rule_files:
            [ - <filepath_glob> ... ]
    
          # Alerting configuration
          alerting:
            alert_relabel_configs:
              [ - <relabel_config> ... ]
            alertmanagers:
              [ - <alertmanager_config> ... ]
  2. Monte o ConfigMap.

    Na página Parameters, adicione o seguinte ao campo configmaps para montar o ConfigMap em /etc/prometheus/configmaps/ no Pod do Prometheus.

    ## ConfigMaps is a list of ConfigMaps in the same namespace as the Alertmanager object, which shall be mounted
    ## into the Alertmanager Pods.
      ## The ConfigMaps are mounted into /etc/alertmanager/configmaps/.
      ##
    configMaps: [special-config]

    Exemplo de configuração de prometheus configmaps:

    ## ConfigMaps is a list of ConfigMaps in the same namespace as the Prometheus
    ## The ConfigMaps are mounted into /etc/prometheus/configmaps/.
    ##
    configMaps:
    - "special-config"
    - "detail-config"

Configuração do Grafana

Montar um arquivo de painel no Grafana

Para montar um ConfigMap de painel em um Pod do Grafana, use o campo extraConfigmapMounts no assistente de Parameters.

extraConfigmapMounts: []
# - name: certs-configmap
#   mountPath: /etc/grafana/ssl/
#   configMap: certs-configmap
#   readOnly: true

Certifique-se de que:

  • O painel exista como um ConfigMap no cluster e seus rótulos sigam o formato dos demais ConfigMaps.

  • O campo extraConfigmapMounts na configuração do Grafana inclua o ConfigMap do painel e as informações de montagem.

    • mountPath: defina como /tmp/dashboards/.

    • ConfigMap: o nome do seu ConfigMap personalizado.

    • name: o nome do arquivo JSON do painel.

Ativar persistência de painéis

Exporte os painéis como arquivos JSON para backup. Consulte Grafana Export.

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Applications > Helm.

  3. Localize ack-prometheus-operator e clique em Update. No campo grafana, configure a opção persistence conforme mostrado abaixo.

    ##
    persistence:
      #Persistent switch
      enabled: false
      #storageClass Name,there are four types of storageclasses: alicloud-disk-available,alicloud-disk-efficiency,alicloud-disk-essd,alicloud-disk-ssd
      storageClassName: alicloud-disk-efficiency
      accessModes:
        - ReadWriteOnce
      size: 30Gi
      # annotations: {}
      # subPath: ""
      #existingClaim:

Operações relacionadas

Desinstalar o Prometheus open source

Para evitar recursos residuais, siga o procedimento correspondente à versão do seu chart Helm. Limpe manualmente a release do Helm, o namespace, os CRDs e o Service do kubelet.

O Service do kubelet não é excluído automaticamente durante a desinstalação — trata-se de um problema conhecido da comunidade ( #1523 ). Exclua-o manualmente conforme descrito abaixo.

Chart v12.0.0

Console

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster e execute as operações a seguir no painel de navegação à esquerda.

    • Desinstale a release do Helm: escolha Applications > Helm. Na lista de releases do Helm, localize a entrada ack-prometheus-operator, clique em Delete na coluna Actions e conclua a exclusão. Limpe os registros da release.

    • Exclua o namespace: clique em Namespaces and Quotas. Na lista de namespaces, localize e selecione monitoring e exclua-o.

    • Exclua as CustomResourceDefinitions (CRDs): acesse Workloads > Custom Resources e clique na aba CRDs. Exclua todos os recursos de CRD sob o grupo de API monitoring.coreos.com:

      • AlertmanagerConfig

      • Alertmanager

      • PodMonitor

      • Probe

      • Prometheus

      • PrometheusRule

      • ServiceMonitor

      • ThanosRuler

    • Exclua o Service do kubelet: escolha Network > Services. Localize e exclua ack-prometheus-operator-kubelet no namespace kube-system.

Kubectl

  • Desinstale a release do Helm

    helm uninstall ack-prometheus-operator -n monitoring
  • Exclua o namespace

    kubectl delete namespace monitoring
  • Exclua os CRDs

    kubectl delete crd alertmanagerconfigs.monitoring.coreos.com
    kubectl delete crd alertmanagers.monitoring.coreos.com
    kubectl delete crd podmonitors.monitoring.coreos.com
    kubectl delete crd probes.monitoring.coreos.com
    kubectl delete crd prometheuses.monitoring.coreos.com
    kubectl delete crd prometheusrules.monitoring.coreos.com
    kubectl delete crd servicemonitors.monitoring.coreos.com
    kubectl delete crd thanosrulers.monitoring.coreos.com
  • Exclua o Service do kubelet

    kubectl delete service ack-prometheus-operator-kubelet -n kube-system

Chart v65.1.1

Console

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster e execute as operações a seguir no painel de navegação à esquerda.

    • Desinstale a release do Helm: escolha Applications > Helm. Na lista de releases do Helm, localize a entrada ack-prometheus-operator, clique em Delete na coluna Actions e conclua a exclusão. Limpe os registros da release.

    • Exclua o namespace: clique em Namespaces and Quotas. Na lista de namespaces, localize e selecione monitoring e exclua-o.

    • Exclua as CustomResourceDefinitions (CRDs): acesse Workloads > Custom Resources e clique na aba CRDs. Exclua todos os recursos de CRD sob o grupo de API monitoring.coreos.com:

      • AlertmanagerConfig

      • Alertmanager

      • PodMonitor

      • Probe

      • PrometheusAgent

      • Prometheus

      • PrometheusRule

      • ScrapeConfig

      • ServiceMonitor

      • ThanosRuler

    • Exclua o Service do kubelet: escolha Network > Services. Localize e exclua ack-prometheus-operator-kubelet no namespace kube-system.

Kubectl

  • Desinstale a release do Helm

    helm uninstall ack-prometheus-operator -n monitoring
  • Exclua o namespace

    kubectl delete namespace monitoring
  • Exclua os CRDs

    kubectl delete crd alertmanagerconfigs.monitoring.coreos.com
    kubectl delete crd alertmanagers.monitoring.coreos.com
    kubectl delete crd podmonitors.monitoring.coreos.com
    kubectl delete crd probes.monitoring.coreos.com
    kubectl delete crd prometheusagents.monitoring.coreos.com
    kubectl delete crd prometheuses.monitoring.coreos.com
    kubectl delete crd prometheusrules.monitoring.coreos.com
    kubectl delete crd scrapeconfigs.monitoring.coreos.com
    kubectl delete crd servicemonitors.monitoring.coreos.com
    kubectl delete crd thanosrulers.monitoring.coreos.com
  • Exclua o Service do kubelet

    kubectl delete service ack-prometheus-operator-kubelet -n kube-system

Configurar silenciamento de alertas

As regras de silenciamento suprimem notificações de alerta correspondentes até que o período de silêncio expire ou a regra seja excluída.

  1. Exponha o Alertmanager na porta local 9093:

    kubectl --address 0.0.0.0 port-forward svc/alertmanager-operated 9093 -n monitoring
  2. Associate an Elastic IP address (EIP) with your ECS instance e, em seguida, acesse o Alertmanager em <EIP>:9093.

    Certifique-se de que o grupo de segurança permita tráfego do seu IP local na porta 9093. Consulte Add a Security Group Rule .
  3. Clique em Silence para configurar o silenciamento de alertas.

Perguntas frequentes

Nenhum alerta recebido após configuração do DingTalk

  1. Obtenha a URL do webhook para o seu chatbot do DingTalk. Consulte Event Monitoring.

  2. Localize o campo dingtalk, defina enabled como true e insira a URL do webhook do DingTalk no campo Token. Consulte Configurar alertas do DingTalk em Alert configuration.

Erro ao implantar prometheus-operator

A seguinte mensagem de erro é relatada:

Can't install release with errors: rpc error: code = Unknown desc = object is being deleted: customresourcedefinitions.apiextensions.k8s.io "xxxxxxxx.monitoring.coreos.com" already exists

Esse erro ocorre porque os CRDs de uma implantação anterior não foram limpos. Exclua os CRDs e reimplemente o componente:

kubectl delete crd prometheuses.monitoring.coreos.com
kubectl delete crd prometheusrules.monitoring.coreos.com
kubectl delete crd servicemonitors.monitoring.coreos.com
kubectl delete crd alertmanagers.monitoring.coreos.com

Alertas por e-mail não funcionam

Os alertas por e-mail podem falhar caso você insira sua senha de login em smtp_auth_password em vez do código de autorização. O endereço do servidor SMTP deve incluir um número de porta.

Ocorre um erro ao clicar em YAML Update: The current cluster is temporarily unavailable. Please try again later.

Isso acontece quando o arquivo de configuração do Tiller é muito grande, tornando o cluster inacessível. Reduza o tamanho do arquivo removendo comentários e monte-o como um ConfigMap. O prometheus-operator oferece suporte à montagem de ConfigMap apenas para Pods do prometheus e alertmanager. Consulte Mount a custom ConfigMap to Prometheus.

Ativar recursos após a implantação

Ative recursos após implantar o prometheus-operator. Na página de detalhes do cluster, escolha Applications > Helm. Localize ack-prometheus-operator e clique em Update na coluna Actions. Encontre o recurso a ser ativado, configure-o e clique em OK.

Escolher entre TSDB e discos do Alibaba Cloud

O TSDB está disponível em menos regiões do que os discos do Alibaba Cloud. Política de retenção de dados:

## How long to retain metrics
##
retention: 10d

Problemas de exibição no painel do Grafana

Na página de detalhes do cluster, escolha Applications > Helm. Localize ack-prometheus-operator e clique em Update na coluna Actions. Verifique se clusterVersion corresponde à versão do seu cluster. Para clusters anteriores à v1.16, insira 1.14.8-aliyun.1. Para v1.16 ou posterior, insira 1.16.6-aliyun.1.

Reinstalação falha após exclusão do namespace

Excluir apenas o namespace pode deixar configurações residuais. Limpe os seguintes recursos:

  1. Exclua as permissões RBAC.

    1. Exclua os ClusterRoles.

      kubectl delete ClusterRole ack-prometheus-operator-grafana-clusterrole
      kubectl delete ClusterRole ack-prometheus-operator-kube-state-metrics
      kubectl delete ClusterRole psp-ack-prometheus-operator-kube-state-metrics
      kubectl delete ClusterRole psp-ack-prometheus-operator-prometheus-node-exporter
      kubectl delete ClusterRole ack-prometheus-operator-operator
      kubectl delete ClusterRole ack-prometheus-operator-operator-psp
      kubectl delete ClusterRole ack-prometheus-operator-prometheus
      kubectl delete ClusterRole ack-prometheus-operator-prometheus-psp
    2. Exclua os ClusterRoleBindings.

      kubectl delete ClusterRoleBinding ack-prometheus-operator-grafana-clusterrolebinding
      kubectl delete ClusterRoleBinding ack-prometheus-operator-kube-state-metrics
      kubectl delete ClusterRoleBinding psp-ack-prometheus-operator-kube-state-metrics
      kubectl delete ClusterRoleBinding psp-ack-prometheus-operator-prometheus-node-exporter
      kubectl delete ClusterRoleBinding ack-prometheus-operator-operator
      kubectl delete ClusterRoleBinding ack-prometheus-operator-operator-psp
      kubectl delete ClusterRoleBinding ack-prometheus-operator-prometheus
      kubectl delete ClusterRoleBinding ack-prometheus-operator-prometheus-psp
  2. Exclua os CRDs.

    kubectl delete crd alertmanagerconfigs.monitoring.coreos.com
    kubectl delete crd alertmanagers.monitoring.coreos.com
    kubectl delete crd podmonitors.monitoring.coreos.com
    kubectl delete crd probes.monitoring.coreos.com
    kubectl delete crd prometheuses.monitoring.coreos.com
    kubectl delete crd prometheusrules.monitoring.coreos.com
    kubectl delete crd servicemonitors.monitoring.coreos.com
    kubectl delete crd thanosrulers.monitoring.coreos.com