La surveillance des événements complète la surveillance des ressources en offrant une meilleure réactivité en temps réel, une plus grande précision et une couverture étendue des scénarios. Par exemple, lorsqu'un pod est expulsé, qu'une extraction d'image échoue ou qu'un nœud signale une exception matérielle. Kubernetes ne conserve ces événements que pendant une heure par défaut. Pour détecter les anomalies avant l'expiration des données, ACK propose une surveillance des événements de bout en bout qui collecte, stocke, génère des alertes et archive les événements du cluster.
ACK redirige par défaut les événements du cluster vers Simple Log Service et les stocke gratuitement pendant 90 jours. Consultez Créer et utiliser un centre d'événements.
Fonctionnement
ACK s'appuie sur deux outils open source :
node-problem-detector (NPD) — Diagnostique les nœuds Kubernetes. NPD détecte les exceptions de nœud telles que les blocages du moteur Docker, les blocages du noyau Linux, les anomalies du trafic sortant et les exceptions liées aux descripteurs de fichiers. Il génère des événements de nœud et fonctionne conjointement avec kube-eventer pour boucler la gestion des alertes. Consultez NPD.
kube-eventer — Émetteur d'événements open source maintenu par ACK. kube-eventer transfère les événements Kubernetes vers des destinations telles que DingTalk, Simple Log Service et EventBridge. Il filtre les événements par niveau de gravité et permet la collecte en temps réel, la génération d'alertes et l'archivage asynchrone. Consultez kube-eventer.
Kubernetes émet deux types d'événements :
|
Type |
Moment de la génération |
Exemples |
|
Normal |
Transition de la machine d'états vers un état attendu |
Pod planifié, conteneur démarré |
|
Warning |
Transition de la machine d'états vers un état inattendu |
Pod expulsé, échec de l'extraction d'image, |
Cas d'utilisation
Sélectionnez un scénario en fonction de vos besoins de surveillance :
|
Scénario |
Quand l'utiliser |
|
Scénario 1 : Utiliser NPD avec le centre d'événements Simple Log Service |
Démarrage rapide. Redirigez tous les événements du cluster vers Simple Log Service pour la visualisation, l'interrogation et la génération d'alertes au même endroit. |
|
Détectez les exceptions au niveau des nœuds, telles que la pression sur le disque, les problèmes réseau et les défaillances du démon Docker, et déclenchez une gestion des alertes en boucle fermée. |
|
|
Acheminez les événements Warning vers un groupe DingTalk pour des notifications ChatOps en temps réel. |
|
|
Scénario 4 : Archiver les événements dans Simple Log Service |
Persistez les événements Kubernetes dans un Logstore dédié pour le stockage à long terme, l'indexation et l'analyse hors ligne. |
|
Construisez une architecture pilotée par les événements pour déclencher des corrections automatisées ou des workflows en aval à partir des événements du cluster. |
Scénario 1 : Utiliser NPD avec le centre d'événements Simple Log Service
NPD fonctionne avec des plug-ins tiers pour détecter les exceptions de nœud et générer des événements de cluster. Le centre d'événements Simple Log Service collecte, stocke et visualise ces événements grâce à des fonctionnalités intégrées d'interrogation et de génération d'alertes.
Étape 1 : Installer le composant ack-node-problem-detector
Si vous avez sélectionné Install node-problem-detector and Create Event Center lors de la création du cluster, passez directement à l'Étape 2 : Consulter le centre d'événements. Pour installer le composant lors de la création du cluster, consultez Créer un cluster ACK managé.
Sinon, installez le composant manuellement :
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, choisissez Clusters.
Sur la page Clusters, localisez le cluster et cliquez sur son nom. Dans le volet de navigation de gauche, cliquez sur Add-ons.
Dans l'onglet Observability, localisez et installez ack-node-problem-detector.
Étape 2 : Consulter le centre d'événements
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, choisissez Clusters.
Sur la page Clusters, localisez le cluster et cliquez sur son nom. Dans le volet de navigation de gauche, choisissez Operations > Event Center.
Sur la page Event Center, cliquez sur l'onglet Event Overview (Event Center) pour afficher tous les événements Kubernetes, leurs détails et le cycle de vie des pods. Consultez Collecter les événements Kubernetes.
Scénario 2 : Exécuter le diagnostic de nœud NPD
NPD associé à kube-eventer offre une gestion des alertes en boucle fermée pour les événements de nœud. Lorsque NPD détecte une exception, kube-eventer transfère l'événement vers les destinations configurées et génère une alerte.
Prérequis
Avant de commencer :
Le composant ack-node-problem-detector est installé. Si ce n'est pas le cas, consultez l'Étape 1 : Installer le composant ack-node-problem-detector. S'il est déjà installé, réinstallez-le d'abord — consultez Réinstaller le composant ack-node-problem-detector.
Vérifier que le DaemonSet est en cours d'exécution
Sur la page Clusters, localisez le cluster et cliquez sur son nom. Dans le volet de navigation de gauche, choisissez Workloads > DaemonSets.
Dans l'onglet DaemonSets, sélectionnez le namespace kube-system et vérifiez que ack-node-problem-detector-daemonset est en cours d'exécution. Lorsque NPD et kube-eventer sont actifs, le système redirige les événements et génère des alertes conformément à la configuration de kube-eventer.
Plug-ins de diagnostic de nœud
À partir de la version 1.2.29 de NPD, le plug-in de détection d'anomalies GPU est déployé en tant que DaemonSet distinct nommé ack-accel-health-monitor.
Plug-in | Ce qu'il vérifie | Seuil par défaut | Activé par défaut |
| Si les horloges système sont synchronisées via le protocole NTP (Network Time Protocol) | — | Oui |
| Si l'utilisation de la table de suivi des connexions (conntrack) dépasse le seuil | 90 % | Oui |
| Si l'utilisation des inodes sur le disque système dépasse le seuil (ajustable) | 80 % | Oui |
| Si le ratio de processus PID dépasse le seuil maximal du noyau | 85 % | Oui |
| Si le démon Docker est en cours d'exécution | — | Oui |
| Si l'utilisation des descripteurs de fichiers dépasse le seuil (ajustable). Remarque Ce plug-in consomme des ressources importantes. Activez-le uniquement si nécessaire. | 80 % | Non |
| Si les nœuds disposent du rôle RAM requis et si l'AccessKey ID/secret est configuré | — | Non |
| Si les GPU NVIDIA peuvent générer des messages | — | Non |
| Si le plug-in CSI (Container Storage Interface) est en cours d'exécution | — | Non |
| Si des processus se trouvent dans un état de sommeil ininterruptible (D) | — | Non |
| Si les nœuds peuvent accéder à Internet | — | Non |
| Si le démon | — | Non |
Scénario 3 : Envoyer des alertes à DingTalk
Un chatbot DingTalk recevant des alertes d'événements Kubernetes constitue un modèle ChatOps typique. Lorsqu'un événement de niveau Warning se produit, kube-eventer pousse un message vers le groupe DingTalk via un webhook.
Prérequis
Avant de commencer :
Le composant ack-node-problem-detector est installé. Si ce n'est pas le cas, consultez l'Étape 1 : Installer le composant ack-node-problem-detector. S'il est déjà installé, réinstallez-le d'abord — consultez Réinstaller le composant ack-node-problem-detector.
Étape 1 : Ajouter un chatbot DingTalk
Cliquez sur
dans le coin supérieur droit de la zone de discussion pour ouvrir Group Settings.Cliquez sur Bot > Add Robot. Sélectionnez Custom comme type de chatbot.
-
Sur la page Robot details, cliquez sur Add pour ouvrir la page Add Robot. Définissez les paramètres ci-dessous, acceptez les conditions d'utilisation du service DingTalk Custom Robot et cliquez sur Finished :
Paramètre
Description
Modifier la photo de profil
Avatar du chatbot. Facultatif.
Nom du chatbot
Nom d'affichage du chatbot.
Ajouter au groupe
Groupe DingTalk auquel ajouter le chatbot.
Paramètres de sécurité
Trois options : Custom Keywords, signatures supplémentaires et adresses IP (ou blocs CIDR). Seuls les Custom Keywords filtrent les alertes d'événements de cluster. Sélectionnez Custom Keywords et saisissez
Warning. Ajoutez jusqu'à 10 mots-clés pour affiner le filtre. -
Cliquez sur Copy pour copier l'URL du webhook.
Sur la page ChatBot , cliquez sur
à côté du chatbot pour modifier son avatar et son nom, activer ou désactiver l'envoi de messages, réinitialiser l'URL du webhook ou supprimer le chatbot.
Étape 2 : Configurer kube-eventer pour envoyer des événements à DingTalk
Sur la page Clusters, localisez le cluster et cliquez sur son nom. Dans le volet de navigation de gauche, choisissez Applications > Helm.
Sur la page Helm, localisez ack-node-problem-detector et cliquez sur Update dans la colonne Actions.
-
Définissez les paramètres ci-dessous, puis cliquez sur OK :
Dans la section
npd, définissezenabledsurfalse.Définissez
eventer.sinks.dingtalk.enabledsurtrue.Saisissez le jeton extrait de l'URL du webhook copiée.
Résultat
kube-eventer prend effet 30 secondes après le déploiement. Les événements de niveau Warning déclenchent des alertes dans le groupe DingTalk.

Scénario 4 : Archiver les événements dans Simple Log Service
Redirigez les événements Kubernetes vers Simple Log Service pour un stockage persistant, une indexation et un audit. Pour une conservation à long terme ou un archivage hors ligne, configurez le Logstore et éventuellement l'expédition des données vers MaxCompute ou Object Storage Service (OSS). Consultez Créer et utiliser un centre d'événements.
Prérequis
Avant de commencer :
Le composant ack-node-problem-detector est installé avec le projet et le Logstore spécifiés. S'il est déjà installé, réinstallez-le d'abord — consultez Réinstaller le composant ack-node-problem-detector.
Étape 1 : Créer un projet et un Logstore Simple Log Service
Connectez-vous à la console Simple Log Service.
-
Dans la section Projects, cliquez sur Create Project. Dans le panneau Create Project, définissez les paramètres et cliquez sur Create.
Créez le projet Simple Log Service dans la même région que votre cluster. La transmission intra-région utilise le réseau interne, ce qui réduit la latence et élimine les coûts de bande passante inter-régions. Cet exemple crée un projet nommé
k8s-log4jen Chine (Hangzhou). Dans la section Projects, cliquez sur k8s-log4j pour ouvrir la page des détails du projet.
Dans le volet Logstores, cliquez sur + pour ouvrir le panneau Create Logstore.
-
Définissez les paramètres et cliquez sur OK. Cet exemple crée un Logstore nommé
k8s-logstore.Dans le panneau Create Logstore, les éléments de configuration clés incluent :
Logstore Type : Standard
Data Retention Period : 30 jours (nombre fixe de jours)
Number of Shards : 2
Automatic Shard Split : activé, avec un maximum de 64 divisions
Record Public IP : activé
WebTracking : désactivé par défaut
Une fois le Logstore créé, cliquez sur Data Import Wizard pour ouvrir la boîte de dialogue Import Data.
-
Sélectionnez Log4j 1/2 et terminez la configuration. Cet exemple utilise les paramètres par défaut.
Dans la zone Log Description de la page de configuration de la source de données, Log4j est décrit comme composé de trois composants : niveaux de priorité (ERROR, WARN, INFO, DEBUG), destination de sortie et format de sortie. L'Appender Log4j Alibaba Cloud Log peut envoyer des journaux vers Simple Log Service (SLS) (pour l'adresse de téléchargement et les instructions d'utilisation, reportez-vous à GitHub). Dans la zone Usage Notes, cliquez sur le lien View Help pour obtenir des conseils détaillés sur l'ingestion, puis cliquez sur Next.
Étape 2 : Configurer kube-eventer pour rediriger les événements vers Simple Log Service
Sur la page Clusters, localisez le cluster et cliquez sur son nom. Dans le volet de navigation de gauche, choisissez Applications > Helm.
Sur la page Helm, localisez ack-node-problem-detector et cliquez sur Update dans la colonne Actions.
-
Définissez les paramètres ci-dessous, puis cliquez sur OK :
Dans la section
npd, définissezenabledsurfalse.Définissez
eventer.sinks.sls.enabledsurtrue.
Étape 3 : Vérifier la collecte des événements et configurer l'indexation
Déclenchez un événement de cluster — par exemple, supprimez un pod ou créez une application.
-
Connectez-vous à la console Simple Log Service pour afficher les événements collectés. Consultez Consommer des données de journal à l'aide du SDK Simple Log Service.
Dans la boîte de dialogue Consumption Preview, sélectionnez un nom d'index (par exemple,
k8s-event), définissez le Shard et la plage horaire, puis cliquez sur Preview. Si les données de journal sont correctement chargées, le tableau affiche des enregistrements de journalisation au format JSON des événements Kubernetes, y compris des champs tels quelevel,eventId,namespace,reasonetmessage. -
Configurez l'indexation pour l'interrogation et l'analyse. Consultez Créer des index.
Dans la section Projects, cliquez sur le nom du projet.
Cliquez sur
à côté du nom du Logstore et sélectionnez Search & Analysis.Dans le coin supérieur droit, cliquez sur Enable Index.
Dans le panneau Search & Analysis, définissez les paramètres et cliquez sur OK. > Note: La configuration de l'index prend effet dans un délai d'une minute et s'applique uniquement aux données ingérées après l'activation ou la modification de l'index.
(Facultatif) Pour archiver les événements en vue d'une analyse hors ligne, expédiez les données du Logstore vers MaxCompute ou Object Storage Service (OSS). Consultez Créer une tâche d'expédition de données de la nouvelle version pour expédier les données vers MaxCompute et Créer une tâche d'expédition de données OSS (nouvelle version).
Scénario 5 : Acheminer les événements vers EventBridge
EventBridge est un service d'événements serverless qui connecte les services Alibaba Cloud, les applications personnalisées et les applications SaaS (Software as a Service) de manière standardisée et centralisée. L'acheminement des événements ACK vers EventBridge vous permet de construire une architecture faiblement couplée et pilotée par les événements — par exemple, pour déclencher une correction automatisée lorsque des événements spécifiques se produisent. Consultez Qu'est-ce qu'EventBridge ?
Prérequis
Avant de commencer :
EventBridge est activé. Consultez Activer EventBridge et accorder des autorisations à un utilisateur RAM.
Le composant ack-node-problem-detector est installé. Si ce n'est pas le cas, consultez l'Étape 1 : Installer le composant ack-node-problem-detector. S'il est déjà installé, réinstallez-le d'abord — consultez Réinstaller le composant ack-node-problem-detector.
Activer EventBridge en tant que destination d'événements
Sur la page Clusters, localisez le cluster et cliquez sur son nom. Dans le volet de navigation de gauche, choisissez Applications > Helm.
Sur la page Helm, localisez ack-node-problem-detector et cliquez sur Update dans la colonne Actions.
-
Définissez
eventer.sinks.eventbridge.enabledsurtrue, puis cliquez sur OK.eventer: accessKeyId: "" accessKeySecret: "" enabled: true env: - TZ: Asia/Shanghai image: pullPolicy: Always repository: registry-cn-hangzhou-vpc.ack.aliyuncs.com/acs/kube-eventer tag: v1.2.11-0620284-aliyun othersinks: null resources: limits: cpu: "1.0" memory: 1024Mi requests: cpu: 100m memory: 200Mi sinks: dingtalk: enabled: false label: "" level: Warning monitorkinds: Node,Pod monitornamespaces: "" token: "" eventbridge: enabled: false
Afficher les événements Kubernetes dans EventBridge
Connectez-vous à la console EventBridge.
Dans le volet de navigation de gauche, cliquez sur Event Buses.
Sur la page Event Buses, cliquez sur le bus d'événements cible.
Dans le volet de navigation de gauche, cliquez sur Event Tracking.
Sélectionnez une méthode de requête, définissez les conditions et cliquez sur Query.
Localisez l'événement et cliquez sur Details dans la colonne Actions. Consultez Interroger les événements par ID d'événement.
Réinstaller le composant ack-node-problem-detector
Réinstallez le composant lorsque vous modifiez la destination de redirection (par exemple, de Simple Log Service vers DingTalk) ou mettez à jour la configuration du composant.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, choisissez Clusters.
Sur la page Clusters, localisez le cluster et cliquez sur son nom. Dans le volet de navigation de gauche, choisissez Workloads > Jobs.
Sur la page Jobs, cliquez sur More à côté de
kube-eventer-init-v1.7-xxxxet cliquez sur Delete.Sur la page Clusters, localisez le cluster et cliquez sur son nom. Dans le volet de navigation de gauche, choisissez Applications > Helm.
Sur la page Helm, supprimez le composant ack-node-problem-detector.
Sur la page Clusters, localisez le cluster et cliquez sur son nom. Dans le volet de navigation de gauche, choisissez Operations > Add-ons.
Dans l'onglet Observability, localisez et réinstallez ack-node-problem-detector.