Todos os produtos
Search
Central de documentação

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

Última atualização: Sep 29, 2026

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

Contexto

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

  • Monitoramento de recursos: acompanha o uso de recursos de nós, clusters e Pods.

  • Monitoramento de aplicações: acompanha métricas internas da aplicação, como contagens de usuários em tempo real. Exponha portas para habilitar 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ós e eventos do kernel. Especifique-os nos arquivos de configuração para habilitar o monitoramento.

  • Entidades de recursos dinâmicos: objetos de carga de trabalho 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 console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique em 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.

    • O componente é instalado no namespace monitoring por padrão, com 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 recursos integrados.

    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 console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique em 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 está implantado. Na coluna Actions do service 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 defina 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 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 menu, clique em Alerts para visualizar as regras de alerta atuais.

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

Etapa 3: Visualizar dados agregados no Grafana

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

  2. Na página Clusters, clique em 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 defina 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 console do ACK. No painel de navegação à esquerda, clique em Clusters.

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

  3. Clique em Create, localize o 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 a seguir.

    Se o ack-prometheus-operator já estiver instalado, clique em seu nome na lista de charts Helm e, em seguida, clique em Parameters para atualizar a configuração.

Configurar alertas via 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 de receiver e insira o nome do alerta DingTalk definido em receivers. O nome padrão é webhook.

    Exemplo: Configurar múltiplos chatbots do DingTalk

    Se você possui dois chatbots do DingTalk, siga estas etapas:

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

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

      ##
      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 de alerta do DingTalk correspondentes da sua configuração de receivers. Neste exemplo, os nomes são webhook1 e webhook2.

    3. Modifique o valor da URL.

      Substitua o valor na URL pelo nome do webhook do DingTalk correspondente. 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 em sequência.

Configurar alertas por e-mail

  1. Na seção destacada, insira os dados 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 }}

Monte um ConfigMap personalizado no Prometheus

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

  1. Crie um ConfigMap.

    Expandir para ver 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 trecho a seguir 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

Monte um arquivo de painel no Grafana

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

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

Certifique-se de que:

  • O painel existe como ConfigMap no cluster e seus rótulos seguem o formato dos demais ConfigMaps.

  • O campo extraConfigmapMounts na configuração do Grafana inclui 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.

Ative a persistência de painéis

Exporte painéis como arquivos JSON para backup. Consulte Exportação do Grafana.

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

  2. Na página Clusters, clique em no nome do cluster desejado. 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 o exemplo 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 Helm chart. Remova manualmente o Helm release, 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 na comunidade ( #1523 ). Exclua-o manualmente conforme descrito a seguir.

Chart v12.0.0

Console

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

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

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

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

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

      • AlertmanagerConfig

      • Alertmanager

      • PodMonitor

      • Probe

      • Prometheus

      • PrometheusRule

      • ServiceMonitor

      • ThanosRuler

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

Kubectl

  • Desinstale o Helm release

    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 logon no console do ACK. No painel de navegação à esquerda, clique em Clusters.

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

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

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

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

      • AlertmanagerConfig

      • Alertmanager

      • PodMonitor

      • Probe

      • PrometheusAgent

      • Prometheus

      • PrometheusRule

      • ScrapeConfig

      • ServiceMonitor

      • ThanosRuler

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

Kubectl

  • Desinstale o Helm release

    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

Configure o silenciamento de alertas

Regras de silenciamento suprimem notificações de alertas correspondentes até que o período de silenciamento 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, depois acesse o Alertmanager em <EIP>:9093.

    Certifique-se de que o grupo de segurança permite 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

Alertas não recebidos após a configuração do DingTalk

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

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

Erro ao implantar o prometheus-operator

A seguinte mensagem de erro é exibida:

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 removidos. Exclua os CRDs e reimplante 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 se você informar a senha de login em vez do código de autorização no campo smtp_auth_password. O endereço do servidor SMTP deve incluir o número da 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 os comentários e monte-o como um ConfigMap. O prometheus-operator suporta montagem de ConfigMap apenas para Pods do prometheus e do 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 que deseja ativar, configure-o e clique em OK.

Escolher entre TSDB e discos Alibaba Cloud

O TSDB está disponível em menos regiões do que os discos 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.

A reinstalação falha após excluir o 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