La définition des paramètres de collecte sous forme de CustomResourceDefinition (CRD) Kubernetes permet d'unifier la gestion sur tous les clusters, y compris Container Service for Kubernetes (ACK) et les clusters auto-gérés. Cette approche remplace les processus manuels incohérents et sujets aux erreurs par une automatisation versionnée via kubectl et les pipelines CI/CD. Le rechargement à chaud intégré de LoongCollector applique les modifications instantanément sans redémarrage, améliorant ainsi directement l'efficacité opérationnelle et la maintenabilité du système.
L'ancien CRD AliyunLogConfig n'est plus maintenu. Utilisez le nouveau AliyunPipelineConfig CRD à la place. Pour une comparaison entre la nouvelle version et l'ancienne, consultez Types de CRD .
Les configurations de collecte créées à l'aide d'un CRD ne peuvent être modifiées qu'en mettant à jour le CRD correspondant. Les modifications apportées dans la console Simple Log Service (SLS) ne sont pas synchronisées avec le CRD et ne prennent pas effet.
Remarques relatives à l'utilisation
-
Environnement d'exploitation :
Prend en charge ACK (éditions managées et dédiées) et les clusters Kubernetes auto-gérés.
Version Kubernetes 1.16.0 ou ultérieure prenant en charge
Mount propagation: HostToContainer.-
Moteur d'exécution de conteneur (uniquement Docker et Containerd)
-
Docker :
Nécessite des autorisations d'accès pour 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 les autres types, vous devez monter manuellement les répertoires de journaux.
Containerd : Nécessite des autorisations d'accès pour containerd.sock.
-
-
Exigences en matière de ressources : LoongCollector (Logtail) s'exécute avec la priorité élevée
system-cluster-critical. Ne le déployez pas si les ressources du cluster sont insuffisantes, car cela pourrait évincer les pods existants sur le nœud.CPU : Réservez au moins 0,1 cœur.
Mémoire : 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 et de l'étendue des éventuels blocages d'envoi. Assurez-vous que l'utilisation réelle reste inférieure à 80 % de la limite configurée.
-
Autorisations : Le compte Alibaba Cloud ou l'utilisateur RAM utilisé pour le déploiement doit disposer de l'autorisation AliyunLogFullAccess.
Pour créer des stratégies personnalisées, consultez la stratégie système AliyunCSManagedLogRolePolicy . Copiez les autorisations de cette stratégie et accordez-les à l'utilisateur ou au rôle RAM cible pour configurer des autorisations fines.
Flux de travail de configuration de la collecte
Installer LoongCollector : Déployez LoongCollector en tant que DaemonSet pour garantir qu'un conteneur de collecte s'exécute sur chaque nœud du cluster. Cela permet une collecte unifiée des journaux de tous les conteneurs sur ce nœud.
Create a logstore : Un logstore est une unité de stockage pour les données de journal. Plusieurs logstores peuvent être créés dans un projet.
-
Créer un fichier YAML de configuration de collecte : Utiliser kubectl pour se connecter au cluster. Créez le fichier de configuration de collecte selon l'une des deux méthodes suivantes :
-
Méthode 1 : Utiliser le générateur de configuration de collecte
Utilisez le générateur de configuration de collecte dans la console SLS pour saisir visuellement les paramètres et générer automatiquement un fichier YAML standard.
-
Méthode 2 : Écrire manuellement le fichier YAML
Rédigez un fichier YAML en vous basant sur les exemples et les flux de travail présentés dans cette rubrique. Commencez par une configuration minimale et ajoutez progressivement la logique de traitement et les fonctionnalités avancées.
Pour plus d'informations sur les cas d'utilisation complexes non couverts dans cette rubrique ou sur les champs nécessitant une personnalisation approfondie, consultez Paramètres AliyunPipelineConfig pour obtenir la liste complète des champs, des règles de valeur et des capacités des plug-ins.
Une configuration de collecte complète comprend généralement les parties suivantes :
Configuration minimale (obligatoire) : Construit le tunnel de données du cluster vers SLS. Elle comprend deux parties :
Entrées
(inputs): Définit la source des journaux. Les journaux de conteneur incluent les deux sources de journaux suivantes. Pour collecter d'autres types de journaux, tels que les résultats de requête MySQL, consultez Plug-ins d'entrée.Sortie standard du conteneur (stdout et stderr) : Contenu du journal imprimé par le programme du conteneur sur la console.
Fichiers journaux texte : Fichiers journaux écrits dans un chemin spécifié à l'intérieur du conteneur.
Sorties
(flushers): Définit la destination du journal. Envoie les journaux collectés vers le logstore spécifié.Si le projet ou le logstore cible n'existe pas, le système le crée automatiquement. Vous pouvez également créer manuellement un projet et un logstore à l'avance.
Configurations de traitement courantes (facultatives) : Définit le champ
processorspour effectuer une analyse structurée (telle que l'analyse par expression régulière ou par délimiteur), un masquage ou un filtrage sur les journaux bruts.Cette rubrique décrit uniquement les plug-ins de traitement natifs qui couvrent les cas d'utilisation courants de traitement des journaux. Pour plus de fonctionnalités, consultez Plug-ins de traitement étendus.
Autres configurations avancées (facultatives) : Implémente des fonctionnalités telles que la collecte de journaux multilignes et l'enrichissement des tags de journaux pour répondre à des exigences de collecte plus fines.
Exemple de structure :
apiVersion: telemetry.alibabacloud.com/v1alpha1 # Utilisez la valeur par défaut. Ne pas modifier. kind: ClusterAliyunPipelineConfig # Utilisez la valeur par défaut. Ne pas modifier. metadata: name: test-config # Définissez le nom de la ressource. Il doit être unique au sein du cluster Kubernetes. spec: project: # Définissez le nom du projet cible. name: k8s-your-project config: # Définissez la configuration de collecte Logtail. inputs: # Définissez les plug-ins d'entrée pour la configuration de collecte Logtail. ... processors: # Définissez les plug-ins de traitement pour la configuration de collecte Logtail. ... flushers: # Définissez les plug-ins de sortie pour la configuration de collecte Logtail. ... -
-
Appliquer la configuration
kubectl apply -f <your_yaml>
Installer LoongCollector (Logtail)
LoongCollector est un agent de collecte de journaux de nouvelle génération lancé par SLS. Il s'agit d'une version améliorée de Logtail. Les deux ne peuvent pas coexister. Pour installer Logtail, consultez Installer et configurer Logtail .
Cette rubrique décrit uniquement les étapes d'installation de base de LoongCollector. Pour les paramètres détaillés, consultez Installation et configuration. Si vous avez déjà installé LoongCollector ou Logtail, ignorez cette étape et passez à la création d'un logstore pour stocker les journaux collectés.
Cluster ACK
Installez LoongCollector depuis la console Container Service for Kubernetes (ACK). Par défaut, les journaux sont envoyés vers un projet SLS sous le compte Alibaba Cloud actuel.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible pour ouvrir sa page de détails.
Dans le volet de navigation de gauche, cliquez sur Add-ons.
-
Sous l'onglet Logs and Monitoring, recherchez loongcollector et cliquez sur Install.
RemarquePour un nouveau cluster, dans la section Advanced Options, sélectionnez Enable Log Service. Ensuite, Create Project ou Select Project.
Une fois l'installation terminée, SLS crée automatiquement les ressources associées dans la région où réside le cluster ACK. Connectez-vous à la console Simple Log Service pour les afficher.
Type de ressource
Nom de la ressource
Fonction
Projet
k8s-log-${cluster_id}Une unité de gestion des ressources qui isole les journaux pour différents services.
Pour créer un projet afin de gérer les ressources de journaux avec plus de flexibilité, consultez Créer un projet.
Groupe de machines
k8s-group-${cluster_id}Un ensemble de nœuds de collecte de journaux.
ImportantLoongCollector ne créera pas de logstore nommé config-operation-log. Si un logstore portant ce nom existe déjà, LoongCollector arrête d'y écrire des journaux.
Cluster auto-géré
-
Connectez-vous au cluster Kubernetes et exécutez la commande correspondante pour votre région afin de télécharger LoongCollector et ses composants dépendants :
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 parameters ===================== # The name of the project that manages the collected logs. Example: k8s-log-custom-sd89ehdq. projectName: "" # The region of the project. Example for Shanghai: 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. Optional parameters: Internet (public network) and Intranet (internal network). Default value: Internet. net: Internet # The AccessKey ID and AccessKey secret of the Alibaba Cloud account or RAM user. The account or user must have the AliyunLogFullAccess system policy. accessKeyID: "" accessKeySecret: "" # The 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 d'autres composants dépendants :bash k8s-custom-install.sh install -
Une fois l'installation terminée, vérifiez l'état d'exécution des composants.
Si le pod ne démarre pas, vérifiez si la configuration values.yaml est correcte et si les images pertinentes ont été extraites avec succès.
# Check the pod status. kubectl get po -n kube-system | grep loongcollector-dsSLS crée également automatiquement les ressources suivantes. Connectez-vous à la console Simple Log Service pour les afficher.
|
**Type de ressource**
|
**Nom de la ressource**
|
**Fonction**
| | --- | --- | --- | |
Projet
|
La valeur de `projectName` définie dans le fichier values.yaml
|
Une unité de gestion des ressources qui isole les journaux pour différents services.
| |
Groupe de machines
|
`k8s-group-${cluster_id}`
|
Un ensemble de nœuds de collecte de journaux.
|ImportantLoongCollector ne créera pas de logstore nommé config-operation-log. Si un logstore portant ce nom existe déjà, LoongCollector arrête d'y écrire des journaux.
Créer un logstore
Si vous avez déjà créé un logstore, ignorez cette étape et passez à la configuration de la collecte.
Connectez-vous à la console Simple Log Service et cliquez sur le nom du projet cible.
Dans le volet de navigation de gauche, choisissez
et cliquez sur +.-
Sur la page Créer un logstore, configurez les paramètres principaux suivants :
Logstore Name : Définissez un nom unique au sein du projet. Ce nom ne peut pas être modifié après la création.
Logstore Type : Choisissez Standard ou Requête en fonction d'une comparaison de leurs spécifications.
-
Billing Mode :
pay-by-feature : Facturé indépendamment pour chaque ressource, telle que le stockage, l'indexation et les opérations de lecture/écriture. Adapté aux cas d'utilisation à petite échelle ou lorsque l'utilisation des fonctionnalités est incertaine.
pay-by-ingested-data: Facturé uniquement en fonction du volume de données brutes ingérées. Offre une période de stockage gratuite de 30 jours et des fonctionnalités gratuites telles que la transformation et la diffusion des données. Le modèle de coût est simple et convient aux cas d'utilisation où la période de stockage est proche de 30 jours ou où le pipeline de traitement des données est complexe.
Data Retention Period : Définissez le nombre de jours de conservation des journaux. La valeur varie de 1 à 3 650 jours. Une valeur de 3 650 indique un stockage permanent. La valeur par défaut est de 30 jours.
Conservez les paramètres par défaut pour les autres configurations et cliquez sur OK. Pour plus d'informations sur les autres configurations, consultez Gérer les logstores.
Configuration minimale
Dans spec.config, vous configurez les plug-ins d'entrée (inputs) et de sortie (flushers) pour définir le chemin principal de collecte des journaux : la source des journaux et leur destination.
Sortie standard du conteneur - nouvelle version
Objectif : Collecte les journaux de sortie standard du conteneur (stdout/stderr) imprimés directement sur la console.
Point de départ de la configuration de collecte. Définit la source du journal. Actuellement, un seul plug-in d'entrée peut être configuré.
| Exemple |
Configurez le plug-in
|
Collecter les fichiers texte du conteneur
Objectif : Collecte les journaux écrits dans un chemin de fichier spécifique au sein d'un conteneur, tels que les fichiers access.log ou app.log traditionnels.
Point de départ de la configuration de collecte. Définit la source du journal. Actuellement, un seul plug-in d'entrée peut être configuré.
| Exemple |
Configurez le plug-in
|
Configurations de traitement courantes
Après avoir terminé la configuration minimale, ajoutez des plug-ins de traitement pour effectuer une analyse structurée, un masquage ou un filtrage sur les journaux bruts.
Configuration principale : Ajoutez processors à spec.config pour configurer les plug-ins de traitement. Plusieurs plug-ins peuvent être ajoutés simultanément.
Cette rubrique décrit uniquement les plug-ins de traitement natifs qui couvrent les cas d'utilisation courants de traitement des journaux. Pour plus d'informations sur d'autres fonctionnalités, consultez Plug-ins de traitement étendus .
Pour les versions Logtail 2.0 et ultérieures et le composant LoongCollector, nous vous recommandons de suivre ces règles de combinaison de plug-ins :
Utilisez d'abord les plug-ins natifs.
Si les plug-ins natifs ne répondent pas à vos besoins, configurez les plug-ins d'extension après les plug-ins natifs.
Les plug-ins natifs ne peuvent être utilisés qu'avant les plug-ins d'extension.
Configuration structurée
Analyse par expression régulière
Extrait les champs de journal à l'aide d'une expression régulière et analyse le journal en paires clé-valeur.
Champs clés | Exemple |
Type Le type de plug-in. Définissez sur | |
SourceKey Le nom du champ source. | |
Regex L'expression régulière pour faire correspondre le journal. | |
Keys Une liste des champs extraits. | |
KeepingSourceWhenParseFail Indique s'il faut conserver le champ source en cas d'échec de l'analyse. Valeur par défaut : | |
KeepingSourceWhenParseSucceed Indique s'il faut conserver le champ source en cas de réussite de l'analyse. Valeur par défaut : | |
RenamedSourceKey Si le champ source est conservé, il s'agit du nom de champ utilisé pour stocker le champ source. Par défaut, le nom n'est pas modifié. |
Analyse par délimiteur
Structure le contenu du journal à l'aide d'un délimiteur, en l'analysant en plusieurs paires clé-valeur. Prend en charge les délimiteurs à caractère unique et à caractères multiples.
Champs clés | Exemple |
Type Le type de plug-in. Définissez sur | |
SourceKey Le nom du champ source. | |
Separator Le séparateur de champ. Par exemple, CSV utilise une virgule (,). | |
Keys Une liste des champs extraits. | |
Quote Le caractère de guillemet utilisé pour encapsuler le contenu du champ contenant des caractères spéciaux, tels que des virgules. | |
AllowingShortenedFields Indique s'il faut autoriser le nombre de champs extraits à être inférieur au nombre de clés. Valeur par défaut : | |
OverflowedFieldsTreatment Spécifie le comportement lorsque le nombre de champs extraits est supérieur au nombre de clés. Valeur par défaut :
| |
KeepingSourceWhenParseFail Indique s'il faut conserver le champ source en cas d'échec de l'analyse. Valeur par défaut : | |
KeepingSourceWhenParseSucceed Indique s'il faut conserver le champ source en cas de réussite de l'analyse. Valeur par défaut : | |
RenamedSourceKey Si le champ source est conservé, il s'agit du nom de champ utilisé pour stocker le champ source. Par défaut, le nom n'est pas modifié. |
Analyse JSON standard
Structure les journaux JSON de type objet, en les analysant en paires clé-valeur.
Champs clés | Exemple |
Type Le type de plug-in. Définissez sur | |
SourceKey Le nom du champ source. | |
KeepingSourceWhenParseFail Indique s'il faut conserver le champ source en cas d'échec de l'analyse. Valeur par défaut : | |
KeepingSourceWhenParseSucceed Indique s'il faut conserver le champ source en cas de réussite de l'analyse. Valeur par défaut : | |
RenamedSourceKey Si le champ source est conservé, il s'agit du nom de champ utilisé pour stocker le champ source. Par défaut, le nom n'est pas modifié. |
Analyse JSON imbriquée
Analyse les journaux JSON imbriqués en paires clé-valeur en spécifiant une profondeur d'expansion.
Champs clés | Exemple |
Type Le type de plug-in. Définissez sur | |
SourceKey Le nom du champ source. | |
ExpandDepth La profondeur d'expansion JSON. Valeur par défaut : 0.
| |
ExpandConnector Le connecteur pour les noms de champs lors de l'expansion JSON. Valeur par défaut : underscore (_). | |
Prefix Spécifie un préfixe pour les noms de champs JSON développés. | |
IgnoreFirstConnector Indique s'il faut ignorer le premier connecteur, c'est-à-dire s'il faut ajouter un connecteur avant le champ de niveau supérieur. Valeur par défaut : | |
ExpandArray Indique s'il faut développer les types de tableau. Valeur par défaut :
Remarque Ce paramètre est pris en charge dans les versions Logtail 1.8.0 et ultérieures. | |
KeepSource Indique s'il faut conserver le champ brut dans le journal analysé. Valeur par défaut :
| |
NoKeyError Indique si le système signale une erreur si le champ brut spécifié n'est pas trouvé dans le journal brut. Valeur par défaut :
| |
UseSourceKeyAsPrefix Indique s'il faut utiliser le nom du champ brut comme préfixe pour tous les noms de champs JSON développés. | |
KeepSourceIfParseError Indique s'il faut conserver le journal brut si l'analyse échoue. Valeur par défaut :
|
Analyse de tableau JSON
Utilise la fonction json_extract pour extraire des objets JSON d'un tableau JSON. Pour plus d'informations sur les fonctions JSON, consultez Fonctions JSON.
Champs clés | Exemple |
Type Le type de plug-in. Le type de plug-in SPL est | |
Script Le contenu du script SPL, utilisé pour extraire des éléments d'un tableau JSON dans le champ content. | |
TimeoutMilliSeconds La période de délai d'expiration du script. Plage de valeurs : 0 à 10 000. Unité : millisecondes. Valeur par défaut : 1 000. |
Analyse des journaux NGINX
Structure le contenu du journal en fonction de la définition dans log_format, en l'analysant en plusieurs paires clé-valeur. Si le contenu par défaut ne répond pas à vos besoins, utilisez un format personnalisé.
Champs clés | Exemple |
Type Le type de plug-in. Le type de plug-in pour l'analyse des journaux Nginx est | |
SourceKey Le nom du champ source. | |
Regex L'expression régulière. | |
Keys Une liste des champs extraits. | |
Extra
| |
KeepingSourceWhenParseFail Indique s'il faut conserver le champ source en cas d'échec de l'analyse. Valeur par défaut : | |
KeepingSourceWhenParseSucceed Indique s'il faut conserver le champ source en cas de réussite de l'analyse. Valeur par défaut : | |
RenamedSourceKey Si le champ source est conservé, il s'agit du nom de champ utilisé pour stocker le champ source. Par défaut, le nom n'est pas modifié. |
Analyse des journaux Apache
Structure le contenu du journal en fonction de la définition dans le fichier de configuration des journaux Apache, en l'analysant en plusieurs paires clé-valeur.
Champs clés | Exemple |
Type Le type de plug-in. Définissez sur | |
SourceKey Le nom du champ source. | |
Regex L'expression régulière. | |
Keys Une liste des champs extraits. | |
Extra
| |
KeepingSourceWhenParseFail Indique s'il faut conserver le champ source en cas d'échec de l'analyse. Valeur par défaut : | |
KeepingSourceWhenParseSucceed Indique s'il faut conserver le champ source en cas de réussite de l'analyse. Valeur par défaut : | |
RenamedSourceKey Si le champ source est conservé, il s'agit du nom de champ utilisé pour stocker le champ source. Par défaut, le nom n'est pas modifié. |
Masquage des données
Utilisez le plug-in processor_desensitize_native pour masquer les données sensibles dans les journaux.
Champs clés | Exemple |
Type Le type de plug-in. Définissez sur | |
SourceKey Le nom du champ source. | |
Method La méthode de masquage. Les valeurs prises en charge sont :
| |
ReplacingString La chaîne constante utilisée pour remplacer le contenu sensible. Ceci est requis lorsque | |
ContentPatternBeforeReplacedString L'expression régulière pour le préfixe du contenu sensible. | |
ReplacedContentPattern L'expression régulière pour le contenu sensible. | |
ReplacingAll Indique s'il faut conserver le champ d'origine après une analyse réussie. La valeur par défaut est |
Filtrage du contenu
Configurez le plug-in processor_filter_regex_native pour faire correspondre les valeurs des champs de journal en fonction d'une expression régulière et ne conserver que les journaux qui répondent aux conditions.
Champs clés | Exemple |
Type Le type de plug-in. Définissez sur | |
FilterRegex L'expression régulière pour faire correspondre le champ de journal. | |
FilterKey Le nom du champ de journal à faire correspondre. |
Analyse temporelle
Configurez le plug-in processor_parse_timestamp_native pour analyser le champ temporel dans un journal et définir le résultat de l'analyse comme champ __time__ du journal.
Champs clés | Exemple |
Type Le type de plug-in. Définissez sur | |
SourceKey Le nom du champ source. | |
SourceFormat Format temporel. Doit correspondre exactement au format du champ temporel dans le journal. | |
SourceTimezone Le fuseau horaire de l'heure du journal. Par défaut, le fuseau horaire de la machine est utilisé, c'est-à-dire le fuseau horaire de l'environnement où le processus LoongCollector est situé. Format :
|
Autres configurations avancées
Pour des cas d'utilisation plus avancés, envisagez les configurations suivantes :
Configurer la collecte de journaux multilignes : Lorsqu'une entrée de journal unique, telle qu'une trace de pile d'exception, s'étend sur plusieurs lignes, vous devez activer le mode multiligne et configurer une expression régulière pour le début d'une ligne afin de faire correspondre le début d'un journal. Cela garantit que l'entrée multiligne est collectée et stockée en tant que journal unique dans un logstore SLS.
Configurer les types de sujet de journal : Définissez différents sujets pour différents flux de journaux afin d'organiser et de catégoriser les données de journal. Cela vous aide à mieux gérer et récupérer les journaux pertinents.
Spécifier les conteneurs pour la collecte (filtrage et listes noires) : Spécifiez des conteneurs et des chemins spécifiques pour la collecte, y compris les configurations de liste blanche et de liste noire.
Enrichir les tags de journal : Ajoutez des métadonnées liées aux variables d'environnement et aux labels de pod aux journaux en tant que champs étendus.
Configurer la collecte de journaux multilignes
Pour analyser correctement les entrées de journal qui s'étendent sur plusieurs lignes (comme les traces de pile Java), activez le mode multiligne. Cela garantit que les lignes connexes sont regroupées en une seule entrée de journal en fonction d'un motif de début défini.
Configuration principale : Dans la configuration spec.config.inputs, ajoutez le paramètre Multiline.
Champs clés | Exemple |
Multiline Active la collecte de journaux multilignes.
| |
Configurer les types de sujet de journal
Configuration principale : Dans spec.config, ajoutez le paramètre global pour définir le sujet.
Champs clés | Exemple |
TopicType Le type de sujet. Valeurs optionnelles :
| Sujet de groupe de machinesExtraction du chemin de fichierPersonnalisé |
TopicFormat Le format du sujet. Ceci est requis lorsque TopicType est défini sur filepath ou custom. |
Spécifier les conteneurs pour la collecte (filtrage et listes noires)
Filtrage
Collecte les journaux uniquement des conteneurs qui répondent aux conditions spécifiées. Plusieurs conditions sont combinées avec un ET logique. Une condition vide est ignorée. Les conditions prennent en charge les expressions régulières.
Configuration principale : Dans spec.config.inputs, configurez le paramètre ContainerFilters pour le filtrage des conteneurs.
Champs clés | Exemple |
ContainerFilters Filtrage des conteneurs
Toutes les expressions régulières sont basées sur le moteur regex RE2 dans Go, qui présente certaines limitations par rapport à des moteurs comme PCRE. Reportez-vous à Annexe : Limites des expressions régulières pour le filtrage des conteneurs pour la rédaction d'expressions régulières. | |
Liste noire
Pour exclure les fichiers qui répondent à des conditions spécifiées, utilisez les paramètres suivants sous config.inputs dans le fichier YAML selon vos besoins :
Détails des champs clés | Exemple |
ExcludeFilePaths Liste noire des chemins de fichier. Exclut les fichiers qui répondent aux conditions spécifiées. Le chemin doit être un chemin absolu et prend en charge le caractère générique *. | |
ExcludeFiles Liste noire des noms de fichier. Exclut les fichiers qui répondent aux conditions spécifiées. Prend en charge le caractère générique *. | |
ExcludeDirs Liste noire des répertoires. Exclut les fichiers qui répondent aux conditions spécifiées. Le chemin doit être un chemin absolu et prend en charge le caractère générique *. |
Enrichir les tags de journal
Configuration principale : En configurant ExternalEnvTag et ExternalK8sLabelTag dans spec.config.inputs, ajoutez des tags liés aux variables d'environnement du conteneur et aux labels de Pod aux journaux.
Champs clés | Exemple |
ExternalEnvTag Mappe la valeur d'une variable d'environnement spécifiée à un champ de tag. Format : | |
ExternalK8sLabelTag Mappe la valeur d'un label de pod Kubernetes à un champ de tag. Format : |
Exemples de configuration
Collecter et analyser les journaux d'accès NGINX en champs structurés
Analyse les journaux NGINX et structure le contenu du journal en plusieurs paires clé-valeur en fonction de la définition dans log_format.
Collecter et traiter les journaux multilignes
Activez le mode multiligne pour garantir que les lignes connexes sont regroupées en une seule entrée de journal en fonction d'un motif de début défini. Voici un exemple :
FAQ
Comment envoyer les journaux d'un cluster ACK vers un projet dans un autre compte Alibaba Cloud ?
Installez manuellement LoongCollector (Logtail) dans le cluster ACK et configurez-le avec l'ID du compte Alibaba Cloud cible ou l'AccessKey. Cela permet d'envoyer les journaux de conteneur vers un projet SLS dans un autre compte Alibaba Cloud.
Cas d'utilisation : Collectez les données de journal d'un cluster ACK vers un projet SLS dans un autre compte Alibaba Cloud pour des raisons telles que la structure organisationnelle, l'isolation des autorisations ou la surveillance unifiée. Installez manuellement LoongCollector (Logtail) pour la configuration inter-comptes.
Procédure : La procédure suivante utilise l'installation manuelle de LoongCollector comme exemple. Pour savoir comment installer Logtail, consultez Installer et configurer Logtail.
-
Connectez-vous au cluster Kubernetes et exécutez la commande correspondante pour votre région afin de télécharger LoongCollector et ses composants dépendants :
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 parameters ===================== # The name of the project that manages the collected logs. Example: k8s-log-custom-sd89ehdq. projectName: "" # The region of the project. Example for Shanghai: 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. Optional parameters: Internet (public network) and Intranet (internal network). Default value: Internet. net: Internet # The AccessKey ID and AccessKey secret of the Alibaba Cloud account or RAM user. The account or user must have the AliyunLogFullAccess system policy. accessKeyID: "" accessKeySecret: "" # The 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 d'autres composants dépendants :bash k8s-custom-install.sh install -
Une fois l'installation terminée, vérifiez l'état d'exécution des composants.
Si le pod ne démarre pas, vérifiez si la configuration values.yaml est correcte et si les images pertinentes ont été extraites avec succès.
# Check the pod status. kubectl get po -n kube-system | grep loongcollector-dsSLS crée également automatiquement les ressources suivantes. Connectez-vous à la console Simple Log Service pour les afficher.
|
**Type de ressource**
|
**Nom de la ressource**
|
**Fonction**
| | --- | --- | --- | |
Projet
|
La valeur de `projectName` définie dans le fichier values.yaml
|
Une unité de gestion des ressources qui isole les journaux pour différents services.
| |
Groupe de machines
|
`k8s-group-${cluster_id}`
|
Un ensemble de nœuds de collecte de journaux.
|ImportantLoongCollector ne créera pas de logstore nommé config-operation-log. Si un logstore portant ce nom existe déjà, LoongCollector arrête d'y écrire des journaux.
Comment le même fichier journal ou la même sortie standard de conteneur peut-il être collecté par plusieurs configurations de collecte en même temps ?
Par défaut, chaque source de journal n'est collectée qu'une seule fois pour éviter la duplication des données. Pour permettre à plusieurs configurations de collecter à partir de la même source, activez l'option correspondante dans les paramètres de configuration Logtail :
Connectez-vous à la console Simple Log Service et accédez au projet cible.
Dans le volet de navigation, choisissez
Logstores et trouvez le logstore cible.Cliquez sur l'icône
devant son nom pour développer le logstore.Cliquez sur Logtail Configurations. Dans la liste des configurations, trouvez la configuration Logtail cible et cliquez sur Manage Logtail Configuration dans la colonne Actions.
-
Sur la page Configurations Logtail, cliquez sur Edit et faites défiler vers le bas jusqu'à la section Input Configurations :
Pour collecter les journaux de fichiers texte : Activez Allow File to Be Collected for Multiple Times.
Pour collecter la sortie standard du conteneur : Activez Allow Collection by Different Logtail Configurations.
Annexe : Limites des expressions régulières pour le filtrage des conteneurs
Les expressions régulières pour le filtrage des conteneurs sont basées sur le moteur Go RE2. Ce moteur présente certaines limitations syntaxiques par rapport à d'autres moteurs, tels que PCRE. Tenez compte des limitations suivantes lors de la rédaction d'expressions régulières :
1. Différences dans la syntaxe des groupes nommés
Go utilise la syntaxe (?P<name>...) pour les groupes nommés. Il ne prend pas en charge la syntaxe (?<name>...) utilisée dans PCRE.
Exemple correct :
(?P<year>\d{4})Syntaxe incorrecte :
(?<year>\d{4})
2. Fonctionnalités d'expression régulière non prises en charge
Les fonctionnalités d'expression régulière courantes mais complexes suivantes ne sont pas disponibles dans RE2 :
Assertions :
(?=...),(?!...),(?<=...),(?<!...)Expressions conditionnelles :
(?(condition)true|false)Correspondance récursive :
(?R),(?0)Références de sous-programmes :
(?&name),(?P>name)Groupes atomiques :
(?>...)
3. Recommandations
Lors du débogage d'expressions régulières avec un outil tel que Regex101, sélectionnez le mode Golang (RE2) pour assurer la compatibilité. Si vous utilisez une syntaxe non prise en charge, le plug-in ne pourra pas analyser ou faire correspondre correctement l'expression.