Alibaba Cloud Ingress consigne les requêtes HTTP vers la sortie standard (stdout). Activez la collecte des journaux lors de la création du cluster, puis utilisez Simple Log Service (SLS) pour analyser les journaux d'accès Nginx Ingress et surveiller l'état d'Ingress en temps réel. Cette rubrique explique comment déployer et consulter les journaux d'accès Nginx Ingress.
Prérequis
Avant de commencer, assurez-vous d'avoir :
loongcollector installé dans votre cluster (installation par défaut lors de la création du cluster). S'il est absent, consultez Collect text logs from Kubernetes containers in DaemonSet mode.
-
alibaba-log-controller mis à jour :
kubectl edit deployment alibaba-log-controller -n kube-system
Activer la collecte des journaux pour nginx-ingress-controller
Utilisez la console ACK, sauf si vous devez automatiser la configuration via un pipeline GitOps ou CI/CD.
Console ACK
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur console ACKClusters.
Sur la page Clusters, cliquez sur le cluster cible. Dans le volet de navigation de gauche, choisissez Operations > Add-ons.
Sur la page Add-ons, cliquez sur l'onglet Networking. Sur la carte Nginx Ingress Controller, cliquez sur l'icône
et sélectionnez Enable Log Collection. Cliquez sur OK.
CLI
ACK fournit une CRD nommée AliyunLogConfig. Lorsque vous créez une AliyunLogConfig, alibaba-log-controller génère automatiquement la configuration SLS et met à jour les tableaux de bord.
Avant de créer une AliyunLogConfig :
Si des pods nginx-ingress-controller existent déjà, recréez-les après avoir appliqué la
AliyunLogConfigpour que la collecte des journaux prenne effet.alibaba-log-controller doit être en version
0.2.0.0-76648ee-aliyunou ultérieure. Si uneAliyunLogConfigexiste déjà après la mise à jour du contrôleur, supprimez-la et recréez-la.Cette configuration suppose l'utilisation du format de journal par défaut d'ACK. Si vous avez personnalisé le format des journaux, mettez à jour la section
processor_regex. Consultez Use CRDs to collect container logs in DaemonSet mode.
-
Créez un fichier nommé
k8s-nginx-ingress.yamlavec le contenu suivant :Définissez
IncludeLabelsur les étiquettes Docker issues dedocker inspect.io.kubernetes.pod.namespacepermet de sélectionner par namespace ;io.kubernetes.container.namepermet de sélectionner par conteneur. Par exemple,io.kubernetes.pod.namespace: backend-prodcollecte tous les conteneurs de ce namespace ;io.kubernetes.container.name: worker-servercible un conteneur spécifique. Spécifiez uniquement ces deux étiquettes. Pour filtrer par variables d'environnement, utilisezIncludeEnvouExcludeEnv. Consultez Use the Simple Log Service console to collect container stdout and stderr in DaemonSet mode .Field
Description
Modify?
metadata.namespaceNamespace du contrôleur Ingress
Oui, si ce n'est pas
kube-systemspec.logstoreNom du Logstore SLS
Facultatif
IncludeLabelÉtiquettes Docker utilisées pour sélectionner les conteneurs
Oui, si la collecte se fait depuis un namespace spécifique
processor_regex>RegexExpression régulière d'analyse des journaux
Uniquement si vous avez modifié le format de journal par défaut
apiVersion: log.alibabacloud.com/v1alpha1 kind: AliyunLogConfig metadata: # Unique name for this AliyunLogConfig within the cluster. name: k8s-nginx-ingress # Set to the namespace of the Ingress controller you want to collect logs from. namespace: kube-system spec: # The SLS Logstore where logs are stored. logstore: nginx-ingress # Product code — do not change this value. productCode: k8s-nginx-ingress logtailConfig: inputType: plugin # Must match metadata.name. configName: k8s-nginx-ingress inputDetail: plugin: inputs: - type: service_docker_stdout detail: IncludeLabel: # Collect logs from the nginx-ingress-controller container. # If multiple Ingress controllers run in your cluster, collecting # by container name may produce duplicate logs. Review the # IncludeLabel behavior before applying. io.kubernetes.container.name: nginx-ingress-controller Stderr: true Stdout: true processors: - type: processor_regex detail: KeepSource: false # Fields extracted from each log line, in order: Keys: - client_ip - x_forward_for - remote_user - time - method - url - version - status - body_bytes_sent - http_referer - http_user_agent - request_length - request_time - proxy_upstream_name - upstream_addr - upstream_response_length - upstream_response_time - upstream_status - req_id - host - proxy_alternative_upstream_name NoKeyError: true NoMatchError: true # Regular expression that maps each capture group to the Keys above. Regex: ^(\S+)\s-\s\[([^]]+)]\s-\s(\S+)\s\[(\S+)\s\S+\s"(\w+)\s(\S+)\s([^"]+)"\s(\d+)\s(\d+)\s"([^"]*)"\s"([^"]*)"\s(\S+)\s(\S+)+\s\[([^]]*)]\s(\S+?(?:,\s\S+?)*)\s(\S+?(?:,\s\S+?)*)\s(\S+?(?:,\s\S+?)*)\s(\S+?(?:,\s\S+?)*)\s(\S+)\s*(\S*)\s*\[*([^]]*)\]*.* SourceKey: contentLe tableau suivant décrit les champs que vous serez le plus susceptible de personnaliser :
-
Appliquez la configuration :
kubectl apply -f k8s-nginx-ingress.yaml
Pour désactiver la collecte des journaux, supprimez la AliyunLogConfig :
kubectl delete aliyunlogconfig k8s-nginx-ingress -n kube-system
Consulter les journaux d'accès et les tableaux de bord
Connectez-vous à la console Simple Log Service.
Dans la section Projects, cliquez sur le projet correspondant à votre cluster ACK (nommé
k8s-log-{cluster-id}).Dans le volet de navigation de gauche, cliquez sur l'icône
, puis sélectionnez un tableau de bord dans la liste.
Tableaux de bord disponibles :
|
Dashboard |
Time range |
What it shows |
|
Ingress overview |
Last 24 h / last 1 min |
Volume de trafic, latence, taux d'erreur, répartition géographique, URL les plus consultées |
|
Ingress access center |
Last 24 h |
Nombre d'utilisateurs uniques (UV) et de pages vues (PV), répartition régionale, navigateurs et adresses IP sources les plus fréquents, répartition mobile |
|
Ingress monitoring center |
Last 1 h |
Taux de réussite en temps réel, proportion des erreurs, percentiles de latence, services les plus sollicités par PV et taux d'échec |
|
Ingress monitoring center for blue-green deployments |
Dynamic |
Comparaison côte à côte des métriques de ServiceA et ServiceB pour des déploiements sécurisés |
|
Ingress exceptions center |
Automatic |
Détection d'anomalies basée sur l'apprentissage automatique SLS et l'analyse des séries temporelles |
Ingress overview
Suit le trafic au niveau du site web via nginx-ingress-controller. Métriques clés :
Last 24 hours : pages vues (PV), visiteurs uniques (UV), trafic entrant/sortant, latence moyenne, proportion d'utilisateurs mobiles, proportion d'erreurs 5xx, proportion d'erreurs 404
Last 1 minute : PV, UV, taux de réussite des requêtes, latence moyenne, latence P95, latence P99
Trends and distribution : tendance des PV sur 24 heures et 7 jours, répartition régionale des requêtes, zones et villes principales, répartition Android/iOS
Top URLs (last 1 hour) : 10 URL ayant le plus grand nombre de PV, la latence la plus élevée, le plus d'erreurs 5xx et le plus d'erreurs 404
Ingress access center
Origine des requêtes et répartition des clients sur 24 heures : nombre d'UV/PV, répartition régionale, navigateurs principaux, adresses IP sources et proportions mobiles.
Ingress monitoring center
Métriques en temps réel de la dernière heure pour détecter et résoudre les problèmes :
Taux de réussite des requêtes, proportion d'erreurs 5xx, proportion d'erreurs 404 et proportion de requêtes non transférées en amont
Latence moyenne, latence P95, latence P99 et latence P999
Répartition des requêtes par code d'état et proportion de PV par Ingress
10 premiers services par PV, taux d'échec, latence moyenne et nombre total de requêtes

Ingress monitoring center for blue-green deployments
Comparaison côte à côte des métriques de ServiceA et ServiceB — PV, taux d'erreur, percentiles de latence et nombre total de requêtes — afin de détecter les régressions lors des déploiements blue-green.

Ingress exceptions center
Détecte les anomalies dans les journaux nginx-ingress-controller à l'aide de l'apprentissage automatique SLS et de l'analyse des séries temporelles.

Configurer des alertes
Configurez des règles d'alerte sur n'importe quel graphique de tableau de bord, avec des notifications par e-mail, robot de discussion DingTalk, webhooks ou SMS.
Consultez Configure an alert rule.
Cet exemple crée une alerte qui se déclenche lorsque la proportion d'erreurs 5xx dépasse 1 %, vérifiée toutes les 5 minutes.
Dans la section Dashboard, cliquez sur Ingress Monitoring Center. Survolez l'icône
dans le coin supérieur droit du graphique 5XX Proportion et cliquez sur Save as Alert (Old Version).Dans l'assistant Create Alert, définissez Alert Name, Associated Chart, Frequency et Trigger Condition. Le champ
totalreprésente la proportion d'erreurs 5xx ; définissez Trigger Condition surtotal > 1.Sur la page Notifications, sélectionnez les canaux de notification, configurez les paramètres et cliquez sur Submit.
S'abonner à un tableau de bord
Livrez des instantanés planifiés de tableau de bord à une adresse e-mail ou à un groupe DingTalk. Consultez Subscribe to a dashboard.
Cet exemple s'abonne au tableau de bord Ingress Overview V1.2 et envoie un instantané quotidien à un groupe DingTalk à 10 h 00.
Dans la section Dashboard, cliquez sur Ingress Overview V1.2. Choisissez Subscribe > Create.
Dans l'assistant Create Subscription, définissez Frequency sur Daily et 10:00. Désactivez Add Watermark, puis cliquez sur Next.
Sur la page Notifications, sélectionnez WebHook-DingTalk Bot dans Notifications et définissez Request URL sur l'URL du webhook de votre robot de discussion DingTalk. Cliquez sur Submit.
Utiliser le tableau de bord Ingress avec ARMS
Le tableau de bord Ingress Overview V1.2 s'intègre à Application Real-Time Monitoring Service (ARMS) pour fournir une visibilité complète sur les traces.
Connectez-vous à la console Simple Log Service.
Dans la section Projects, cliquez sur le projet correspondant à votre cluster ACK.
Dans le volet de navigation de gauche, cliquez sur l'icône
et sélectionnez Ingress Overview V1.2 dans la liste Dashboard.Dans la section Top 10 Request URLs by Latency, cliquez sur une URL dans la colonne URL(ARMS Troubleshooting) pour afficher les détails de trace ARMS pour ce service.
Étapes suivantes
Data filtering plugin — appliquez des filtres de requête de journal pour approfondir l'analyse de requêtes ou de fenêtres temporelles spécifiques.