Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Surveiller un cluster ACK avec Prometheus open source

Dernière mise à jour :Aug 21, 2026

Prometheus est un outil de surveillance open source dédié aux applications cloud-native. Cette rubrique explique comment déployer Prometheus sur un cluster ACK.

Contexte

Cette rubrique aborde la surveillance des composants système et des entités de ressources au sein d'un cluster Kubernetes. Les cibles de surveillance se répartissent en deux catégories :

  • Surveillance des ressources : suit l'utilisation des ressources par les nœuds, les clusters et les Pods.

  • Surveillance des applications : suit les métriques internes des applications, telles que le nombre d'utilisateurs en temps réel. Exposez des ports pour activer la surveillance et les alertes au niveau de l'application.

Les cibles de surveillance incluent :

  • Composants système : composants Kubernetes intégrés tels que l'API Server, cloud-controller-manager et etcd. Configurez la surveillance directement dans leurs fichiers de configuration respectifs.

  • Entités de ressources statiques : ressources telles que l'état des nœuds et les événements du noyau. Spécifiez-les dans les fichiers de configuration pour activer leur surveillance.

  • Entités de ressources dynamiques : objets de charge de travail Kubernetes tels que les Deployments, DaemonSets et Pods. Déployez Prometheus pour les surveiller.

  • Applications personnalisées : exposez des ports et utilisez Prometheus pour collecter des métriques personnalisées depuis vos applications.

Étape 1 : Déployer Prometheus open source

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, accédez à Applications > Helm.

  3. Sur la page Helm, cliquez sur Deploy. Dans la section Chart, recherchez et sélectionnez **ack-prometheus-operator**, conservez les paramètres par défaut, puis cliquez sur Next.

    • Le composant s'installe par défaut dans le namespace monitoring, avec un nom correspondant au composant.

    • Personnalisez le nom de l'application et le namespace selon vos besoins.

  4. Sur la page Parameters, sélectionnez la version 12.0.0 du Chart, définissez les paramètres requis, puis cliquez sur OK.

    La version 12.0.0 prend en charge la configuration des alertes via des fonctionnalités intégrées.

    Paramètres facultatifs :

    Après l'installation, vérifiez l'état du composant dans la liste des charts Helm sur la page Helm .

Étape 2 : Consulter les tâches de collecte Prometheus

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, accédez à Network > Services.

  3. Sur la page Services, sélectionnez le namespace monitoringack-prometheus-operator est déployé. Dans la colonne Actions pour ack-prometheus-operator-prometheus, cliquez sur Update.

  4. Dans la boîte de dialogue, définissez le type sur LoadBalancer. Sélectionnez Create Resource, définissez la Access Method sur Public Access, et définissez la Billing Method sur Pay-as-you-go (Pay-by-CU). Cliquez sur OK.

    Consultez la Présentation de la facturation CLB .
  5. Après la mise à jour, copiez l'adresse IP externe. Ouvrez l'interface utilisateur Prometheus à l'adresse <external_IP_address>:9090, par exemple 47.XX.XX.12:9090.

  6. Dans l'interface utilisateur Prometheus, accédez à pour afficher toutes les tâches de collecte de données.

    Si toutes les tâches affichent l'état UP, la collecte de données fonctionne correctement.

  7. Dans la barre de menu, cliquez sur Alerts pour afficher les règles d'alerte actuelles.

    Sur la page Alerts, vous pouvez consulter les statistiques d'état des alertes : Inactive (89), Pending (3) et Firing (4). Les alertes actuellement déclenchées incluent TargetDown (2 actives) et Watchdog (1 active).

Étape 3 : Consulter les données agrégées dans Grafana

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, accédez à Network > Services.

  3. Sur la page Services, sélectionnez le namespace où **ack-prometheus-operator** est déployé (monitoring par défaut). Cliquez sur Update dans la colonne Actions pour le service nommé ack-prometheus-operator-grafana.

  4. Dans la boîte de dialogue, définissez le type sur LoadBalancer. Sélectionnez Create Resource, définissez la Access Method sur Public Access, et définissez la Billing Method sur Pay-as-you-go (Pay-by-CU). Cliquez sur OK.

    Consultez la Présentation de la facturation CLB .
  5. Après la mise à jour, copiez l'adresse IP externe. Ouvrez le tableau de bord Grafana à l'adresse <external_IP_address> (port par défaut : 80), par exemple 47.XX.XX.12.

    Dashboard

Configuration des alertes

Le composant ack-prometheus-operator prend en charge les alertes DingTalk et par e-mail.

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, accédez à Applications > Helm.

  3. Cliquez sur Create, trouvez ack-prometheus-operator, puis passez à l'étape Next. Sur la page Parameters, sélectionnez la version du Chart et configurez les paramètres comme décrit ci-dessous.

    Si ack-prometheus-operator est déjà installé, cliquez sur son nom dans la liste des charts Helm, puis cliquez sur Parameters pour mettre à jour la configuration.

Configurer les alertes DingTalk

  1. Dans le fichier de configuration, localisez le champ dingtalk et définissez enabled sur true.

  2. Dans le champ token, saisissez l'URL du webhook DingTalk.

    Consultez la rubrique Utiliser les chatbots DingTalk pour la surveillance et les alertes Kubernetes pour obtenir l'URL du webhook.
  3. Dans le champ alertmanager config, localisez la configuration receiver et saisissez le nom de l'alerte DingTalk défini dans receivers. Le nom par défaut est webhook.

    Exemple : Configurer plusieurs chatbots DingTalk

    Si vous disposez de deux chatbots DingTalk, suivez ces étapes :

    1. Remplacez la configuration du token DingTalk.

      Dans les paramètres du chatbot DingTalk, remplacez les URL des webhooks par les adresses de dingtalk1 et dingtalk2. Remplacez https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxx par vos URL de webhook réelles.

      ##
      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. Modifiez receivers.

      Dans le champ alertmanager config, localisez receiver et saisissez les noms d'alertes DingTalk correspondants issus de votre configuration receivers. Dans cet exemple, les noms sont webhook1 et webhook2.

    3. Modifiez la valeur de l'URL.

      Remplacez la valeur dans l'URL par le nom du webhook DingTalk correspondant. Dans cet exemple, les noms sont dingtalk1 et 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
    Remarque

    Pour ajouter davantage de chatbots DingTalk, ajoutez chaque configuration de webhook séquentiellement.

Configurer les alertes par e-mail

  1. Dans la section mise en surbrillance, saisissez les détails de l'e-mail.

  2. Dans le champ alertmanager config, recherchez receiver et entrez le nom de l'alerte e-mail défini dans receivers. Le nom par défaut est 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

Modèle de destinataire d'alerte

Personnalisez les modèles d'alerte dans la section templateFiles de la configuration 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 }}

Monter un ConfigMap personnalisé sur Prometheus

Utilisez un ConfigMap nommé special-config pour monter un fichier de configuration et spécifiez-le comme paramètre --config.file au démarrage du Pod.

  1. Créez un ConfigMap.

    Développer pour afficher un exemple 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. Montez le ConfigMap.

    Sur la page Parameters, ajoutez ce qui suit au champ configmaps pour monter le ConfigMap sur /etc/prometheus/configmaps/ dans le Pod 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]

    Exemple de configuration 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"

Configuration de Grafana

Monter un fichier de tableau de bord sur Grafana

Pour monter un ConfigMap de tableau de bord sur un Pod Grafana, utilisez le champ extraConfigmapMounts dans l'assistant Parameters.

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

Assurez-vous que :

  • Le tableau de bord existe en tant que ConfigMap dans le cluster et ses libellés correspondent au format des autres ConfigMaps.

  • Le champ extraConfigmapMounts de la configuration Grafana inclut le ConfigMap du tableau de bord et les informations de montage.

    • mountPath : Définissez sur /tmp/dashboards/.

    • ConfigMap : Le nom de votre ConfigMap personnalisé.

    • name : Le nom du fichier JSON du tableau de bord.

Activer la persistance des tableaux de bord

Exportez les tableaux de bord sous forme de fichiers JSON pour la sauvegarde. Consultez Grafana Export.

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Applications > Helm.

  3. Recherchez ack-prometheus-operator et cliquez sur Update. Dans le champ grafana, configurez l'option persistence comme indiqué ci-dessous.

    ##
    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:

Opérations connexes

Désinstaller Prometheus open source

Pour éviter les ressources résiduelles, suivez la procédure correspondant à la version de votre chart Helm. Nettoyez manuellement la release Helm, le namespace, les CRD et le service kubelet.

Le service kubelet n'est pas automatiquement supprimé lors de la désinstallation — il s'agit d'un problème connu de la communauté ( #1523 ). Supprimez-le manuellement comme décrit ci-dessous.

Chart v12.0.0

Console

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster et effectuez les opérations suivantes depuis le volet de navigation de gauche.

    • Désinstallez la release Helm : Choisissez Applications > Helm. Dans la liste des releases Helm, recherchez l'entrée ack-prometheus-operator, cliquez sur Delete dans la colonne Actions et terminez la suppression. Effacez les enregistrements de release.

    • Supprimez le namespace : Cliquez sur Namespaces and Quotas. Dans la liste des namespaces, recherchez et sélectionnez monitoring, puis supprimez-le.

    • Supprimez les CustomResourceDefinitions (CRD) : Accédez à Workloads > Custom Resources et cliquez sur l'onglet CRDs. Supprimez toutes les ressources CRD sous le groupe d'API monitoring.coreos.com :

      • AlertmanagerConfig

      • Alertmanager

      • PodMonitor

      • Probe

      • Prometheus

      • PrometheusRule

      • ServiceMonitor

      • ThanosRuler

    • Supprimez le service kubelet : Choisissez Network > Services. Recherchez et supprimez ack-prometheus-operator-kubelet dans le namespace kube-system.

Kubectl

  • Désinstallez la release Helm

    helm uninstall ack-prometheus-operator -n monitoring
  • Supprimez le namespace

    kubectl delete namespace monitoring
  • Supprimez les CRD

    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
  • Supprimez le service kubelet

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

Chart v65.1.1

Console

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster et effectuez les opérations suivantes depuis le volet de navigation de gauche.

    • Désinstallez la release Helm : Choisissez Applications > Helm. Dans la liste des releases Helm, recherchez l'entrée ack-prometheus-operator, cliquez sur Delete dans la colonne Actions et terminez la suppression. Effacez les enregistrements de release.

    • Supprimez le namespace : Cliquez sur Namespaces and Quotas. Dans la liste des namespaces, recherchez et sélectionnez monitoring, puis supprimez-le.

    • Supprimez les CustomResourceDefinitions (CRD) : Accédez à Workloads > Custom Resources et cliquez sur l'onglet CRDs. Supprimez toutes les ressources CRD sous le groupe d'API monitoring.coreos.com :

      • AlertmanagerConfig

      • Alertmanager

      • PodMonitor

      • Probe

      • PrometheusAgent

      • Prometheus

      • PrometheusRule

      • ScrapeConfig

      • ServiceMonitor

      • ThanosRuler

    • Supprimez le service kubelet : Choisissez Network > Services. Recherchez et supprimez ack-prometheus-operator-kubelet dans le namespace kube-system.

Kubectl

  • Désinstallez la release Helm

    helm uninstall ack-prometheus-operator -n monitoring
  • Supprimez le namespace

    kubectl delete namespace monitoring
  • Supprimez les CRD

    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
  • Supprimez le service kubelet

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

Configurer la mise en sourdine des alertes

Les règles de mise en sourdine suppriment les notifications d'alerte correspondantes jusqu'à l'expiration de la période de silence ou la suppression de la règle.

  1. Exposez Alertmanager sur le port local 9093 :

    kubectl --address 0.0.0.0 port-forward svc/alertmanager-operated 9093 -n monitoring
  2. Associez une adresse IP élastique (EIP) à votre instance ECS, puis accédez à Alertmanager via <EIP>:9093.

    Assurez-vous que le groupe de sécurité autorise le trafic depuis votre adresse IP locale sur le port 9093. Consultez Ajouter une règle de groupe de sécurité .
  3. Cliquez sur Silence pour configurer la mise en sourdine des alertes.

FAQ

Aucune alerte reçue après la configuration de DingTalk

  1. Obtenez l'URL du webhook pour votre robot de discussion DingTalk. Consultez Surveillance des événements.

  2. Localisez le champ dingtalk, définissez enabled sur true et saisissez l'URL du webhook DingTalk dans le champ Token. Reportez-vous à la section Configure DingTalk alerts dans Configuration des alertes.

Erreur lors du déploiement de prometheus-operator

Le message d'erreur suivant s'affiche :

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

Cette erreur survient car les CRD d'un déploiement précédent n'ont pas été nettoyés. Supprimez les CRD et redéployez le composant :

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

Les alertes par e-mail ne fonctionnent pas

Les alertes par e-mail peuvent échouer si vous saisissez votre mot de passe de connexion pour smtp_auth_password au lieu du code d'autorisation. L'adresse du serveur SMTP doit inclure un numéro de port.

Une erreur se produit lorsque vous cliquez sur YAML Update : The current cluster is temporarily unavailable. Please try again later.

Ce problème survient lorsque le fichier de configuration Tiller est trop volumineux, rendant le cluster inaccessible. Réduisez la taille du fichier en supprimant les commentaires et montez-le en tant que ConfigMap. prometheus-operator prend en charge le montage ConfigMap uniquement pour les Pods prometheus et alertmanager. Consultez Monter un ConfigMap personnalisé sur Prometheus.

Activer des fonctionnalités après le déploiement

Activez les fonctionnalités après avoir déployé prometheus-operator. Sur la page des détails du cluster, choisissez Applications > Helm. Localisez ack-prometheus-operator et cliquez sur Update dans la colonne Actions. Identifiez la fonctionnalité à activer, configurez-la et cliquez sur OK.

Choisir entre TSDB et les disques Alibaba Cloud

TSDB est disponible dans moins de régions que les disques Alibaba Cloud. Politique de rétention des données :

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

Problèmes d'affichage du tableau de bord Grafana

Sur la page des détails du cluster, choisissez Applications > Helm. Localisez ack-prometheus-operator et cliquez sur Update dans la colonne Actions. Vérifiez que clusterVersion correspond à la version de votre cluster. Pour les clusters antérieurs à la v1.16, saisissez 1.14.8-aliyun.1. Pour la v1.16 ou ultérieure, saisissez 1.16.6-aliyun.1.

La réinstallation échoue après la suppression du namespace

La suppression du seul namespace peut laisser des configurations résiduelles. Nettoyez les ressources suivantes :

  1. Supprimez les permissions RBAC.

    1. Supprimez les 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. Supprimez les 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. Supprimez les CRD.

    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