Comprendre le fichier de configuration de l'agent

Le Agent de journalisation utilise un fichier de configuration basé sur Fluent Bit pour déterminer comment les données entrantes sont traitées avant d'être acheminées.

Lorsque vous configurez le fichier de configuration de l'agent, tenez compte des informations suivantes :

  • Le schéma est divisé en plusieurs sections.
  • Vous pouvez utiliser les commandes Fluent Bit pour simplifier le fichier de configuration et le rendre plus lisible.
  • Vous pouvez exposer les variables de configuration en définissant des variables d'environnement du shell ou en utilisant la commande @SET.

Sections

Le schéma d'une configuration Fluent Bit est divisé en plusieurs sections.

  • Une section est définie par un nom entre crochets.
  • Vous pouvez configurer quatre types de sections : Service, Input, Filter et Output.
  • Une section peut contenir une ou plusieurs entrées.
  • Une entrée est définie par une ligne de texte contenant une clé et une valeur. La clé doit être indentée et doit contenir une valeur qui se termine dans la ligne de séparation. Pensez à utiliser une indentation de quatre espaces.

Le diagramme suivant montre l'ordre dans lequel les sections sont appliquées :

Ordre de traitement des
de Fluent Bit* Ordre de traitement des
de Fluent Bit*

Section SERVICE

Vous pouvez configurer la section SERVICE pour définir les propriétés globales du service.

Le tableau suivant énumère quelques clés que vous pouvez définir dans une section SERVICE:

Service kyes
Clé Description Valeur par défaut
flush Définir le temps en seconds.nanoseconds pour évacuer les enregistrements qui sont ingérés par les plug-ins d'entrée à travers les plug-ins de sortie. 5
log_file Le chemin absolu pour les autres fichiers journaux. Par défaut, les journaux sont redirigés vers l'interface d'erreur standard (stderr).
log_level Définir le niveau de verbosité de la journalisation. Les valeurs valides sont : off, error, warn, info, debug et trace. Notez que les valeurs sont cumulatives. Par exemple, si debug est défini, il inclura error, warning, info et debug. info
parsers_file Chemin d'accès au fichier de configuration d'un analyseur. Plusieurs Parsers_File entrées peuvent être définies dans une section.

Pour plus d'informations sur les clés supplémentaires prises en charge, voir Propriétés de la section service.

Par exemple, un exemple de section SERVICE peut être le suivant :

[SERVICE]
      Flush                   1
      Log_Level               info
      Daemon                  off
      Parsers_File            parsers.conf
      plug-ins_File           plug-ins.conf
      HTTP_Server             On
      HTTP_Listen             0.0.0.0
      HTTP_Port               8081
      Health_Check            On
      HC_Errors_Count         1
      HC_Retry_Failure_Count  1
      HC_Period               30
      storage.path            /fluent-bit/cache
      storage.max_chunks_up   192
      storage.metrics         On

Section INPUT

Vous pouvez configurer des sections INPUT pour définir les sources à partir desquelles Fluent Bit peut collecter des données.

Le tableau suivant présente les touches que vous pouvez configurer pour une section INPUT:

Touches de saisie
Clé Description Statut
Name Nom du plug-in d'entrée. Détermine quel plug-in d'entrée doit être chargé par Fluent Bit. Obligatoire
Tag Étiquette associée à tous les enregistrements provenant de ce plug-in. Requis pour tous les plug-ins, à l'exception du plug-in input forward qui fournit des balises dynamiques.
Log_Level Définir le niveau de verbosité de la journalisation. Les valeurs valides sont : off, error, warn, info, debug et trace. Notez que les valeurs sont cumulatives. Par exemple, si debug est défini, il inclura error, warning, info et debug. Si elle n'est pas définie, la valeur est par défaut celle de la section SERVICE Log_Level. Facultatif
Path Définir l'emplacement où les enregistrements des journaux sont lus.

Pour les journaux d' Kubernetes, par défaut, l'outil d' Agent de journalisation s d' IBM Cloud Logs ne collecte les journaux que dans le répertoire /var/log/containers/*.log. Si vous souhaitez collecter les journaux de tous les sous-répertoires sous /var/log, vous devez ajouter /var/log/**/*.log au paramètre Path.

Facultatif

Pour plus d'informations sur les plug-ins INPUT, voir Les plug-ins d'entrée.

Chaque INPUT plug-in possède ses propres clés de configuration en plus de celles décrites dans le tableau.

Par exemple, un exemple de section INPUT pourrait être le suivant :

[INPUT]
    # Comment
    Name tail
    Tag  kube.*
    log_level info

Section FILTRE

Vous pouvez configurer les sections FILTER pour transformer les données liées à un plug-in FILTER avant de les envoyer à votre destination.

Le tableau suivant présente les touches que vous pouvez configurer pour une section FILTER:

Les clés de filtrage
Clé Description Statut
Name Nom du plug-in de filtrage. Détermine quel plug-in de filtre doit être chargé par Fluent Bit. Obligatoire
Match Modèle utilisé pour comparer les balises définies dans les enregistrements entrants. Match est sensible à la casse. Vous pouvez utiliser le caractère astérisque * comme joker. Obligatoire [*]
Match_Regex Expression régulière utilisée pour comparer les balises définies dans les enregistrements entrants. Cette option permet d'utiliser la syntaxe complète des expressions rationnelles. Obligatoire [*]
Log_Level Définir le niveau de verbosité de la journalisation. Les valeurs valides sont : off, error, warn, info, debug et trace. Notez que les valeurs sont cumulatives. Par exemple, si debug est défini, il inclura error, warning, info et debug. Si elle n'est pas définie, la valeur est par défaut celle de la section SERVICE Log_Level. Facultatif

[*] Vous pouvez configurer la touche Match, la touche Match_Regex ou les deux. Vous devez toujours en configurer un. Si vous configurez les deux, Match_Regex est prioritaire.

Par exemple, un exemple de section FILTRE peut être le suivant :

[FILTER]
    Name  kubernetes
    Match kube.*
    log_level info

section Sortie

Vous pouvez configurer des sections OUTPUT pour définir les destinations où Fluent Bit doit envoyer les données après une correspondance de Tag.

Fluent Bit peut acheminer jusqu'à 256 OUTPUT plug-ins.

Le tableau suivant présente les touches que vous pouvez configurer pour une section OUTPUT :

Touches de sortie
Clé Description Statut
Name Nom du plug-in de sortie. Détermine quel plug-in de sortie doit être chargé par Fluent Bit. Obligatoire
Match Modèle utilisé pour comparer les balises définies dans les enregistrements entrants. Match est sensible à la casse. Vous pouvez utiliser le caractère astérisque * comme joker. Obligatoire [*]
Match_Regex Expression régulière utilisée pour comparer les balises définies dans les enregistrements entrants. Cette option permet d'utiliser la syntaxe complète des expressions rationnelles. Obligatoire [*]
Log_Level Définir le niveau de verbosité de la journalisation. Les valeurs valides sont : off, error, warn, info, debug et trace. Notez que les valeurs sont cumulatives. Par exemple, si debug est défini, il inclura error, warning, info et debug. Si elle n'est pas définie, la valeur est par défaut celle de la section SERVICE Log_Level. Facultatif

[*] Vous pouvez configurer la touche Match, la touche Match_Regex ou les deux. Vous devez toujours en configurer un. Si vous configurez les deux, Match_Regex est prioritaire.

Par exemple, la section OUTPUT du logger-icl-output-plugin est similaire à ce qui suit :

    [OUTPUT]
        Name logger-icl-output-plugin
        Id icl-output-plugin
        Match *
        Retry_Limit 8

        # Connection
        Target_Host REPLACE_INGESTER_HOST
        Target_Port REPLACE_INGESTER_PORT
        Target_Path /logs/v1/singles

        # Authentication
        Authentication_Mode REPLACE_IAM_AUTH_MODE
        IAM_Environment REPLACE_IAM_ENVIRONMENT
        REPLACE_TRUSTED_PROFILE_ID
        CR_Token_Mount_Path /var/run/secrets/tokens/vault-token

        # Logging
        Logging_Level info

        # Buffer storage
        storage.total_limit_size 5G

Le logger-icl-output-plugin utilise le contrôle de santé intégré de Fluent Bit. Le pod est considéré comme malsain lorsque le plug-in génère au moins une erreur ou lorsque les limites de tentatives sont épuisées dans une période de 30 secondes.

Variables

Dans Fluent Bit, vous pouvez utiliser des variables d'environnement pour définir la valeur d'une clé qui est définie dans le fichier de configuration de Fluent Bit.

Les variables sont sensibles à la casse.

Utilisez le format suivant pour représenter les variables :

${MY_VARIABLE}

Pour définir une variable d'environnement, vous pouvez utiliser la syntaxe bash.

Pour définir les variables d'environnement, vous pouvez choisir l'une des options suivantes :

  • Ouvrez un terminal et définissez des variables d'environnement à l'aide de la commande export.

    Par exemple, vous pouvez en définir un comme suit : $ export MY_VARIABLE=stdout.

    Lorsque Fluent Bit démarre, le lecteur de configuration recherche une variable d'environnement avec le nom MY_VARIABLE.

  • Lorsque Fluent Bit fonctionne sous systemd en utilisant les paquets officiels, définissez les variables d'environnement dans l'un des fichiers suivants : /etc/default/fluent-bit (Debian) ou /etc/sysconfig/fluent-bit (autres systèmes).

Par exemple, ouvrez un terminal et définissez la variable d'environnement : $ export MY_OUTPUT=stderr Ensuite, créez le fichier de configuration suivant :

[INPUT]
    Name              tail
    Tag               kube.*

[OUTPUT]
    Name  ${MY_OUTPUT}
    Match kube.*

La clé Name qui est définie pour être définie avec la variable d'environnement ${MY_OUTPUT} est définie à stderr.

Commandes

Vous pouvez utiliser les commandes Fluent Bit pour simplifier le fichier de configuration et le rendre plus lisible.

Le tableau suivant présente les commandes que vous pouvez utiliser :

Commandes prises en charge
Commande Description Exemple
@INCLUDE Inclure un fichier de configuration. @INCLUDE <FILE>
@SET Définir une variable de configuration. @SET KEY=VAL

commande INCLUDE

Pour éviter les longs fichiers de configuration compliqués, vous pouvez diviser le fichier de configuration principal de Fluent Bit en plusieurs fichiers en utilisant la commande @INCLUDE. La commande @INCLUDE vous permet d'inclure des fichiers externes.

Vous pouvez inclure des fichiers de configuration supplémentaires en ajoutant des entrées conformes au format suivant :

@INCLUDE <FILE>

Tenez compte des informations suivantes lorsque vous utilisez la commande @INCLUDE:

  • Vous pouvez utiliser la commande @INCLUDE au niveau supérieur gauche de la ligne de configuration.
  • Vous ne pouvez pas inclure la commande @INCLUDE à l'intérieur d'une section.
  • Vous pouvez utiliser le caractère générique (*) pour inclure plusieurs fichiers. Par exemple, vous pouvez utiliser : @INCLUDE input_*.conf.
  • Lorsque vous incluez plusieurs fichiers en utilisant le caractère générique (*), les fichiers qui correspondent au caractère générique sont inclus sans être triés. Si vous devez préserver l'ordre entre les fichiers, les fichiers doivent être explicitement inclus dans l'ordre souhaité.
  • Tous les chemins que vous définissez sont lus comme étant relatifs au fichier de configuration racine.

Par exemple :

@INCLUDE somefile.conf

commande SET

Vous pouvez utiliser la commande @SET pour injecter des variables de configuration dans la configuration de Fluent Bit.

  • Vous pouvez utiliser la commande @SET au niveau de la racine de chaque ligne.
  • Vous ne pouvez pas utiliser la commande @SET à l'intérieur d'une section.

Par exemple, vous pouvez définir les variables suivantes et les utiliser pour configurer différentes clés :

@SET my_input=abc
@SET my_output=def

[SERVICE]
    Flush 1

[INPUT]
    Name ${my_input}

[OUTPUT]
    Name ${my_output}