Un fichier de configuration de pipeline Logstash définit le flux de données au sein d'un pipeline. Chaque fichier se compose de trois sections — input, filter et output — correspondant aux trois types de plug-ins qui contrôlent respectivement la source des données, leur transformation et leur destination.
Pour en savoir plus sur le format de configuration open source de Logstash, consultez la rubrique Structure of a Config File.
Structure du fichier de configuration
Chaque section contient une ou plusieurs définitions de plug-ins :
# Use comments to describe parts of your configuration.
input {
...
}
filter {
...
}
output {
...
}
Les sections input et output sont obligatoires. La section filter est facultative ; incluez-la uniquement si vous devez transformer ou prétraiter les données avant qu'elles n'atteignent la sortie.
Ordre d'exécution des plug-ins : Si vous définissez plusieurs plug-ins de filtrage, Logstash les applique dans l'ordre d'apparition dans le fichier de configuration.
Si votre configuration inclut un paramètre tel que last_run_metadata_path, définissez ce paramètre sur un chemin d'accès dans Alibaba Cloud Logstash. Le backend fournit un chemin au format /ssd/1/<Logstash cluster ID>/logstash/data/ que vous pouvez utiliser pour vos tests. Le système ne supprime pas les données stockées dans ce chemin ; assurez-vous donc que votre disque dispose d'un espace suffisant. Après avoir spécifié un chemin, Logstash y génère automatiquement un fichier, mais vous ne pouvez pas consulter son contenu.
Si vous configurez un pipeline avec un pilote JDBC, ajoutez allowLoadLocalInfile=false&autoDeserialize=false au paramètre jdbc_connection_string pour des raisons de sécurité. En l'absence de ces paramètres, le système renvoie une erreur d'échec de vérification lors de l'ajout du fichier de configuration.
jdbc_connection_string => "jdbc:mysql://xxx.drds.aliyuncs.com:3306/<Database name>?allowLoadLocalInfile=false&autoDeserialize=false"
Pour utiliser ce fichier de configuration dans un pipeline, référencez-le depuis la page de gestion des pipelines de la console. Pour plus d'informations, consultez la rubrique Utilisation des fichiers de configuration pour gérer les pipelines.
Configuration des plug-ins
Chaque définition de plug-in se compose du nom du plug-in suivi de ses propriétés. L'exemple suivant définit deux plug-ins beats dans la section input ; chacun écoute sur un port et un hôte différents :
input {
beats {
port => 8000
host => "118.11.xx.xx"
}
beats {
port => 8001
host => "192.168.xx.xx"
}
}
Les propriétés disponibles varient selon le type de plug-in. Consultez la documentation Elastic pour obtenir la liste complète :
Types de valeurs
Les propriétés des plug-ins acceptent les types de valeurs suivants.
Tableau (Array)
L'utilisation de ce type n'est pas recommandée. Privilégiez le type String ou utilisez :list => true pour activer la vérification de type sur les listes. Les tableaux (arrays) ne s'avèrent utiles que lorsque vous devez gérer des tables de hachage ou des listes de types mixtes ne nécessitant pas de vérification de type.
users => [ {id => 1, name => bob}, {id => 2, name => jane} ]
Liste
Une liste (List) ne constitue pas un type autonome, mais un attribut de propriété. Déclarez un paramètre avec :list => true pour autoriser plusieurs valeurs tout en activant la vérification de type. Si une valeur de la liste est invalide (par exemple, une URL incorrecte), le traitement de l'événement échoue.
path => [ "/var/log/messages", "/var/log/*.log" ]
uris => [ "http://elastic.co", "http://example.net" ]
Booléen
Les valeurs booléennes doivent être true ou false, sans guillemets.
ssl_enable => true
Octet (Byte)
Une valeur Byte est une chaîne représentant un nombre d'octets. Les unités décimales (k, M, G, T, P, E, Z, Y, base 1000) et binaires (Ki, Mi, Gi, Ti, Pi, Ei, Zi, Yi, base 1024) sont prises en charge. La valeur n'est pas sensible à la casse et accepte un espace entre le nombre et l'unité. Si vous omettez l'unité, l'entier est traité comme un nombre d'octets.
my_bytes => "1113" # 1113 bytes
my_bytes => "10MiB" # 10485760 bytes
my_bytes => "100kib" # 102400 bytes
my_bytes => "180 mb" # 180000000 bytes
Codec
Un codec est un plug-in qui encode ou décode les données. Les codecs fonctionnent à la fois avec les plug-ins d'entrée et de sortie :
Un codec d'entrée décode les données avant qu'elles n'entrent dans le pipeline.
Un codec de sortie encode les données avant qu'elles ne quittent le pipeline.
L'utilisation d'un codec élimine le besoin d'un plug-in de filtrage distinct. Pour connaître les codecs disponibles, consultez la rubrique Plug-ins codec.
codec => "json"
Hachage (Hash)
Une valeur Hash est une collection de paires clé-valeur au format "field1" => "value1".
match => {
"field1" => "value1"
"field2" => "value2"
...
}
# Or as a single line. No commas between entries:
match => { "field1" => "value1" "field2" => "value2" }
Numérique
Les valeurs numériques doivent être des nombres à virgule flottante ou des entiers.
port => 33
Mot de passe
Un mot de passe (Password) est une chaîne à valeur unique qui n'est jamais journalisée ni affichée.
my_password => "password"
URI
Une URI peut aller d'une URL complète à un identifiant simple tel que foobar. Si l'URI contient un mot de passe (par exemple http://user:paas@example.net), ce dernier n'est jamais journalisé ni affiché.
my_uri => "http://foo:bar@example.net"
Chemin d'accès
Une valeur Path est une chaîne représentant un chemin d'accès valide dans le système d'exploitation.
my_path => "/tmp/logstash"
Chaîne (String)
Une valeur String est une séquence unique de caractères encadrée par des guillemets doubles (") ou simples (').
Séquences d'échappement
Les séquences d'échappement sont désactivées par défaut. Pour les activer, ajoutez la ligne suivante au fichier logstash.yml :
config.support_escapes: true
Lorsque les séquences d'échappement sont activées, les chaînes entre guillemets (simples ou doubles) prennent en charge les caractères d'échappement suivants :
| Caractère d'échappement | Description | Valeur ASCII (décimal) |
|---|---|---|
\r |
Retour chariot | 013 |
\n |
Saut de ligne | 010 |
\t |
Tabulation | 009 |
\\ |
Barre oblique inverse | 092 |
\" |
Guillemet double | 034 |
\' |
Guillemet simple | 039 |
Exemple :
name => 'It\'s a beautiful day'
Commentaires
Un commentaire commence par # et peut apparaître n'importe où sur une ligne, pas seulement au début.
# This is a full-line comment.
input { # This is an inline comment.
# ...
}