Une configuration Logtail définit les politiques de collecte des journaux, telles que la source de données et le mode de collecte. Cette rubrique décrit les paramètres d'API hérités.
La CRDAliyunLogConfighéritée n'est plus maintenue. UtilisezAliyunPipelineConfigà la place. CreateLogtailPipelineConfig - Créer une configuration de pipeline Logtail .
Paramètres de base
|
Parameter |
Type |
Required |
Example |
Description |
|
configName |
string |
Yes |
config-sample |
Nom de la configuration Logtail. Il doit être unique au sein du projet et ne peut pas être modifié après sa création. Règles de nommage :
|
|
inputType |
string |
Yes |
file |
Type de source de données. Valeurs valides :
|
|
inputDetail |
JSON object |
Yes |
None |
Configuration de la source de données. Paramètres inputDetail. |
|
outputType |
string |
Yes |
LogService |
Destination de sortie. Seul LogService est pris en charge. |
|
outputDetail |
JSON object |
Yes |
None |
Configuration de la sortie des journaux. Paramètres outputDetail. |
|
logSample |
string |
No |
None |
Exemple de journal. Remarque
L'exemple de journal doit faire moins de 1 500 octets. |
Paramètres inputDetail
Paramètres de base
|
Parameter |
Type |
Required |
Example |
Description |
|
filterKey |
array |
No |
["ip"] |
Champs de filtre des journaux. Seuls les journaux correspondant aux modèles filterRegex sont collectés. Remarque
Ce paramètre concerne uniquement la collecte de journaux textuels. |
|
filterRegex |
array |
No |
["^10.*"] |
Modèles regex pour filterKey. La longueur du tableau filterRegex doit correspondre à celle de filterKey. Remarque
Ce paramètre concerne uniquement la collecte de journaux textuels. |
|
shardHashKey |
array |
No |
["__source__"] |
Mode d'écriture des données. Par défaut : équilibrage de charge.
Lorsqu'il est configuré, les données sont écrites en mode shard. Le champ __source__ est pris en charge. |
|
enableRawLog |
boolean |
No |
false |
Indique s'il faut télécharger les journaux bruts.
|
|
sensitive_keys |
array |
No |
None |
Configuration du masquage des données. Paramètres sensitive_keys. |
|
mergeType |
string |
No |
topic |
Méthode d'agrégation. Valeurs valides :
|
|
delayAlarmBytes |
int |
No |
209715200 |
Seuil d'alerte pour le retard de collecte. Par défaut : 209715200 (200 Mo). |
|
adjustTimezone |
boolean |
No |
false |
Indique s'il faut ajuster les fuseaux horaires des journaux. S'applique uniquement lorsque l'analyse temporelle est configurée (par exemple, lorsque timeFormat est défini). |
|
logTimezone |
string |
No |
GMT+08:00 |
Décalage du fuseau horaire. Format : GMT+HH:MM (est) ou GMT-HH:MM (ouest). Exemple : GMT+08:00 pour UTC+8. |
|
advanced |
JSON object |
No |
None |
Configuration des fonctionnalités avancées. Paramètres advanced. |
Paramètres sensitive_keys
-
Paramètres
Parameter
Type
Required
Example
Description
key
string
Yes
content
Nom du champ de journal.
type
string
Yes
const
Méthode de masquage des données. Valeurs valides :
-
const : Remplace le contenu sensible par la valeur du champ const.
-
md5 : Remplace le contenu sensible par son hachage MD5 correspondant.
regex_begin
string
Yes
'password':'
Préfixe regex pour localiser le contenu sensible. Utilise la syntaxe RE2.
regex_content
string
Yes
[^']*
Regex pour le contenu sensible. Utilise la syntaxe RE2.
all
boolean
Yes
true
Indique s'il faut remplacer tout le contenu sensible dans le champ.
-
true (recommandé) : Remplace tout le contenu sensible.
-
false : Remplace uniquement la première correspondance.
const
string
No
"****"
Ce paramètre est requis si vous définissez type sur const.
-
-
Exemple de configuration
Par exemple, si la valeur du champ content dans un journal est
[{'account':'1812213231432969','password':'04a23f38'}, {'account':'1812213685634','password':'123a'}], vous pouvez remplacer la valeur du champpasswordpar **** en définissant sensitive_keys comme suit.sensitive_keys = [{"all": true, "const": "********", "regex_content": "[^']*", "regex_begin": "'password':'", "type": "const", "key": "content"}] -
Exemple de journal
[{'account':'1812213231432969','password':'********'}, {'account':'1812213685634','password':'********'}]
Paramètres avancés
|
Paramètre |
Type |
Obligatoire |
Exemple |
Description |
|
enable_root_path_collection |
boolean |
Non |
false |
Indique s'il est permis de collecter des données depuis les répertoires racine Windows (par exemple, D:\log*).
Important
|
|
exactly_once_concurrency |
int |
Non |
1 |
Active l'écriture ExactlyOnce et définit le nombre d'envois concurrents par fichier (0-512). Annexe : Fonctionnalité d'écriture ExactlyOnce.
Important
|
|
enable_log_position_meta |
boolean |
Non |
true |
Indique s'il faut ajouter les métadonnées du fichier journal (champs __tag__:__inode__ et __file_offset__).
Remarque
Cette fonctionnalité est prise en charge uniquement dans Logtail 1.0.21 et versions ultérieures. |
|
specified_year |
uint |
Non |
0 |
Complète les horodatages des journaux auxquels il manque l'année. Valeurs valides :
Remarque
Cette fonctionnalité est prise en charge uniquement dans Logtail 1.0.21 et versions ultérieures. |
|
force_multiconfig |
boolean |
Non |
false |
Indique s'il est permis à cette configuration de collecter des fichiers déjà correspondants à d'autres configurations. Par défaut : false. À utiliser pour les scénarios de multi-écriture où un fichier est collecté par deux configurations vers différents Logstores. |
|
raw_log_tag |
string |
Non |
__raw__ |
Nom du champ pour stocker les journaux bruts. Par défaut : __raw__. |
|
blacklist |
object |
Non |
Aucun |
Configuration de la liste noire de collecte. Paramètres de la liste noire. |
|
tail_size_kb |
int |
Non |
1024 |
Taille de collecte initiale pour les nouveaux fichiers, déterminant la position de lecture de départ. Par défaut : 1024 Ko.
Plage : 0-10485760 Ko. |
|
batch_send_interval |
int |
Non |
3 |
Intervalle d'envoi agrégé en secondes. Par défaut : 3. |
|
max_rotate_queue_size |
int |
Non |
20 |
Longueur de la file d'attente de rotation pour un seul fichier. Par défaut : 20. |
|
enable_precise_timestamp |
boolean |
Non |
false |
Indique s'il faut extraire l'heure avec une haute précision. Par défaut : false. Lorsque cette option est activée, Logtail analyse le champ temporel en un horodatage au niveau de la milliseconde et le stocke dans le champ precise_timestamp_key. Remarque
|
|
precise_timestamp_key |
string |
Non |
"precise_timestamp" |
Champ pour stocker l'horodatage de haute précision. Par défaut : precise_timestamp. |
|
precise_timestamp_unit |
string |
Non |
"ms" |
Unité de l'horodatage de haute précision. Par défaut : ms. Valeurs valides : ms (milliseconde), us (microseconde), ns (nanoseconde). |
Le tableau suivant décrit les paramètres de blacklist.
|
Paramètre |
Type |
Obligatoire |
Exemple |
Description |
|
dir_blacklist |
array |
Non |
["/home/admin/dir1", "/home/admin/dir2*"] |
Liste noire des répertoires (chemins absolus). Prend en charge les caractères génériques astérisque (*). Par exemple, si vous configurez le chemin comme /home/admin/dir1, tout le contenu du répertoire /home/admin/dir1 est ignoré lors de la collecte. |
|
filename_blacklist |
array |
Non |
["app*.log", "password"] |
Liste noire des noms de fichiers. Les fichiers correspondants sont exclus de tous les répertoires. Prend en charge les caractères génériques astérisque (*). |
|
filepath_blacklist |
array |
Non |
["/home/admin/private*.log"] |
Liste noire des chemins de fichiers (chemins absolus). Prend en charge les caractères génériques astérisque (*). Si vous configurez le chemin comme /home/admin/private*.log, tous les fichiers du répertoire /home/admin/ qui commencent par « private » et se terminent par « .log » sont ignorés lors de la collecte. |
Configurations spécifiques aux journaux textuels
Paramètres de base
|
Parameter |
Type |
Required |
Example |
Description |
|
logType |
string |
Yes |
common_reg_log |
Mode de collecte des journaux. Valeurs valides :
|
|
logPath |
string |
Yes |
/var/log/http/ |
Chemin du répertoire des fichiers journaux. |
|
filePattern |
string |
Yes |
access*.log |
Modèle de nom de fichier journal. |
|
topicFormat |
string |
Yes |
none |
Méthode de génération des topics. Valeurs valides :
|
|
timeFormat |
string |
No |
%Y/%m/%d %H:%M:%S |
Format de l'heure du journal. Formats d'heure. |
|
preserve |
boolean |
No |
true |
Comportement en cas d'expiration du délai pour les fichiers journaux. Valeurs valides :
|
|
preserveDepth |
integer |
No |
1 |
Profondeur maximale du répertoire pour l'expiration lorsque preserve est défini sur false. Plage : 1-3. |
|
fileEncoding |
string |
No |
utf8 |
Encodage du fichier journal. Valeurs valides : utf8, gbk. |
|
discardUnmatch |
boolean |
No |
true |
Indique s'il faut ignorer les journaux qui ne correspondent pas. Valeurs valides :
|
|
maxDepth |
int |
No |
100 |
Profondeur maximale du répertoire de journaux surveillé (0-1 000). Une valeur de 0 signifie que seul le répertoire actuel est surveillé. |
|
delaySkipBytes |
int |
No |
0 |
Seuil pour l'ignorance des données retardées. Valeurs valides :
|
|
dockerFile |
boolean |
No |
false |
Indique si le fichier cible se trouve à l'intérieur d'un conteneur. Par défaut : false. |
|
dockerIncludeLabel |
JSON object |
No |
None |
Liste d'autorisation des libellés de conteneur. Vide par défaut (collecte depuis tous les conteneurs). LabelKey est obligatoire ; LabelValue est facultatif.
Remarque
|
|
dockerExcludeLabel |
JSON object |
No |
None |
Liste de blocage des libellés de conteneur. Vide par défaut (aucun conteneur exclu). LabelKey est obligatoire ; LabelValue est facultatif.
Remarque
|
|
dockerIncludeEnv |
JSON object |
No |
None |
Liste d'autorisation des variables d'environnement. Vide par défaut (collecte depuis tous les conteneurs). EnvKey est obligatoire ; EnvValue est facultatif.
Remarque
Plusieurs entrées de liste d'autorisation ont une relation OU. Un conteneur correspond si ses variables d'environnement satisfont l'une des entrées de la liste d'autorisation. |
|
dockerExcludeEnv |
JSON object |
No |
None |
Liste de blocage des variables d'environnement. Vide par défaut (aucun conteneur exclu). EnvKey est obligatoire ; EnvValue est facultatif.
Remarque
Plusieurs entrées de liste de blocage ont une relation OU. Un conteneur est exclu si ses variables d'environnement satisfont l'une des paires clé-valeur. |
Paramètres du mode regex complet et du mode simple
-
Paramètres
Parameter
Type
Required
Example
Description
key
array
Yes
["content"]
Noms des champs pour le contenu brut du journal.
logBeginRegex
string
No
.*
Expression régulière pour le début d'une entrée de journal. Une seule expression régulière est prise en charge. Pour faire correspondre plusieurs formats de début de ligne, combinez les modèles en une seule expression régulière à l'aide de l'opérateur barre verticale (
).
regex
string
No
(.*)
Expression régulière pour l'extraction des champs.
-
Exemple de configuration
{ "configName": "logConfigName", "outputType": "LogService", "inputType": "file", "inputDetail": { "logPath": "/logPath", "filePattern": "*", "logType": "common_reg_log", "topicFormat": "default", "discardUnmatch": false, "enableRawLog": true, "fileEncoding": "utf8", "maxDepth": 10, "key": [ "content" ], "logBeginRegex": ".*", "regex": "(.*)" }, "outputDetail": { "projectName": "test-project", "logstoreName": "test-logstore" } }
Paramètres du mode JSON
|
Parameter |
Type |
Required |
Example |
Description |
|
timeKey |
string |
No |
time |
Nom de la clé du champ d'heure. |
Paramètres du mode délimiteur
-
Paramètres
Parameter
Type
Required
Example
Description
separator
string
No
,
Choisissez le séparateur correspondant au format de votre journal. Collecter des journaux en mode délimiteur.
quote
string
Yes
\
Caractère de guillemet pour encapsuler les champs contenant le séparateur. Le contenu entre guillemets est analysé comme un seul champ. Collecter des journaux en mode délimiteur.
key
array
Yes
[ "ip", "time"]
Noms des champs pour le contenu brut du journal.
timeKey
string
Yes
time
Champ de la liste key à utiliser comme champ d'heure.
autoExtend
boolean
No
true
Indique s'il faut charger les données lorsque le nombre de champs divisés est inférieur au nombre de clés configurées.
Par exemple, un journal est 11|22|33|44|55, le séparateur est une barre verticale (|) et le contenu du journal est analysé en 11, 22, 33, 44 et 55. Les clés sont respectivement définies sur A, B, C, D et E.
-
true : lors de la collecte du journal 11|22|33|55, 55 est chargé dans Simple Log Service comme valeur pour la clé D.
-
false : lors de la collecte du journal 11|22|33|55, cette entrée de journal est ignorée car le nombre de champs ne correspond pas au nombre de clés.
-
-
Exemple de configuration
{ "configName": "logConfigName", "logSample": "testlog", "inputType": "file", "outputType": "LogService", "inputDetail": { "logPath": "/logPath", "filePattern": "*", "logType": "delimiter_log", "topicFormat": "default", "discardUnmatch": true, "enableRawLog": true, "fileEncoding": "utf8", "maxDepth": 999, "separator": ",", "quote": "\"", "key": [ "ip", "time" ], "autoExtend": true }, "outputDetail": { "projectName": "test-project", "logstoreName": "test-logstore" } }
Paramètres du mode plug-in
-
Paramètres
Paramètres pour la collecte de journaux via le plug-in Logtail.
Parameter
Type
Required
Example
Description
plugin
JSON object
Yes
None
Obligatoire pour la collecte de journaux basée sur les plug-ins. Utiliser les plug-ins Logtail pour collecter des données.
-
Exemple de configuration
{ "configName": "logConfigName", "outputType": "LogService", "inputType": "plugin", "inputDetail": { "plugin": { "inputs": [ { "detail": { "ExcludeEnv": null, "ExcludeLabel": null, "IncludeEnv": null, "IncludeLabel": null, "Stderr": true, "Stdout": true }, "type": "service_docker_stdout" } ] } }, "outputDetail": { "projectName": "test-project", "logstoreName": "test-logstore" } }
Paramètres outputDetail
Paramètres du projet de destination et du Logstore.
|
Parameter |
Type |
Required |
Example |
Description |
|
projectName |
string |
Yes |
my-project |
Nom du projet. Doit correspondre au projet de la requête. |
|
logstoreName |
string |
Yes |
my-logstore |
Nom du Logstore. |
Annexe : Fonctionnalité d'écriture ExactlyOnce
Lorsqu'elle est activée, Logtail enregistre des points de contrôle au niveau des fichiers sur le disque et utilise les numéros de séquence incrémentiels SLS pour éviter les écritures en double. Après des erreurs de processus ou des redémarrages, les points de contrôle déterminent l'étendue du retraitement par fichier. Cela augmente la charge d'écriture sur le disque. Limites :
Les points de contrôle sont stockés sur le disque local. Si le disque est plein ou corrompu, la récupération peut échouer.
Les points de contrôle enregistrent uniquement les métadonnées des fichiers. Si le fichier est supprimé ou modifié, la récupération peut être impossible.
-
ExactlyOnce dépend des numéros de séquence d'écriture dans SLS. Chaque shard prend en charge un maximum de 10 000 enregistrements. Si ce seuil est dépassé, les anciens enregistrements sont remplacés. Pour garantir la fiabilité, maintenez le produit
Nombre de fichiers actifs × Nombre d'instances Logtailpar Logstore en dessous de 9 500.Fichiers actifs : fichiers en cours de lecture et d'envoi. Les fichiers ayant fait l'objet d'une rotation portant le même nom logique comptent comme un seul fichier actif.
Instances Logtail : nombre de processus Logtail. Généralement un par serveur.
Par défaut, Logtail n'appelle pas sync pour les écritures de points de contrôle. Si le serveur redémarre avant que les données mises en tampon n'atteignent le disque, les points de contrôle peuvent être perdus. Pour activer les écritures synchrones, ajoutez "enable_checkpoint_sync_write": true, au fichier de configuration de démarrage de Logtail (/usr/local/ilogtail/ilogtail_config.json). Définir les paramètres de démarrage de Logtail.