Déployez LoongCollector en mode DaemonSet et créez une configuration de collecte dans la console SLS pour centraliser la collecte des journaux des conteneurs Kubernetes et activer le traitement structuré afin d'optimiser les requêtes et l'analyse.
Prérequis
-
Environnement d'exécution
Prend en charge Container Service for Kubernetes (ACK) (éditions managées et dédiées) ainsi que les clusters Kubernetes auto-gérés.
Kubernetes 1.10.0 ou version ultérieure, prenant en charge
Mount propagation: HostToContainer.-
Moteur de conteneur (Docker et Containerd uniquement)
-
Docker :
Requiert un accès à docker.sock.
La collecte de la sortie standard prend uniquement en charge le pilote de journal JSON.
Prend uniquement en charge les pilotes de stockage overlay et overlay2. Pour utiliser d'autres types de pilotes de stockage, montez manuellement le répertoire des journaux.
Containerd : Requiert un accès à containerd.sock.
-
-
Exigences en matière de ressources : LoongCollector (Logtail) s'exécute avec la classe de priorité élevée system-cluster-critical. Le déploiement sur un cluster aux ressources limitées peut entraîner l'éviction des Pods existants.
CPU : Réservez au moins 0,1 cœur.
Mémoire : Réservez au moins 150 Mo pour le composant de collecte et au moins 100 Mo pour le composant contrôleur.
L'utilisation réelle dépend du taux de collecte, du nombre de répertoires et de fichiers surveillés, ainsi que de la congestion d'envoi. Maintenez l'utilisation des ressources en dessous de 80 % des limites spécifiées.
-
Exigences en matière d'autorisations : Pour le déploiement, le compte Alibaba Cloud ou l'utilisateur RAM doit disposer de l'autorisation AliyunLogFullAccess.
Pour créer des stratégies personnalisées avec des autorisations granulaires, copiez les autorisations de la stratégie système AliyunCSManagedLogRolePolicy et accordez-les à l'utilisateur ou au rôle RAM cible.
Configuration de la collecte
-
Installer LoongCollector : Déployez LoongCollector en mode DaemonSet. Cela garantit qu'un conteneur de collecte s'exécute sur chaque nœud du cluster pour collecter les journaux de tous les conteneurs présents sur ce nœud.
Pour le modèle Sidecar, utilisez Collecter les journaux texte des pods Kubernetes (modèle Sidecar) .
Créer un Logstore : Un Logstore stocke les journaux collectés.
-
Créer et configurer les règles de collecte de journaux
Configuration globale et entrée : Définissez le nom de la configuration de collecte et spécifiez la source et la portée de la collecte des journaux.
-
Traitement et structuration des journaux : Configurez les règles de traitement en fonction du format des journaux.
Journaux multilignes : Gérez les entrées de journal qui s'étendent sur plusieurs lignes, telles que les piles d'exceptions Java ou les traces Python, en définissant une expression régulière de première ligne pour identifier le début de chaque entrée.
Analyse structurée : Configurez des plugins d'analyse, tels que les expressions régulières, les délimiteurs ou le mode NGINX, pour extraire les chaînes brutes sous forme de paires clé-valeur structurées, permettant ainsi des requêtes et une analyse efficaces.
Filtrage des journaux : Configurez des listes noires de collecte et des règles de filtrage de contenu pour exclure les données de journal indésirables. Cela permet de réduire la transmission et le stockage de données redondantes.
Catégorisation des journaux : Configurez les topics et les tags des journaux pour distinguer les journaux provenant de différents services, conteneurs ou sources de chemin d'accès.
Configuration des requêtes et de l'analyse : L'indexation en texte intégral est activée par défaut pour les recherches par mot-clé. Pour des requêtes précises et l'analyse de champs structurés, activez les index de champ afin d'améliorer l'efficacité de la recherche.
Vérification et dépannage : Une fois la configuration terminée, vérifiez que les journaux sont bien collectés. Si vous rencontrez des problèmes tels qu'un échec de collecte de données, un échec de heartbeat ou des erreurs d'analyse, consultez la section FAQ de dépannage.
Étape 1 : Installer LoongCollector
LoongCollector est l'agent de collecte de journaux de nouvelle génération de Simple Log Service et le successeur de Logtail. LoongCollector et Logtail ne peuvent pas coexister. Pour installer Logtail, consultez Installer, exécuter, mettre à niveau et désinstaller Logtail .
Installez LoongCollector en utilisant l'une des méthodes ci-dessous. Pour plus de détails sur les paramètres, consultez Installation et configuration. Si LoongCollector ou Logtail est déjà installé, passez directement à l'Étape 2 : Créer un logstore.
La modification de l'heure de l'hôte pendant l'exécution de LoongCollector (Logtail) peut entraîner une collecte en double ou une perte de données.
Cluster ACK
Installez LoongCollector dans la console Container Service for Kubernetes. Par défaut, les journaux sont envoyés vers un projet Simple Log Service au sein du compte Alibaba Cloud actuel.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Cliquez sur le nom du cluster cible.
Dans le volet de navigation de gauche, cliquez sur Add-ons.
-
Sous l'onglet Logs and Monitoring, recherchez LoongCollector, puis cliquez sur Install.
RemarqueLors de la création d'un cluster, vous pouvez sélectionner Enable Log Service sur la page Component Configurations. Vous avez la possibilité de choisir Create Project ou Select Project. Lors de l'installation de LoongCollector pour un cluster existant, la boîte de dialogue d'installation permet de spécifier un nom de projet à l'aide du paramètre
projectName. Si ce champ est laissé vide, la valeur par défautk8s-log-{cluster_id}est utilisée.Une fois l'installation terminée, Simple Log Service crée automatiquement les ressources suivantes dans le compte actuel. Vous pouvez les consulter dans la console Simple Log Service.
Type de ressource
Nom de la ressource
Description
Projet
k8s-log-${cluster_id}Isole les journaux des différents services.
Pour une gestion flexible des journaux, Créer un projet.
Groupe de machines
k8s-group-${cluster_id}Un ensemble de nœuds de collecte de journaux. Les adresses IP des nœuds Kubernetes changent dynamiquement lors du scaling du cluster (ajout ou suppression de nœuds), ce qui peut provoquer des échecs de heartbeat si le groupe de machines est identifié par adresse IP. Par conséquent, les groupes de machines dans les scénarios Kubernetes utilisent un identifiant personnalisé. Pour plus d'informations, consultez le Guide d'association des groupes de machines aux configurations de collecte.
ImportantLe composant LoongCollector ne crée pas de logstore nommé config-operation-log. Si ce logstore existe déjà, LoongCollector n'y écrit pas de journaux.
Cluster auto-géré
-
Connectez-vous au cluster Kubernetes et exécutez la commande appropriée pour votre région :
Régions en Chine
wget https://aliyun-observability-release-cn-shanghai.oss-cn-shanghai.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.shRégions hors de Chine
wget https://aliyun-observability-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.sh -
Accédez au répertoire
loongcollector-custom-k8s-packageet modifiez le fichier de configuration./loongcollector/values.yaml.# ===================== Required Information ===================== # The name of the Project to which logs from this cluster are sent. Example: k8s-log-custom-sd89ehdq projectName: "" # The region where the Project is located. Example: cn-shanghai region: "" # The UID of the Alibaba Cloud account that owns the Project. Enclose the UID in quotation marks (""). Example: "123456789" aliUid: "" # The network type. Valid values: Internet and Intranet. Default value: Internet. net: Internet # The AccessKey ID and AccessKey secret of the Alibaba Cloud account or RAM user. The account or RAM user must have the AliyunLogFullAccess system policy permission. accessKeyID: "" accessKeySecret: "" # A custom cluster ID. The ID can contain only uppercase letters, lowercase letters, digits, and hyphens (-). clusterID: "" -
Dans le répertoire
loongcollector-custom-k8s-package, exécutez la commande suivante pour installer LoongCollector et ses dépendances :bash k8s-custom-install.sh install -
Une fois l'installation terminée, vérifiez que les composants sont en cours d'exécution.
Si un pod ne démarre pas, vérifiez les configurations dans le fichier values.yaml et assurez-vous que les images requises ont été extraites.
# Check the pod status kubectl get po -n kube-system | grep loongcollector-dsSimple Log Service crée également automatiquement les ressources suivantes. Vous pouvez les consulter dans la console Simple Log Service.
Type de ressource
Nom de la ressource
Description
Projet
La valeur de
projectNameque vous avez spécifiée dans le fichier values.yamlIsole les journaux des différents services.
Pour une gestion flexible des journaux, Créer un projet.
Groupe de machines
k8s-group-${cluster_id}Un ensemble de nœuds de collecte de journaux. Les adresses IP des nœuds Kubernetes changent dynamiquement lors du scaling du cluster (ajout ou suppression de nœuds), ce qui peut provoquer des échecs de heartbeat si le groupe de machines est identifié par adresse IP. Par conséquent, les groupes de machines dans les scénarios Kubernetes utilisent un identifiant personnalisé. Pour plus d'informations, consultez le Guide d'association des groupes de machines aux configurations de collecte.
ImportantLe composant LoongCollector ne crée pas de logstore nommé config-operation-log. Si ce logstore existe déjà, LoongCollector n'y écrit pas de journaux.
Étape 2 : Créer un logstore
Un logstore est l'unité de stockage de base pour les journaux dans SLS.
Connectez-vous à la console Simple Log Service et cliquez sur le nom du projet cible.
-
Dans le volet de navigation de gauche, sélectionnez
, cliquez sur +, puis créez un logstore :Logstore Name : Saisissez un nom unique au sein du projet. Ce nom ne peut pas être modifié après la création.
Logstore Type : Sélectionnez Standard ou Query en fonction de la comparaison des fonctionnalités.
-
Billing Mode :
Pay-by-feature (Cannot Be Changed) : Vous êtes facturé indépendamment pour chaque ressource, telle que le stockage, l'indexation et les opérations de lecture/écriture. Ce mode convient aux cas d'utilisation à petite échelle ou lorsque l'utilisation des fonctionnalités est incertaine.
Pay-by-ingested-data : Vous êtes facturé uniquement pour le volume de données brutes que vous écrivez. Ce mode offre 30 jours de stockage gratuit et des fonctionnalités gratuites, telles que la transformation et la distribution des données. Il convient aux cas d'utilisation professionnels où la période de rétention est proche de 30 jours ou lorsque le pipeline de traitement des données est complexe.
Data Retention Period : Nombre de jours de conservation des journaux. La valeur peut aller de 1 à 3 650. Une valeur de 3 650 indique une conservation permanente. La valeur par défaut est de 30 jours.
Conservez les valeurs par défaut pour les autres paramètres et cliquez sur OK. Gérer un logstore.
Étape 3 : Configurer une règle de collecte de journaux
Définissez les journaux à collecter, leur méthode d'analyse et les filtres de contenu, puis appliquez la configuration à un groupe de machines.
Sur la page Logstore
, cliquez sur l'icône
située devant le nom du Logstore cible pour le développer.-
Cliquez sur l'icône
à côté de Import Data. Dans la boîte de dialogue Quick Data Import, sélectionnez un modèle en fonction de la source des journaux et cliquez sur Integrate Now :-
Pour la sortie standard des conteneurs, sélectionnez K8s-Standard Output-New.
Deux modèles, ancien et nouveau, sont disponibles pour la collecte de la sortie standard des conteneurs. Nous vous recommandons d'utiliser la nouvelle version. Pour une comparaison des versions, consultez Annexe : Comparaison des nouvelles et anciennes versions de la sortie standard des conteneurs .
Pour les journaux textuels du cluster, sélectionnez Kubernetes-File.
-
-
Dans la section Machine Group Configurations, effectuez la configuration et cliquez sur Next :
Scenario : Sélectionnez Docker Containers.
Deployment method : Sélectionnez ACK DaemonSet ou Self-managed Cluster in DaemonSet Mode.
Dans la liste Source Machine Group, déplacez le groupe de machines créé par le système
k8s-group-${cluster_id}vers la liste Applied Machine Group.
Sur la page Logtail Configuration, configurez les paramètres suivants, puis cliquez sur Next.
1. Configuration globale et configuration d'entrée
À cette étape, définissez le nom, la source des journaux et la portée de votre configuration de collecte.
Sortie standard des conteneurs
Global Configurations
-
Configuration Name : Saisissez un nom personnalisé pour la configuration de collecte. Le nom doit être unique au sein du projet et ne peut pas être modifié après la création. Conventions de nommage :
Ne peut contenir que des lettres minuscules, des chiffres, des traits d'union (-) et des underscores (_).
Doit commencer et se terminer par une lettre minuscule ou un chiffre.
Input configuration
-
Activez les commutateurs Stdout and Stderr et/ou Standard Error. Les deux sont activés par défaut.
ImportantNous vous déconseillons d'activer simultanément la sortie standard et la sortie d'erreur standard, car cela peut entraîner une collecte des journaux dans le désordre.
Journaux textuels du cluster
Global Configurations :
-
Configuration Name : Saisissez un nom personnalisé pour la configuration de collecte. Le nom doit être unique au sein du projet et ne peut pas être modifié après la création. Conventions de nommage :
Ne peut contenir que des lettres minuscules, des chiffres, des traits d'union (-) et des underscores (_).
Doit commencer et se terminer par une lettre minuscule ou un chiffre.
Input Configurations :
-
File Path Type :
Path in Container : Collectez les fichiers journaux depuis l'intérieur d'un conteneur.
Host Path : Collectez les journaux des services locaux sur la machine hôte.
-
File Path : Le chemin absolu pour la collecte des journaux.
Linux : Doit commencer par une barre oblique (/), par exemple
/data/mylogs/**/*.log. Ce chemin indique tous les fichiers se terminant par .log dans le répertoire/data/mylogset ses sous-répertoires.Windows : Doit commencer par une lettre de lecteur, par exemple
C:\Program Files\Intel\**\*.log.
-
Maximum Directory Monitoring Depth : La profondeur maximale de répertoire que le caractère générique
**dans le champ File Path peut correspondre. La valeur par défaut est 0 (répertoire actuel uniquement) et la plage valide va de 0 à 1 000.Nous vous recommandons de définir cette valeur sur 0 et de configurer le chemin vers le répertoire contenant les fichiers journaux.
2. Traitement et structuration des journaux
Configurez des règles de traitement pour convertir les journaux bruts en données structurées et consultables. Ajoutez un exemple de journal avant de configurer les règles.
Sur la page Logtail Configuration, dans la zone Processor Configurations, cliquez sur Add Sample Log et saisissez le contenu du journal que vous souhaitez collecter. Le système utilise cet exemple pour identifier le format du journal et aider à générer des expressions régulières et des règles d'analyse, ce qui simplifie le processus de configuration.
Cas d'utilisation 1 : Traiter les journaux multilignes
Les journaux tels que les traces de pile Java et les objets JSON s'étendent souvent sur plusieurs lignes. Par défaut, ils sont divisés en enregistrements incomplets. Activez le mode multiligne et configurez une expression régulière pour la première ligne afin de fusionner les lignes consécutives en enregistrements complets.
Exemple :
|
Journal brut non traité |
En mode par défaut, chaque ligne est traitée comme un journal distinct, ce qui fragmente la trace de pile et perd le contexte. |
Avec le mode multiligne activé, une expression régulière identifie un journal complet, préservant ainsi sa structure sémantique. |
|
|
|
|
Procédure : Sur la page Logtail Configuration, dans la zone Processor Configurations, activez Multi-line Mode.
-
Type : Sélectionnez Custom ou Multi-line JSON.
-
Custom : Si le format du journal brut n'est pas fixe, vous devez configurer une Regex to Match First Line pour identifier la ligne de départ de chaque entrée de journal.
-
Regex to Match First Line : Vous pouvez la générer automatiquement ou la saisir manuellement. L'expression doit correspondre à une ligne entière de données. Pour l'exemple ci-dessus, l'expression régulière correspondante est
\[\d+-\d+-\w+:\d+:\d+,\d+]\s\[\w+]\s.*.Génération automatique : Cliquez sur Auto-generate Regular Expression. Dans la zone de texte Log Sample, sélectionnez le contenu du journal à extraire et cliquez sur Generate Regex.
Saisie manuelle : Cliquez sur Manually Enter Regular Expression. Après avoir saisi l'expression, cliquez sur Validate.
-
Multi-line JSON : Sélectionnez cette option lorsque les journaux bruts sont au format JSON standard. LoongCollector gère automatiquement les sauts de ligne au sein d'une seule entrée JSON.
-
-
Processing Method If Splitting Fails :
Discard : Si un segment de texte ne correspond pas à l'expression régulière de la première ligne, il est ignoré.
Retain Single Line : Le texte non correspondant est divisé et conservé selon le mode original sur une seule ligne.
Cas d'utilisation 2 : Structurer les journaux
Lorsque les journaux bruts sont du texte non structuré (par exemple, les journaux d'accès Nginx), l'interrogation directe est inefficace. LoongCollector fournit des plugins d'analyse qui convertissent les journaux bruts en paires clé-valeur structurées pour l'analyse, la surveillance et les alertes.
Exemple :
|
Journal brut non traité |
Journal après analyse structurée |
|
|
Procédure : Dans la zone Processor Configurations de la page Logtail Configuration :
Ajouter un plugin d'analyse : Cliquez sur Add Processor et configurez un plugin d'analyse regex, délimiteur ou JSON en fonction du format de vos journaux. Pour cet exemple NGINX, sélectionnez .
-
NGINX Log Configuration : copiez l'intégralité de la définition
log_formatdepuis le fichier de configuration de votre serveur Nginx (nginx.conf) et collez-la dans cette zone de texte.Exemple :
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$request_time $request_length ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent"';ImportantLa définition du format ici doit correspondre exactement au format qui génère les journaux sur le serveur ; sinon, l'analyse échouera.
-
Paramètres courants : Les paramètres suivants sont communs à plusieurs plugins d'analyse de données et fonctionnent de la même manière.
Original field : Spécifie le champ source à analyser. La valeur par défaut est
content, qui correspond à l'entrée de journal collectée dans son intégralité.Keep original field on failure : Recommandé. Si un journal ne parvient pas à être analysé (par exemple, en raison d'une incompatibilité de format), cette option conserve le contenu du journal original dans le champ source spécifié.
Keep original field on success : Lorsqu'elle est sélectionnée, le contenu du journal original est conservé même après une analyse réussie.
3. Filtrage des journaux
La collecte de journaux de faible valeur ou non pertinents, tels que ceux au niveau DEBUG ou INFO, gaspille de l'espace de stockage, augmente les coûts, altère les performances des requêtes et peut introduire des risques de sécurité. Mettez en œuvre des politiques de filtrage granulaires pour une collecte de journaux efficace et sécurisée.
Filtrage du contenu
Filtrez les journaux en fonction du contenu des champs, par exemple en ne collectant que les journaux dont le niveau est WARNING ou ERROR.
Exemple :
|
Journaux bruts non traités |
Collecter uniquement les journaux |
|
|
Procédure : Dans la zone Processor Configurations de la page Logtail Configuration :
Cliquez sur Add Processor et sélectionnez .
Field Name : Le champ de journal sur lequel appliquer le filtre.
Field Value : L'expression régulière pour le filtrage. Seule la correspondance de texte intégral est prise en charge ; la correspondance partielle par mot-clé ne l'est pas.
Liste noire de collecte
Utilisez une liste noire pour exclure des répertoires ou des fichiers spécifiés, empêchant ainsi le téléchargement de journaux non pertinents ou sensibles.
Procédure : Sur la page Logtail Configuration, accédez à la zone , activez Collection Blacklist et cliquez sur Add.
Prend en charge la correspondance exacte et avec caractères génériques pour les répertoires et les noms de fichiers. Les seuls caractères génériques pris en charge sont l'astérisque (*) et le point d'interrogation (?).
-
File Path Blacklist : Les chemins de fichiers à ignorer. Exemples :
/home/admin/private*.log: Ignore tous les fichiers du répertoire/home/admin/qui commencent par « private » et se terminent par « .log »./home/admin/private*/*_inner.log: Ignore les fichiers se terminant par « _inner.log » situés dans des sous-répertoires commençant par « private » sous le répertoire/home/admin/.
-
File Blacklist : Les noms de fichiers à ignorer lors de la collecte. Exemple :
app_inner.log: Ignore tous les fichiers nommésapp_inner.log.
-
Directory Blacklist : Le chemin du répertoire ne peut pas se terminer par une barre oblique (/). Exemples :
/home/admin/dir1/: La liste noire de répertoires ne prendra pas effet./home/admin/dir*: Ignore tous les fichiers contenus dans les sous-répertoires de/home/admin/qui commencent par « dir »./home/admin/*/dir: Ignore tous les fichiers de tout sous-répertoire de deuxième niveau nommé « dir » sous/home/admin/. Par exemple, les fichiers dans/home/admin/a/dirsont ignorés, mais les fichiers dans/home/admin/a/b/dirsont collectés.
Filtrage des conteneurs
Définissez des conditions de collecte basées sur les métadonnées du conteneur — telles que les variables d'environnement, les libellés Pod, les namespaces et les noms de conteneurs — pour contrôler précisément quels journaux de conteneurs sont collectés.
Procédure : Dans la zone Input Configurations de la page Logtail Configuration, activez Container Filtering et cliquez sur Add.
Plusieurs conditions sont combinées avec un « ET » logique. Toute la correspondance d'expressions régulières est basée sur le moteur RE2 de Go, qui présente des limitations par rapport à des moteurs comme PCRE. Assurez-vous que vos expressions sont conformes aux Annexe : Limites d'utilisation des expressions régulières (filtrage des conteneurs) .
Liste noire/liste d'autorisation de variables d'environnement : Filtrez les conteneurs en fonction de leurs variables d'environnement.
Liste noire/liste d'autorisation de libellés Pod K8s : Filtrez les Pods en fonction de leurs libellés.
Correspondance d'expression régulière du nom du Pod K8s : Collectez les journaux des Pods dont les noms correspondent à l'expression régulière spécifiée.
Correspondance d'expression régulière du namespace K8s : Sélectionne les conteneurs à collecter en fonction du nom du namespace.
Correspondance d'expression régulière du nom du conteneur K8s : Collectez les journaux des conteneurs dont les noms correspondent à l'expression régulière spécifiée.
Liste noire/liste d'autorisation de libellés de conteneur : Collectez les journaux des conteneurs avec des libellés correspondants. Ceci est destiné aux scénarios Docker et n'est pas recommandé pour les scénarios K8s.
4. Catégorisation des journaux
Dans les scénarios où plusieurs applications partagent un format de journal, il est difficile de distinguer la source. Configurez des topics et des tags de journaux pour permettre une association contextuelle automatisée et une catégorisation logique.
Topics de journaux
Lorsque plusieurs applications ou instances partagent un format de journal mais ont des chemins différents (par exemple, /apps/app-A/run.log et /apps/app-B/run.log), il est difficile de distinguer la source. Pour résoudre ce problème, vous pouvez générer un topic de journal basé sur le groupe de machines, un nom personnalisé ou l'extraction du chemin de fichier afin de différencier les journaux provenant de diverses sources métier ou de chemins.
Procédure : Accédez à et sélectionnez une méthode de génération de topic parmi les trois options suivantes :
Machine group topic : Lorsqu'une configuration de collecte est appliquée à plusieurs groupes de machines, LoongCollector utilise automatiquement le nom du groupe de machines comme valeur du champ
__topic__. Cela convient aux scénarios où les journaux sont catégorisés par cluster d'hôtes.Custom : Le format est
customized://<custom_topic_name>, par exemplecustomized://app-login. Cela convient aux scénarios de topics statiques avec des identifiants métier fixes.-
File path extraction : Extrait les informations clés du chemin complet du fichier journal pour marquer dynamiquement la source du journal. Cela convient lorsque plusieurs utilisateurs ou applications partagent le même nom de fichier journal mais ont des chemins différents.
Lorsque plusieurs utilisateurs ou services écrivent des journaux dans des répertoires de premier niveau différents avec des sous-chemins et des noms de fichiers identiques, la source ne peut pas être distinguée par le nom de fichier seul. Par exemple :
/data/logs ├── userA │ └── serviceA │ └── service.log ├── userB │ └── serviceA │ └── service.log └── userC └── serviceA └── service.logDans ce cas, vous pouvez configurer l'extraction du chemin de fichier et utiliser une expression régulière pour extraire les informations clés du chemin complet. Le résultat correspondant est ensuite téléchargé vers le Logstore en tant que topic de journal.
Règle d'extraction : Groupes de capture regex
Lorsque vous configurez une expression régulière, le système détermine automatiquement le format du champ de sortie en fonction du nombre et du nom des groupes de capture, comme suit :
Dans l'expression régulière d'un chemin de fichier, les barres obliques (/) doivent être échappées.
Type de groupe de capture
Cas d'utilisation
Champ généré
Exemple de regex
Chemin d'exemple
Champ généré
Un seul groupe de capture (un
(.*?))Une seule dimension est nécessaire pour distinguer les sources (par exemple, nom d'utilisateur, environnement).
Génère un champ
__topic__.\/logs\/(.*?)\/app\.log/logs/userA/app.log__topic__:userAPlusieurs groupes de capture sans nom (plusieurs
(.*?))Plusieurs dimensions sont nécessaires mais sans libellés sémantiques.
Génère des champs Tag formatés comme
__tag__:__topic_{i}__:value, où{i}est l'index du groupe de capture.\/logs\/(.*?)\/(.*?)\/app\.log/logs/userA/svcA/app.log__tag__:__topic_1__:userA;__tag__:__topic_2__:svcAPlusieurs groupes de capture nommés (utilisation de
(?P<name>.*?))Plusieurs dimensions sont nécessaires avec des noms de champs clairs et sémantiques pour faciliter l'interrogation et l'analyse.
Génère des champs Tag formatés comme
__tag__:{name}:value.\/logs\/(?P<user>.*?)\/(?P<service>.*?)\/app\.log/logs/userA/svcA/app.log__tag__:user:userA;__tag__:service:svcA
Tagging des journaux
Activez la fonction d'enrichissement des tags de journaux pour extraire les informations clés des variables d'environnement du conteneur ou des libellés Pod Kubernetes et les joindre en tant que Tags pour un regroupement fin des journaux.
Procédure : Sur la page Logtail Configuration, dans la zone Input Configurations, activez Log Tag Enrichment et cliquez sur Add.
-
Environment Variables : Configurez un nom de variable d'environnement et une clé de Tag. La valeur de la variable d'environnement sera stockée comme valeur du Tag.
Nom de la variable d'environnement : Le nom de la variable d'environnement à extraire.
Clé de Tag : La clé du nouveau Tag.
-
Pod Labels : Configurez une clé de libellé Pod et une clé de Tag. La valeur du libellé Pod sera stockée comme valeur du Tag.
Clé de libellé Pod : La clé du libellé Kubernetes Pod à extraire.
Clé de Tag : La clé du nouveau Tag.
5. Configuration de sortie
Par défaut, tous les journaux sont envoyés vers le Logstore actuel avec une compression lz4. Pour distribuer les journaux provenant d'une même source vers différents Logstores, suivez les étapes ci-dessous.
Distribution dynamique multi-destinations
La distribution dynamique multi-destinations est disponible uniquement pour LoongCollector 3.0.0 et versions ultérieures. Cette fonctionnalité n'est pas prise en charge par Logtail.
Vous pouvez configurer un maximum de cinq destinations de sortie.
Une fois que vous avez configuré plusieurs destinations de sortie, cette configuration de collecte n'apparaîtra plus dans la liste des configurations de collecte du Logstore actuel. Pour afficher, modifier ou supprimer la configuration, consultez Comment gérer les configurations de distribution multi-destinations ?.
Procédure : Sur la page Logtail Configuration, dans la zone Output Configurations :
Cliquez sur
pour développer la configuration de sortie.-
Cliquez sur Add Output Targets et renseignez les paramètres suivants :
Logstores : Sélectionnez le Logstore cible.
Compression Method : Prend en charge lz4 et zstd.
-
Route Settings : Acheminez les journaux en fonction des champs Tag. Les journaux correspondant à la configuration de routage sont envoyés vers le Logstore cible. Si ce champ est laissé vide, tous les journaux collectés sont envoyés vers le Logstore cible.
-
Tag Name : La clé Tag utilisée pour le routage. Saisissez directement la clé (par exemple,
__path__) sans le préfixe__tag__:. Les champs Tag se divisent en deux catégories :Les tags sont expliqués dans Gérer les tags de collecte LoongCollector .
Liés à l'agent : Générés par l'agent de collecte et indépendants de tout plugin. Exemples :
__hostname__et__user_defined_id__.Liés au plugin d'entrée : Fournis et enrichis par les plugins d'entrée. Exemples :
__path__issu de la collecte de fichiers et_pod_name_ou_container_name_issus de la collecte K8s.
Tag Value : Les journaux dont la valeur Tag correspond à ce paramètre sont envoyés vers le Logstore cible.
Discard this tag? : Si cette option est activée, ce champ Tag ne sera pas inclus dans les journaux téléchargés.
-
Étape 4 : Requête et analyse
Après avoir configuré le traitement des journaux et les plugins, cliquez sur Next pour accéder à la page Query and Analysis Configurations :
Par défaut, le système active l'index full-text, qui vous permet de rechercher du contenu brut de journal par mot-clé.
Pour interroger les données par champs spécifiques, cliquez sur Automatic Index Generation après le chargement de Preview Data. Log Service génère un index de champ basé sur la première entrée de journal dans les données d'aperçu.
Une fois la configuration terminée, cliquez sur Next pour finaliser le processus de collecte.
Étape 5 : Validation et dépannage
Après avoir créé et appliqué une configuration de collecte à un groupe de machines, le système la déploie automatiquement et commence à collecter les journaux incrémentiels.
Afficher les journaux collectés
Vérifiez que le fichier journal contient de nouveaux contenus : LoongCollector collecte uniquement les journaux incrémentiels. Exécutez
tail -f /path/to/your/log/fileet déclenchez des opérations métier pour vous assurer que de nouveaux journaux sont écrits.-
Recherchez des journaux : Accédez à la page Search & Analyze du Logstore cible. Cliquez sur Search & Analyze. La plage de temps par défaut est les 15 dernières minutes. Vérifiez si de nouveaux journaux sont ingérés. Chaque journal texte de conteneur collecté inclut par défaut les champs suivants :
Paramètre
Description
__tag__:__hostname__Nom de l'hôte du conteneur.
__tag__:__path__Chemin du fichier journal dans le conteneur.
__tag__:_container_ip_Adresse IP du conteneur.
__tag__:_image_name_Nom de l'image utilisée par le conteneur.
__tag__:_pod_name_Nom du Pod.
__tag__:_namespace_Namespace du Pod.
__tag__:_pod_uid_Identifiant unique (UID) du Pod.
Interroger les nœuds historiques d'un Pod
Si un Pod a migré ou redémarré, vous pouvez interroger les journaux d'événements Kubernetes de votre cluster ACK dans Simple Log Service pour identifier les nœuds sur lesquels le Pod s'exécutait précédemment.
Connectez-vous à la console Simple Log Service et localisez le projet
k8s-log-{cluster_id}dans la liste des projets.Cliquez sur le LogStore k8s-event pour accéder à la page de requête et d'analyse.
Dans la zone de recherche, saisissez une instruction de requête filtrant par nom de Pod, par exemple
pod_name: my-pod, puis cliquez sur Search & Analyze.Dans les résultats renvoyés, vérifiez la valeur du champ
hostname. Cette valeur correspond au nom d'hôte du nœud sur lequel le Pod s'exécutait.
Dans le LogStore k8s-event, les noms de champs sont pod_name et hostname, sans le préfixe __tag__:. Le format avec préfixe __tag__: s'applique à la collecte stdout des conteneurs et aux journaux texte, mais pas aux journaux d'événements Kubernetes.
Résoudre les problèmes courants
Échec du heartbeat du groupe de machines
-
Vérifiez l'identifiant utilisateur : Si votre serveur n'est pas une instance ECS, ou si l'instance ECS et le Project appartiennent à des comptes Alibaba Cloud différents, assurez-vous que l'identifiant utilisateur correct existe dans le répertoire spécifié.
Sous Linux, exécutez la commande
cd /etc/ilogtail/users/ && touch <uid>pour créer un fichier d'identifiant utilisateur.Windows : Accédez au répertoire
C:\LogtailData\users\et créez un fichier vide nommé<uid>.
L'identifiant utilisateur est correctement configuré si le chemin spécifié contient un fichier dont le nom correspond à l'ID de compte Alibaba Cloud du Project actuel.
-
Vérifiez l'identifiant du groupe de machines : Si vous utilisez un identifiant personnalisé pour un groupe de machines, vérifiez si le fichier
user_defined_idexiste dans le répertoire spécifié. Si le fichier existe, vérifiez si son contenu correspond à l'identifiant personnalisé configuré pour le groupe de machines.-
Linux :
# Configure the custom identifier. If the directory does not exist, create it manually. echo "user-defined-1" > /etc/ilogtail/user_defined_id Windows : Dans le répertoire
C:\LogtailData, créez un fichier nomméuser_defined_idet écrivez-y l'identifiant personnalisé. (Si le répertoire n'existe pas, créez-le manuellement.)
-
Si l'identifiant utilisateur et l'identifiant du groupe de machines sont correctement configurés, consultez la rubrique Dépannage des groupes de machines LoongCollector (Logtail) pour poursuivre le dépannage.
Erreurs de collecte de journaux ou erreurs de format
Ce problème survient généralement lorsque votre connexion réseau et votre configuration de base sont correctes, mais que le contenu du journal ne correspond pas aux règles d'analyse. Pour diagnostiquer le problème, affichez le message d'erreur spécifique :
Sur la page Logtail Configuration, cliquez sur le nom de la configuration LoongCollector (Logtail) présentant des erreurs de collecte. Dans l'onglet Log Collection Error, cliquez sur Select Time Range pour définir la période de requête.
Dans la section , consultez le type d'alerte du journal d'erreur et reportez-vous à la rubrique Types d'erreurs courants lors de la collecte de données pour trouver la solution correspondante.
Étapes suivantes
Visualisation des données : Utilisez des tableaux de bord de visualisation pour surveiller les tendances des métriques clés.
Alerte d'anomalies de données : Configurez des politiques d'alerte pour détecter les anomalies de données en temps réel.
Dépannage de la collecte de journaux de conteneurs
Vérifiez que de nouveaux journaux sont générés dans le fichier journal cible. Logtail ne collecte pas de données tant que de nouveaux journaux n'apparaissent pas.
FAQ
Gérer les configurations de distribution multi-destinations
Étant donné que les configurations de distribution multi-destinations s'appliquent à plusieurs logstores, gérez-les depuis la page de gestion au niveau du Project :
Connectez-vous à la console Simple Log Service et cliquez sur le nom du Project cible.
-
Sur la page Project, dans le volet de navigation de gauche, cliquez sur
.RemarqueCette page gère toutes les configurations de collecte au sein du Project, y compris les configurations des logstores qui ont été accidentellement supprimés.
Envoyer les journaux ACK vers un Project inter-comptes
Vous pouvez envoyer les journaux de conteneurs vers un Project Simple Log Service (SLS) appartenant à un autre compte Alibaba Cloud en installant manuellement le composant LoongCollector (Logtail) dans le cluster ACK et en le configurant avec l'ID de compte Alibaba Cloud du compte cible ou ses identifiants d'accès (AccessKey).
Description du scénario : Si vous devez collecter des données de journaux dans le Project SLS d'un autre compte à des fins organisationnelles, de permissions ou de surveillance, installez manuellement LoongCollector (Logtail) pour activer la collecte inter-comptes.
Procédure : Suivez ces étapes pour installer manuellement LoongCollector. Pour plus d'informations sur l'installation de Logtail, consultez la rubrique Installer et configurer Logtail.
-
Connectez-vous au cluster Kubernetes et exécutez la commande appropriée pour votre région :
Régions Chine
wget https://aliyun-observability-release-cn-shanghai.oss-cn-shanghai.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.shRégions hors Chine
wget https://aliyun-observability-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.sh -
Accédez au répertoire
loongcollector-custom-k8s-packageet modifiez le fichier de configuration./loongcollector/values.yaml.# ===================== Required Information ===================== # The name of the Project to which logs from this cluster are sent. Example: k8s-log-custom-sd89ehdq projectName: "" # The region where the Project is located. Example: cn-shanghai region: "" # The UID of the Alibaba Cloud account that owns the Project. Enclose the UID in quotation marks (""). Example: "123456789" aliUid: "" # The network type. Valid values: Internet and Intranet. Default value: Internet. net: Internet # The AccessKey ID and AccessKey secret of the Alibaba Cloud account or RAM user. The account or RAM user must have the AliyunLogFullAccess system policy permission. accessKeyID: "" accessKeySecret: "" # A custom cluster ID. The ID can contain only uppercase letters, lowercase letters, digits, and hyphens (-). clusterID: "" -
Dans le répertoire
loongcollector-custom-k8s-package, exécutez la commande suivante pour installer LoongCollector et ses dépendances :bash k8s-custom-install.sh install -
Une fois l'installation terminée, vérifiez que les composants sont en cours d'exécution.
Si un pod ne démarre pas, vérifiez les configurations dans le fichier values.yaml et assurez-vous que les images requises ont été extraites.
# Check the pod status kubectl get po -n kube-system | grep loongcollector-dsSimple Log Service crée également automatiquement les ressources suivantes. Vous pouvez les consulter dans la console Simple Log Service.
Type de ressource
Nom de la ressource
Description
Project
La valeur de
projectNameque vous avez spécifiée dans le fichier values.yamlIsole les journaux des différents services.
Pour une gestion flexible des journaux, consultez la rubrique Créer un projet.
Groupe de machines
k8s-group-${cluster_id}Un ensemble de nœuds de collecte de journaux. Les adresses IP des nœuds Kubernetes changent dynamiquement lors de la mise à l'échelle du cluster (ajout ou suppression de nœuds), ce qui peut entraîner des échecs de heartbeat si le groupe de machines est identifié par adresse IP. Par conséquent, les groupes de machines dans les scénarios Kubernetes utilisent un identifiant personnalisé. Pour plus d'informations, consultez le Guide d'association des groupes de machines aux configurations de collecte.
ImportantLe composant LoongCollector ne crée pas de logstore nommé config-operation-log. Si ce logstore existe déjà, LoongCollector n'y écrit pas de journaux.
Utiliser plusieurs configurations pour la même source
Par défaut, afin d'éviter la duplication des données, Simple Log Service (SLS) n'autorise qu'une seule configuration de collecte pour chaque source de journaux :
Un fichier journal texte ne peut correspondre qu'à une seule configuration de collecte Logtail.
-
Sortie standard (stdout) d'un conteneur :
Si vous utilisez la nouvelle version du modèle de sortie standard, stdout ne peut être collecté que par une seule configuration de collecte de sortie standard par défaut.
Si vous utilisez l'ancienne version du modèle de sortie standard, aucune configuration supplémentaire n'est requise et plusieurs collectes sont prises en charge par défaut.
Connectez-vous à la console Simple Log Service et accédez au Project cible.
Dans le volet de navigation de gauche, choisissez
Logstores et recherchez le logstore cible.Cliquez sur l'icône
située à côté de son nom pour développer le logstore.Cliquez sur Logtail Configuration. Dans la liste des configurations, recherchez la configuration Logtail cible et cliquez sur Manage Logtail Configuration dans la colonne Actions.
-
Sur la page de configuration Logtail, cliquez sur Edit et faites défiler jusqu'à la section Input Configurations :
Pour collecter les journaux de fichiers texte, activez l'option Allow File to Be Collected for Multiple Times.
Pour collecter la sortie standard des conteneurs, activez l'option Allow Collection by Different Logtail Configurations.
Erreur de dépendance lors de la désinstallation de loongcollector
Problème : Lorsque vous tentez de désinstaller le composant loongcollector (logtail-ds) dans Container Service for Kubernetes (ACK), vous recevez une erreur indiquant que les dépendances du composant ne sont pas satisfaites.
Dependencies of addons are not met: terway-eniip depends on logtail-ds(>0.0) whose version is v3.x.x.x-aliyun or will be v3.x.x.x-aliyun.
Cause : Le plugin réseau terway-eniip a la collecte de journaux activée, ce qui crée une dépendance envers le composant loongcollector (logtail-ds). Par conséquent, ACK ne vous permet pas de désinstaller loongcollector (logtail-ds) tant que cette dépendance n'est pas supprimée.
Solution : Suivez ces étapes pour supprimer la dépendance, puis désinstallez le composant :
Connectez-vous à la console ACK.
Dans la liste des clusters, cliquez sur le nom du cluster cible pour accéder à sa page de détails.
Dans le volet de navigation de gauche, cliquez sur Add-ons.
Dans la liste des add-ons, recherchez le composant
terway-eniipet cliquez sur .Dans la boîte de dialogue qui s'affiche, cliquez sur OK.
Une fois la configuration appliquée, tentez à nouveau de désinstaller le composant loongcollector (logtail-ds).
Dernière entrée de journal retardée ou tronquée
Cause : La troncature des journaux se produit généralement lorsqu'il manque un saut de ligne final dans un fichier journal, ou lorsqu'une entrée multiligne, telle qu'une pile d'exceptions, n'a pas été entièrement écrite. Comme le collecteur ne peut pas déterminer si l'entrée de journal est complète, la dernière entrée peut être divisée ou retardée. La gestion de cette situation dépend de votre version de LoongCollector (Logtail) :
Versions antérieures à 1,8 : Si la dernière ligne d'un journal ne contient pas de saut de ligne (retour chariot) ou si un bloc de journal multiligne est incomplet, le collecteur attend la prochaine opération d'écriture pour déclencher une sortie. Cela peut retarder considérablement la dernière entrée de journal jusqu'à ce qu'un nouveau journal soit écrit.
-
Version 1.8 et ultérieures : Ces versions introduisent un mécanisme de vidage avec délai d'expiration pour éviter que les journaux ne restent bloqués. Lorsqu'une ligne de journal incomplète est détectée, le système lance un minuteur. À l'expiration du délai d'attente, le contenu actuel est automatiquement soumis pour garantir que le journal est finalement collecté.
Délai d'expiration par défaut : 60 secondes (garantit l'intégrité des données dans la plupart des scénarios)
Vous pouvez ajuster cette valeur selon vos besoins. Toutefois, nous vous recommandons de ne pas la définir sur 0, car cela pourrait entraîner une troncature des journaux ou une perte partielle de données.
Solution :
Vous pouvez prolonger le temps d'attente pour vous assurer qu'une entrée de journal complète est écrite avant sa collecte :
Connectez-vous à la console Simple Log Service et accédez au Project cible.
Dans le volet de navigation de gauche, choisissez
Logstores et recherchez le logstore cible.Cliquez sur l'icône
située à côté de son nom pour développer le logstore.Cliquez sur Logtail Configuration. Dans la liste des configurations, recherchez la configuration Logtail cible et cliquez sur Manage Logtail Configuration dans la colonne Actions.
-
Sur la page de configuration Logtail, cliquez sur Edit.
-
Accédez à et ajoutez la configuration JSON suivante pour personnaliser le délai d'expiration.
{ "FlushTimeoutSecs": 1 }Valeur par défaut : Déterminée par le paramètre de démarrage
default_reader_flush_timeout, qui est généralement de quelques secondes.Unité : Secondes.
Valeur recommandée : ≥ 1 seconde. Nous vous recommandons de ne pas la définir sur 0, car cela pourrait entraîner une troncature des journaux ou une perte partielle de données.
-
Une fois la configuration terminée, cliquez sur OK.
Basculement et récupération du réseau LoongCollector
Si LoongCollector (Logtail) détecte un problème de connectivité au réseau interne, tel qu'une panne ou un délai d'expiration, il bascule automatiquement vers le réseau public. Ce mécanisme de basculement garantit une collecte fiable des journaux et prévient les retards ou la perte de données.
LoongCollector : Rebascule automatiquement vers le réseau interne après la récupération du réseau.
Logtail : Ne rebascule pas automatiquement. Vous devez le redémarrer pour rétablir la communication via le réseau interne.
Annexe : Processeurs natifs
Sur la page Logtail Configuration, dans la zone Processor Configurations, vous pouvez ajouter des plug-ins de traitement pour structurer les journaux bruts. Pour ajouter un plug-in de traitement à une configuration de collecte existante, procédez comme suit :
Dans le volet de navigation de gauche, choisissez
Logstores et localisez le Logstore cible.Cliquez sur
à gauche de son nom pour développer le Logstore.Cliquez sur Logtail Configuration. Dans la liste des configurations, repérez la configuration Logtail cible et cliquez sur Manage Logtail Configuration dans la colonne Actions.
Sur la page de configuration Logtail, cliquez sur Edit.
Cette section présente uniquement les plug-ins de traitement couramment utilisés qui couvrent les scénarios de traitement de journaux fréquents. Pour en savoir plus sur les autres fonctionnalités, consultez Plug-ins de traitement étendus .
Règles de combinaison des plug-ins (s'applique à LoongCollector / Logtail 2.0 et versions ultérieures) :
Les plug-ins de traitement natifs et étendus peuvent être utilisés indépendamment ou conjointement selon vos besoins.
Il est recommandé d'utiliser en priorité les plug-ins de traitement natifs, car ils offrent de meilleures performances et une stabilité accrue.
Lorsque les fonctionnalités natives ne suffisent pas à répondre aux exigences métier, vous pouvez ajouter des plug-ins de traitement étendus après ceux natifs configurés afin d'effectuer un traitement complémentaire.
Contrainte d'ordre :
Tous les plug-ins sont exécutés séquentiellement dans l'ordre de leur configuration, formant ainsi une chaîne de traitement. Remarque : Tous les plug-ins de traitement natifs doivent précéder tout plug-in de traitement étendu. Une fois que vous avez ajouté un plug-in de traitement étendu, il n'est plus possible d'ajouter d'autres plug-ins de traitement natifs.
Analyse par expression régulière
Ce processeur utilise une expression régulière pour analyser les journaux en paires clé-valeur. Vous pouvez ensuite interroger et analyser chaque champ extrait indépendamment.
Exemple :
|
Journal brut |
Résultat de l'analyse |
|
|
Étapes : Sur la page Logtail Configuration, dans la zone Processor Configurations, cliquez sur Add Processor, puis sélectionnez :
-
Regular Expression : correspond aux entrées de journal. Vous pouvez soit la générer automatiquement, soit la saisir manuellement.
-
Pour générer automatiquement une expression régulière :
Cliquez sur Generate Regular Expression.
Dans la zone Log Sample, mettez en surbrillance le contenu à extraire.
-
Cliquez sur Generate.

Saisissez manuellement une expression régulière adaptée au format de votre journal.
Après avoir configuré l'expression, cliquez sur Validate pour vérifier qu'elle analyse correctement votre exemple de journal.
-
Extracted Field : attribuez un nom (clé) au contenu extrait (valeur).
Pour plus d'informations sur les autres paramètres, consultez la description des paramètres de configuration courants dans Scénario 2 : Journaux structurés.
Analyse par délimiteur
Ce processeur utilise un délimiteur pour analyser les journaux en paires clé-valeur. Vous pouvez utiliser des délimiteurs constitués d'un ou de plusieurs caractères.
Exemple :
|
Journal brut |
Utilisation du caractère spécifié |
|
|
Procédure : Sur la page Logtail Configuration, dans la zone Processor Configurations, cliquez sur Add Processor, puis sélectionnez :
-
Delimiter : caractère qui sépare les champs dans le journal.
Exemple : pour un fichier CSV, sélectionnez Custom et saisissez une virgule (,).
Quote : caractère utilisé pour encadrer la valeur d'un champ. Cette option est nécessaire si une valeur de champ peut contenir le délimiteur, afin d'éviter une division incorrecte.
-
Extracted Field : attribuez un nom de champ (clé) à chaque colonne, dans l'ordre séquentiel. Les noms de champs doivent respecter les règles suivantes :
Ils ne peuvent contenir que des lettres, des chiffres et des traits de soulignement (_).
Ils doivent commencer par une lettre ou un trait de soulignement (_).
Longueur maximale : 128 octets.
Pour plus d'informations sur les autres paramètres, consultez la description des paramètres de configuration courants dans Scénario 2 : Journaux structurés.
Analyse JSON standard
Ce processeur analyse une entrée de journal au format objet JSON en paires clé-valeur.
Exemple :
|
Journal brut |
Résultat de l'analyse |
|
|
Procédure : Sur la page Logtail Configuration, dans la section Processor Configurations, cliquez sur Add Processor, puis sélectionnez :
Original Field : la valeur par défaut est
content. Ce champ stocke le contenu brut du journal à analyser.Pour plus d'informations sur les autres paramètres, consultez la description des paramètres de configuration courants dans Scénario 2 : Journaux structurés.
Analyse JSON imbriqué
Ce processeur développe un objet JSON imbriqué en paires clé-valeur. Vous contrôlez le développement à l'aide du paramètre JSON expansion depth.
Exemple :
|
Journal brut |
Résultat (profondeur : 0) |
Résultat (profondeur : 1) |
|
|
|
Procédure : Sur la page Logtail Configuration, dans la section Processor Configurations, cliquez sur Add Processor, puis sélectionnez :
Original Field : nom du champ d'origine à développer, par exemple
content.JSON Expansion Depth : nombre de niveaux à développer au sein de l'objet JSON. La valeur
0développe tous les niveaux (par défaut),1développe uniquement le niveau supérieur, etc.Character to Concatenate Expanded Keys : caractère utilisé pour joindre les clés des objets imbriqués. La valeur par défaut est un trait de soulignement (
_).Name Prefix of Expanded Keys : préfixe à ajouter au nom de chaque clé développée.
-
Expand Array : activez cette option pour développer un tableau en paires clé-valeur indexées.
Par exemple,
{"k":["a","b"]}se développe en{"k[0]":"a","k[1]":"b"}.Pour renommer un champ développé (par exemple, passer de
prefix_s_key_k1ànew_field_name), ajoutez un processeur Rename Fields après celui-ci. Pour plus d'informations sur les autres paramètres, consultez la description des paramètres de configuration courants dans Scénario 2 : Journaux structurés.
Analyse de tableau JSON
Utilisez la fonction json_extract pour extraire un objet JSON d'un tableau JSON.
Exemple :
|
Journal brut |
Résultat de l'analyse |
|
|
Procédure : Sur la page Logtail Configuration, dans la section Processor Configurations, définissez la Processing Method sur SPL. Configurez ensuite l'instruction SPL pour utiliser la fonction json_extract afin d'extraire les objets JSON du tableau JSON.
Exemple : À partir du champ de journal content, extrayez les éléments d'un tableau JSON et stockez les résultats respectivement dans les nouveaux champs json1 et json2.
* | extend json1 = json_extract(content, '$[0]'), json2 = json_extract(content, '$[1]')
Analyse des journaux Apache
Ce processeur analyse les journaux d'accès Apache en paires clé-valeur selon votre directive Apache LogFormat.
Exemple :
|
Journal brut |
Analyse au format Common Log Format Apache |
|
|
Procédure : Sur la page Logtail Configuration, dans la section Processor Configurations, cliquez sur Add Processor, puis sélectionnez :
Log Format : combined
-
APACHE LogFormat Configuration : le système remplit automatiquement ce champ en fonction du Log Format sélectionné.
ImportantVérifiez que le contenu renseigné automatiquement est identique à la directive LogFormat définie dans le fichier de configuration Apache de votre serveur, généralement situé à l'emplacement
/etc/apache2/apache2.conf. Pour les autres paramètres, consultez la description des paramètres de configuration courants dans Scénario 2 : Journal structuré.
Masquage des données
Masquez les données sensibles présentes dans vos journaux.
Exemple :
|
Journal brut |
Résultat masqué |
|
|
Procédure : Sur la page Logtail Configuration, dans la section Processor Configurations, cliquez sur Add Processor et sélectionnez :
Original Field : champ source contenant les données à masquer.
-
Data Masking Method :
const : remplace les données sensibles par une chaîne spécifiée.
md5 : remplace les données sensibles par leur valeur de hachage MD5.
Replacement String : chaîne utilisée pour le masquage. Ce paramètre est requis lorsque la Data Masking Method est définie sur const.
Content Expression that Precedes Replaced Content : expression régulière utilisant la syntaxe RE2 pour localiser le contenu situé immédiatement avant les données sensibles.
Content Expression to Match Replaced Content : expression régulière utilisant la syntaxe RE2 pour identifier les données sensibles à remplacer.
Analyse temporelle
Cette fonction analyse le champ horaire du journal et définit le résultat obtenu comme valeur du champ __time__ du journal.
Exemple :
|
Journal brut |
Résultat analysé |
|
|
Procédure : Sur la page Logtail Configuration, dans la section Processor Configurations, cliquez sur Add Processor et sélectionnez :
Original Field : champ source contenant la chaîne horaire à analyser.
Time Format : format horaire correspondant à la chaîne horaire présente dans vos journaux.
Time Zone : fuseau horaire du champ temporel du journal. Si ce paramètre n'est pas spécifié, le fuseau horaire de la machine exécutant LoongCollector (Logtail) est utilisé par défaut.
Annexe : Limitations des expressions régulières (filtrage de conteneur)
Les expressions régulières utilisées pour le filtrage de conteneur s'appuient sur le moteur Go RE2. Par rapport à d'autres moteurs tels que PCRE, le moteur RE2 présente plusieurs limitations syntaxiques. Tenez compte des points suivants lors de la rédaction de vos expressions régulières :
1. Différences de syntaxe pour les groupes nommés
Go utilise la syntaxe (?P<name>...) pour définir un groupe nommé et ne prend pas en charge la syntaxe (?<name>...) issue de PCRE.
Correct :
(?P<year>\d{4})Incorrect :
(?<year>\d{4})
2. Fonctionnalités d'expressions régulières non prises en charge
Le moteur RE2 ne prend pas en charge les fonctionnalités d'expressions régulières courantes mais complexes suivantes. Évitez de les utiliser :
Assertions :
(?=...),(?!...),(?<=...)et(?<!...)Expressions conditionnelles :
(?(condition)true|false)Correspondance récursive :
(?R)et(?0)Références de sous-programmes :
(?&name)et(?P>name)Groupes atomiques :
(?>...)
3. Recommandations
Utilisez un outil tel que Regex101 pour déboguer vos expressions régulières. Afin de garantir la compatibilité, sélectionnez le mode Golang (RE2) pour la validation. L'utilisation d'une syntaxe non prise en charge entraînera l'échec de l'analyse ou de la correspondance de l'expression par le plug-in.
Annexe : Comparaison des versions de la sortie standard des conteneurs
Pour améliorer l'efficacité du stockage et la cohérence de la collecte, le format des métadonnées des journaux pour la sortie standard des conteneurs a été mis à niveau. Le nouveau format regroupe les métadonnées sous le champ __tag__, ce qui optimise le stockage et normalise le format.
Principaux avantages de la nouvelle sortie standard
Performances considérablement améliorées
Réécrite en C++, la nouvelle version offre une amélioration des performances de 180 % à 300 % par rapport à l'implémentation Go précédente.
Elle prend en charge le traitement des données avec des plug-ins natifs et le traitement parallèle multithread, exploitant ainsi pleinement les ressources système.
Elle permet des combinaisons flexibles de plug-ins natifs et de plug-ins Go pour répondre aux besoins de scénarios complexes.
Fiabilité accrue
Elle prend en charge une file d'attente rotative pour les journaux de sortie standard et unifie le mécanisme de collecte des journaux avec celui de la collecte de fichiers, offrant ainsi une haute fiabilité lors de la rotation rapide des journaux de sortie standard.
Consommation de ressources réduite
L'utilisation du CPU est réduite de 20 % à 25 %.
L'utilisation de la mémoire est réduite de 20 % à 25 %.
Cohérence O&M renforcée
Configuration unifiée des paramètres : les paramètres de configuration du nouveau plug-in de collecte de sortie standard sont identiques à ceux du plug-in de collecte de fichiers.
Gestion unifiée des métadonnées : la dénomination des champs de métadonnées des conteneurs et l'emplacement de stockage des tags sont uniformisés avec le scénario de collecte de fichiers, permettant ainsi au côté consommateur de ne maintenir qu'un seul ensemble de logique de traitement.
Comparaison des fonctionnalités entre les nouvelles et anciennes versions
|
Fonctionnalité |
Ancienne version |
Nouvelle version |
|
Méthode de stockage |
Les métadonnées sont intégrées au contenu du journal sous forme de champs réguliers. |
Les métadonnées sont regroupées sous le tag |
|
Efficacité du stockage |
Chaque entrée de journal contient une copie complète des métadonnées, ce qui consomme davantage d'espace de stockage. |
Plusieurs entrées de journal dans le même contexte peuvent réutiliser les métadonnées, ce qui permet de réduire les coûts de stockage. |
|
Cohérence du format |
Le format n'est pas cohérent avec celui de la collecte de fichiers de conteneur. |
La dénomination des champs et la structure de stockage sont entièrement alignées sur la collecte de fichiers de conteneur, offrant ainsi une expérience unifiée. |
|
Méthode d'accès aux requêtes |
Vous pouvez interroger les métadonnées directement par nom de champ, par exemple |
Vous devez accéder à la paire clé-valeur correspondante via |
Mappage des champs de métadonnées des conteneurs
|
Ancien nom de champ |
Nouveau nom de champ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dans la nouvelle version, tous les champs de métadonnées sont stockés dans la section des tags du journal au format __tag__:<key> au lieu d'être intégrés au contenu du journal.
Impact de la nouvelle version sur les utilisateurs
Adaptation côté consommateur : étant donné que l'emplacement de stockage passe du contenu au tag, vous devez ajuster votre logique de consommation des journaux en conséquence. Par exemple, vous devez accéder aux champs via
__tag__lors de l'exécution d'une requête.Compatibilité SQL : le langage de requête SQL est déjà automatiquement compatible avec les deux versions, vous n'avez donc pas besoin de modifier vos instructions de requête pour traiter les journaux de l'une ou l'autre version.






