Conoscere il file di configurazione dell'agente

L'Agent di registrazione utilizza un file di configurazione basato su Fluent Bit per determinare come vengono elaborati i dati in arrivo prima di essere instradati.

Quando si configura il file di configurazione dell'agente, tenere conto delle seguenti informazioni:

  • Lo schema è suddiviso in più sezioni.
  • È possibile utilizzare i comandi di Fluent Bit per semplificare il file di configurazione e renderlo più leggibile.
  • È possibile esporre le variabili di configurazione impostando le variabili d'ambiente della shell o utilizzando il comando @SET.

Sezioni

Lo schema di una configurazione di Fluent Bit è suddiviso in più sezioni.

  • Una sezione è definita da un nome all'interno di parentesi.
  • È possibile configurare quattro tipi di sezioni: Service, Input, Filter e Output.
  • Una sezione può contenere 1 o più voci.
  • Una voce è definita da una riga di testo che contiene una chiave e un valore. La chiave deve essere rientrata e deve contenere un valore che termina con la linea di interruzione. Considerate di utilizzare un rientro di quattro spazi.

Il diagramma seguente mostra l'ordine di applicazione delle sezioni:

Fluent Bit ordine di elaborazione delle
Bit ordine di elaborazione delle

Sezione SERVIZIO

È possibile configurare la sezione SERVICE per definire le proprietà globali del servizio.

La tabella seguente elenca alcune chiavi che si possono definire in una sezione SERVICE:

Servizio kyes
Chiave Descrizione Valore predefinito
flush Imposta il tempo in seconds.nanoseconds per il lavaggio dei record ingeriti dai plug-in di input attraverso i plug-in di output. 5
log_file Il percorso assoluto per gli altri file di log. Per impostazione predefinita, i registri vengono reindirizzati all'interfaccia di errore standard (stderr).
log_level Imposta il livello di verbosità del log. I valori validi sono: off, error, warn, info, debug e trace. Si noti che i valori sono cumulativi. Ad esempio, se viene impostato debug, verranno inclusi error, warning, info e debug. info
parsers_file Percorso del file di configurazione di un parser. All'interno di una sezione è possibile definire più voci Parsers_File.

Per ulteriori informazioni sulle chiavi aggiuntive supportate, vedere Proprietà della sezione del servizio.

Ad esempio, un esempio di sezione SERVICE può essere il seguente:

[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

Sezione INPUT

È possibile configurare le sezioni INPUT per definire le fonti da cui Fluent Bit può raccogliere i dati.

La tabella seguente illustra i tasti che è possibile configurare per una sezione INPUT:

Tasti di ingresso
Chiave Descrizione Condizione
Name Nome del plug-in di ingresso. Determina quale plug-in di input deve essere caricato da Fluent Bit. Obbligatorio
Tag Tag associato a tutti i record provenienti da questo plug-in. Richiesto per tutti i plug-in, ad eccezione del plug-in input forward che fornisce tag dinamici.
Log_Level Imposta il livello di verbosità del log. I valori validi sono: off, error, warn, info, debug e trace. Si noti che i valori sono cumulativi. Ad esempio, se viene impostato debug, verranno inclusi error, warning, info e debug. Se non è impostato, il valore è quello predefinito della sezione SERVICE Log_Level. Facoltativo
Path Imposta la posizione in cui vengono letti i registri.

Per i log di Kubernetes, per impostazione predefinita l'applicazione IBM Cloud Logs Agent di registrazione raccoglie i log solo dalla directory /var/log/containers/*.log. Se si desidera raccogliere i log da tutte le sottodirectory sotto /var/log, è necessario aggiungere /var/log/**/*.log al parametro Path.

Facoltativo

Per ulteriori informazioni sui plug-in INPUT, vedere Play-in di ingresso.

Ogni INPUT plug-in ha le proprie chiavi di configurazione, oltre a quelle indicate nella tabella.

Ad esempio, un esempio di sezione INPUT potrebbe essere il seguente:

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

Sezione FILTRO

È possibile configurare le sezioni FILTER per trasformare i dati relativi a un plug-in FILTER prima di inviarli alla destinazione.

La tabella seguente illustra i tasti che è possibile configurare per una sezione FILTER:

Chiavi del filtro
Chiave Descrizione Condizione
Name Nome del plug-in del filtro. Determina quale plug-in di filtro deve essere caricato da Fluent Bit. Obbligatorio
Match Uno schema utilizzato per confrontare i tag definiti nei record in arrivo. Match è sensibile alle maiuscole e alle minuscole. È possibile utilizzare il carattere asterisco * come carattere jolly. Obbligatorio [*]
Match_Regex Un'espressione regolare utilizzata per confrontare i tag definiti nei record in arrivo. Usare questa opzione per utilizzare la sintassi completa della regex. Obbligatorio [*]
Log_Level Imposta il livello di verbosità del log. I valori validi sono: off, error, warn, info, debug e trace. Si noti che i valori sono cumulativi. Ad esempio, se viene impostato debug, verranno inclusi error, warning, info e debug. Se non è impostato, il valore è quello predefinito della sezione SERVICE Log_Level. Facoltativo

[*] È possibile configurare il tasto Match, il tasto Match_Regex o entrambi. È necessario configurarne sempre uno. Se si configurano entrambi, Match_Regex ha la precedenza.

Ad esempio, un esempio di sezione FILTRO può essere il seguente:

[FILTER]
    Name  kubernetes
    Match kube.*
    log_level info

Sezione di uscita

È possibile configurare le sezioni OUTPUT per definire le destinazioni in cui Fluent Bit deve inviare i dati dopo una corrispondenza di tag.

Fluent Bit può indirizzare fino a 256 OUTPUT plug-in.

La tabella seguente illustra i tasti che è possibile configurare per una sezione OUTPUT:

Chiavi di uscita
Chiave Descrizione Condizione
Name Nome del plug-in di uscita. Determina quale plug-in di uscita deve essere caricato da Fluent Bit. Obbligatorio
Match Uno schema utilizzato per confrontare i tag definiti nei record in arrivo. Match è sensibile alle maiuscole e alle minuscole. È possibile utilizzare il carattere asterisco * come carattere jolly. Obbligatorio [*]
Match_Regex Un'espressione regolare utilizzata per confrontare i tag definiti nei record in arrivo. Usare questa opzione per utilizzare la sintassi completa della regex. Obbligatorio [*]
Log_Level Imposta il livello di verbosità del log. I valori validi sono: off, error, warn, info, debug e trace. Si noti che i valori sono cumulativi. Ad esempio, se viene impostato debug, verranno inclusi error, warning, info e debug. Se non è impostato, il valore è quello predefinito della sezione SERVICE Log_Level. Facoltativo

[*] È possibile configurare il tasto Match, il tasto Match_Regex o entrambi. È necessario configurarne sempre uno. Se si configurano entrambi, Match_Regex ha la precedenza.

Ad esempio, la sezione OUTPUT del file logger-icl-output-plugin è simile alla seguente:

    [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

Il logger-icl-output-plugin utilizza il controllo di salute incorporato in Fluent Bit. Il pod è considerato non sano quando il plug-in lancia almeno un errore o quando i limiti di riprova sono esauriti in un periodo di 30 secondi.

Variabili

In Fluent Bit, è possibile utilizzare le variabili d'ambiente per impostare il valore di una chiave definita nel file di configurazione di Fluent Bit.

Le variabili sono sensibili alle maiuscole e alle minuscole.

Utilizzare il seguente formato per rappresentare le variabili:

${MY_VARIABLE}

Per definire una variabile d'ambiente, si può usare la sintassi di bash.

Per definire le variabili d'ambiente, è possibile scegliere una delle seguenti opzioni:

  • Aprite un terminale e impostate le variabili d'ambiente usando il comando export.

    Ad esempio, è possibile definirne uno come segue: $ export MY_VARIABLE=stdout.

    All'avvio di Fluent Bit, il lettore di configurazione cerca una variabile d'ambiente con il nome MY_VARIABLE.

  • Quando Fluent Bit viene eseguito sotto systemd utilizzando i pacchetti ufficiali, impostare le variabili d'ambiente in uno dei seguenti file: /etc/default/fluent-bit (sistema basato su Debian) o /etc/sysconfig/fluent-bit (altri sistemi).

Ad esempio, aprire un terminale e impostare la variabile d'ambiente: $ export MY_OUTPUT=stderr Quindi, creare il seguente file di configurazione:

[INPUT]
    Name              tail
    Tag               kube.*

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

La chiave Name, definita per essere impostata con la variabile d'ambiente ${MY_OUTPUT}, viene impostata su stderr.

Comandi

È possibile utilizzare i comandi di Fluent Bit per semplificare il file di configurazione e renderlo più leggibile.

La tabella seguente illustra i comandi utilizzabili:

Comandi supportati
Comando Descrizione Esempio
@INCLUDE Includere un file di configurazione. @INCLUDE <FILE>
@SET Impostare una variabile di configurazione. @SET KEY=VAL

INCLUDE comando

Per evitare file di configurazione lunghi e complicati, è possibile dividere il file di configurazione principale di Fluent Bit in più file utilizzando il comando @INCLUDE. Il comando @INCLUDE consente di includere file esterni.

È possibile includere altri file di configurazione aggiungendo voci conformi al seguente formato:

@INCLUDE <FILE>

Considerate le seguenti informazioni quando utilizzate il comando @INCLUDE:

  • È possibile utilizzare il comando @INCLUDE al livello superiore sinistro della riga di configurazione.
  • Non è possibile includere il comando @INCLUDE all'interno di una sezione.
  • È possibile utilizzare il carattere jolly (*) per includere più file. Ad esempio, è possibile utilizzare: @INCLUDE input_*.conf.
  • Quando si includono più file utilizzando il carattere jolly (*), i file che corrispondono al carattere jolly vengono inclusi senza essere ordinati. Se è necessario mantenere l'ordine tra i file, i file devono essere inclusi esplicitamente nell'ordine desiderato.
  • Tutti i percorsi definiti vengono letti come relativi dal file di configurazione principale.

Ad esempio,

@INCLUDE somefile.conf

SET comando

È possibile utilizzare il comando @SET per iniettare variabili di configurazione nella configurazione di Fluent Bit.

  • È possibile utilizzare il comando @SET a livello di radice di ogni riga.
  • Non è possibile utilizzare il comando @SET all'interno di una sezione.

Ad esempio, è possibile impostare le seguenti variabili e utilizzarle per configurare diverse chiavi:

@SET my_input=abc
@SET my_output=def

[SERVICE]
    Flush 1

[INPUT]
    Name ${my_input}

[OUTPUT]
    Name ${my_output}