Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Analyze nginx-ingress-controller access logs with SLS

Dernière mise à jour :Sep 12, 2026

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 :

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

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

  2. Sur la page Clusters, cliquez sur le cluster cible. Dans le volet de navigation de gauche, choisissez Operations > Add-ons.

  3. Sur la page Add-ons, cliquez sur l'onglet Networking. Sur la carte Nginx Ingress Controller, cliquez sur l'icône image.png 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.

Important

Avant de créer une AliyunLogConfig :

  • Si des pods nginx-ingress-controller existent déjà, recréez-les après avoir appliqué la AliyunLogConfig pour que la collecte des journaux prenne effet.

  • alibaba-log-controller doit être en version 0.2.0.0-76648ee-aliyun ou ultérieure. Si une AliyunLogConfig existe 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.

  1. Créez un fichier nommé k8s-nginx-ingress.yaml avec le contenu suivant :

    Définissez IncludeLabel sur les étiquettes Docker issues de docker inspect . io.kubernetes.pod.namespace permet de sélectionner par namespace ; io.kubernetes.container.name permet de sélectionner par conteneur. Par exemple, io.kubernetes.pod.namespace: backend-prod collecte tous les conteneurs de ce namespace ; io.kubernetes.container.name: worker-server cible un conteneur spécifique. Spécifiez uniquement ces deux étiquettes. Pour filtrer par variables d'environnement, utilisez IncludeEnv ou ExcludeEnv . Consultez Use the Simple Log Service console to collect container stdout and stderr in DaemonSet mode .

    Field

    Description

    Modify?

    metadata.namespace

    Namespace du contrôleur Ingress

    Oui, si ce n'est pas kube-system

    spec.logstore

    Nom 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 > Regex

    Expression 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: content

    Le tableau suivant décrit les champs que vous serez le plus susceptible de personnaliser :

  2. 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

  1. Connectez-vous à la console Simple Log Service.

  2. Dans la section Projects, cliquez sur le projet correspondant à votre cluster ACK (nommé k8s-log-{cluster-id}).

  3. Dans le volet de navigation de gauche, cliquez sur l'icône Nginx Ingress.png, 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

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 blue-green deployment monitoring center

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.

Ingress exceptions center

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.

  1. Dans la section Dashboard, cliquez sur Ingress Monitoring Center. Survolez l'icône Tip dans le coin supérieur droit du graphique 5XX Proportion et cliquez sur Save as Alert (Old Version).

  2. Dans l'assistant Create Alert, définissez Alert Name, Associated Chart, Frequency et Trigger Condition. Le champ total représente la proportion d'erreurs 5xx ; définissez Trigger Condition sur total > 1.

  3. 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.

  1. Dans la section Dashboard, cliquez sur Ingress Overview V1.2. Choisissez Subscribe > Create.

  2. Dans l'assistant Create Subscription, définissez Frequency sur Daily et 10:00. Désactivez Add Watermark, puis cliquez sur Next.

  3. 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.

  1. Connectez-vous à la console Simple Log Service.

  2. Dans la section Projects, cliquez sur le projet correspondant à votre cluster ACK.

  3. Dans le volet de navigation de gauche, cliquez sur l'icône image et sélectionnez Ingress Overview V1.2 dans la liste Dashboard.

  4. 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.