Verstehen der Agentenkonfigurationsdatei
Der Protokollierungsagent verwendet eine Fluent Bit-basierte Konfigurationsdatei, um zu bestimmen, wie eingehende Daten verarbeitet werden, bevor sie weitergeleitet werden.
Wenn Sie die Konfigurationsdatei des Agenten konfigurieren, beachten Sie die folgenden Informationen:
- Das Schema ist in mehrere Abschnitte unterteilt.
- Sie können Fluent Bit-Befehle verwenden, um die Konfigurationsdatei zu vereinfachen und besser lesbar zu machen.
- Sie können Konfigurationsvariablen freigeben, indem Sie Shell-Umgebungsvariablen setzen oder den Befehl @SET verwenden.
Sections (Abschnitte)
Das Schema für eine Fluent Bit-Konfiguration ist in mehrere Abschnitte unterteilt.
- Ein Abschnitt wird durch einen Namen in Klammern definiert.
- Es gibt vier Arten von Abschnitten, die Sie konfigurieren können:
Service,Input,Filter, undOutput. - Ein Abschnitt kann 1 oder mehrere Einträge enthalten.
- Ein Eintrag wird durch eine Textzeile definiert, die einen Schlüssel und einen Wert enthält. Der Schlüssel muss eingerückt sein und einen Wert enthalten, der mit dem Zeilenumbruch endet. Erwägen Sie eine Einrückung von vier Leerzeichen.
Das folgende Diagramm zeigt die Reihenfolge, in der die Abschnitte angewendet werden:
Abschnitt SERVICE
Sie können den Abschnitt SERVICE konfigurieren, um globale Eigenschaften des Dienstes zu definieren.
In der folgenden Tabelle sind einige Schlüssel aufgeführt, die Sie in einem SERVICE-Abschnitt definieren können:
| Schlüssel | Beschreibung | Standardwert |
|---|---|---|
flush |
Legen Sie die Zeit in seconds.nanoseconds fest, um die Datensätze, die von Eingabe-Plug-ins aufgenommen werden, durch die Ausgabe-Plug-ins zu spülen. | 5 |
log_file |
Der absolute Pfad für andere Protokolldateien. | Standardmäßig werden die Protokolle an die Standardfehlerschnittstelle (stderr) weitergeleitet. |
log_level |
Legen Sie die Ausführlichkeitsstufe der Protokollierung fest. Gültige Werte sind: off, error, warn, info, debug und trace. Beachten Sie, dass die Werte akkumuliert
werden. Wenn zum Beispiel debug eingestellt ist, schließt es error, warning, info und debug ein. |
info |
parsers_file |
Pfad für die Konfigurationsdatei eines Parsers. Innerhalb eines Abschnitts können mehrere Parsers_File Einträge definiert werden. |
Weitere Informationen über die unterstützten zusätzlichen Schlüssel finden Sie unter Eigenschaften des Dienstabschnitts.
Ein Beispiel für einen SERVICE-Abschnitt könnte folgendermaßen aussehen:
[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
INPUT-Bereich
Sie können INPUT Abschnitte konfigurieren, um die Quellen zu definieren, aus denen Fluent Bit Daten sammeln kann.
In der folgenden Tabelle sind die Tasten aufgeführt, die Sie für einen INPUT-Abschnitt konfigurieren können:
| Schlüssel | Beschreibung | Status |
|---|---|---|
Name |
Name des Eingabe-Plug-ins. Bestimmt, welches Eingabe-Plug-in von Fluent Bit geladen werden soll. | Erforderlich |
Tag |
Tag, der mit allen von diesem Plug-in stammenden Datensätzen verknüpft ist. | Erforderlich für alle Plug-ins mit Ausnahme des Input Forward Plug-ins, das dynamische Tags bereitstellt. |
Log_Level |
Legen Sie die Ausführlichkeitsstufe der Protokollierung fest. Gültige Werte sind: off, error, warn, info, debug und trace. Beachten Sie, dass die Werte akkumuliert
werden. Wenn zum Beispiel debug eingestellt ist, schließt es error, warning, info und debug ein. Ist der Wert nicht festgelegt, wird der Wert des SERVICE-Abschnitts
Log_Level als Standardwert verwendet. |
Optionale |
Path |
Legen Sie den Speicherort fest, an dem die Protokolldateien gelesen werden.
Für Kubernetes-Protokolle sammelt IBM Cloud Logs Protokollierungsagent standardmäßig nur Protokolle aus dem |
Optionale |
Weitere Informationen über die INPUT Plug-ins finden Sie unter Eingabe-Plug-ins.
Jedes INPUT-Plug-in hat seine eigenen Konfigurationsschlüssel zusätzlich zu den in der Tabelle aufgeführten.
Ein Beispiel für einen INPUT-Abschnitt könnte beispielsweise folgendermaßen aussehen:
[INPUT]
# Comment
Name tail
Tag kube.*
log_level info
Abschnitt FILTER
Sie können FILTER Abschnitte so konfigurieren, dass die Daten, die sich auf ein FILTER Plug-in beziehen, umgewandelt werden, bevor sie an Ihr Ziel gesendet werden.
In der folgenden Tabelle sind die Tasten aufgeführt, die Sie für einen FILTER-Abschnitt konfigurieren können:
| Schlüssel | Beschreibung | Status |
|---|---|---|
Name |
Name des Filter-Plug-ins. Bestimmt, welches Filter-Plug-in von Fluent Bit geladen werden soll. | Erforderlich |
Match |
Ein Muster, das zum Abgleich mit den Tags verwendet wird, die für eingehende Datensätze definiert sind. Bei Match wird zwischen Groß- und Kleinschreibung unterschieden. Sie können das Sternchen * als Platzhalter
verwenden. |
erforderlich [*] |
Match_Regex |
Ein regulärer Ausdruck, der zum Abgleich mit den Tags verwendet wird, die in den eingehenden Datensätzen definiert sind. Verwenden Sie diese Option, um die vollständige Regex-Syntax zu verwenden. | erforderlich [*] |
Log_Level |
Legen Sie die Ausführlichkeitsstufe der Protokollierung fest. Gültige Werte sind: off, error, warn, info, debug und trace. Beachten Sie, dass die Werte akkumuliert
werden. Wenn zum Beispiel debug eingestellt ist, schließt es error, warning, info und debug ein. Ist der Wert nicht festgelegt, wird der Wert des SERVICE-Abschnitts
Log_Level als Standardwert verwendet. |
Optionale |
[*] Sie können die Match Taste, die Match_Regex Taste oder beide konfigurieren. Sie müssen immer eine konfigurieren. Wenn Sie beide konfigurieren, hat Match_Regex Vorrang.
Ein Beispiel für einen FILTER-Abschnitt kann beispielsweise folgendermaßen aussehen:
[FILTER]
Name kubernetes
Match kube.*
log_level info
OUTPUT-Bereich
Sie können OUTPUT Abschnitte konfigurieren, um die Ziele zu definieren, an die Fluent Bit die Daten nach einer Tag-Übereinstimmung senden soll.
Fluent Bit kann bis zu 256 OUTPUT Plug-ins leiten.
In der folgenden Tabelle sind die Tasten aufgeführt, die Sie für einen OUTPUT-Abschnitt konfigurieren können:
| Schlüssel | Beschreibung | Status |
|---|---|---|
Name |
Name des Ausgabe-Plug-ins. Bestimmt, welches Ausgabe-Plug-in von Fluent Bit geladen werden soll. | Erforderlich |
Match |
Ein Muster, das zum Abgleich mit den Tags verwendet wird, die in den eingehenden Datensätzen definiert sind. Bei Match wird zwischen Groß- und Kleinschreibung unterschieden. Sie können das Sternchen * als Platzhalter
verwenden. |
erforderlich [*] |
Match_Regex |
Ein regulärer Ausdruck, der zum Abgleich mit den Tags verwendet wird, die in den eingehenden Datensätzen definiert sind. Verwenden Sie diese Option, um die vollständige Regex-Syntax zu verwenden. | erforderlich [*] |
Log_Level |
Legen Sie die Ausführlichkeitsstufe der Protokollierung fest. Gültige Werte sind: off, error, warn, info, debug und trace. Beachten Sie, dass die Werte akkumuliert
werden. Wenn zum Beispiel debug eingestellt ist, schließt es error, warning, info und debug ein. Ist der Wert nicht festgelegt, wird der Wert des SERVICE-Abschnitts
Log_Level als Standardwert verwendet. |
Optionale |
[*] Sie können die Match Taste, die Match_Regex Taste oder beide konfigurieren. Sie müssen immer eine konfigurieren. Wenn Sie beide konfigurieren, hat Match_Regex Vorrang.
Der OUTPUT-Abschnitt des logger-icl-output-plugin sieht zum Beispiel wie folgt aus:
[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
Die logger-icl-output-plugin verwendet die in Fluent Bit eingebaute Gesundheitsprüfung. Der Pod gilt als ungesund, wenn das Plug-in mindestens einen Fehler auslöst oder wenn die Grenzen für Wiederholungsversuche in einem Zeitraum
von 30 Sekunden ausgeschöpft sind.
Variablen
In Fluent Bit können Sie Umgebungsvariablen verwenden, um den Wert eines Schlüssels zu setzen, der in der Fluent Bit Konfigurationsdatei definiert ist.
Bei den Variablen wird zwischen Groß- und Kleinschreibung unterschieden.
Verwenden Sie das folgende Format zur Darstellung von Variablen:
${MY_VARIABLE}
Um eine Umgebungsvariable zu definieren, können Sie die Bash-Syntax verwenden.
Um Umgebungsvariablen zu definieren, können Sie eine der folgenden Optionen wählen:
-
Öffnen Sie ein Terminal und setzen Sie Umgebungsvariablen mit dem Befehl export.
Zum Beispiel können Sie eine wie folgt definieren:
$ export MY_VARIABLE=stdout.Wenn Fluent Bit startet, sucht der Konfigurationsleser nach einer Umgebungsvariablen mit dem Namen
MY_VARIABLE. -
Wenn Fluent Bit unter systemd mit den offiziellen Paketen läuft, setzen Sie Umgebungsvariablen in einer der folgenden Dateien:
/etc/default/fluent-bit(Debian-basiertes System) oder/etc/sysconfig/fluent-bit(andere Systeme).
Öffnen Sie zum Beispiel ein Terminal und setzen Sie die Umgebungsvariable: $ export MY_OUTPUT=stderr Erstellen Sie dann die folgende Konfigurationsdatei:
[INPUT]
Name tail
Tag kube.*
[OUTPUT]
Name ${MY_OUTPUT}
Match kube.*
Der Schlüssel Name, der mit der Umgebungsvariablen ${MY_OUTPUT} definiert ist, wird auf stderr gesetzt.
Befehle
Sie können Fluent Bit-Befehle verwenden, um die Konfigurationsdatei zu vereinfachen und besser lesbar zu machen.
In der folgenden Tabelle sind die Befehle aufgeführt, die Sie verwenden können:
| Befehl | Beschreibung | Beispiel |
|---|---|---|
@INCLUDE |
Eine Konfigurationsdatei einbinden. | @INCLUDE <FILE> |
@SET |
Setzen Sie eine Konfigurationsvariable. | @SET KEY=VAL |
INCLUDE-Befehl
Um komplizierte, lange Konfigurationsdateien zu vermeiden, können Sie die Hauptkonfigurationsdatei von Fluent Bit in mehrere Dateien aufteilen, indem Sie den Befehl @INCLUDE verwenden. Mit dem Befehl @INCLUDE können
Sie externe Dateien einbinden.
Sie können zusätzliche Konfigurationsdateien einbinden, indem Sie Einträge hinzufügen, die dem folgenden Format entsprechen:
@INCLUDE <FILE>
Beachten Sie die folgenden Informationen, wenn Sie den Befehl @INCLUDE verwenden:
- Sie können den Befehl
@INCLUDEauf der oberen linken Ebene der Konfigurationszeile verwenden. - Sie können den Befehl
@INCLUDEnicht innerhalb eines Abschnitts einfügen. - Sie können das Platzhalterzeichen (
*) verwenden, um mehrere Dateien einzuschließen. Zum Beispiel können Sie verwenden:@INCLUDE input_*.conf. - Wenn Sie mehrere Dateien mit Hilfe des Platzhalters (
*) einschließen, werden die Dateien, die mit dem Platzhalterzeichen übereinstimmen, unsortiert eingeschlossen. Wenn Sie die Reihenfolge zwischen den Dateien beibehalten wollen, müssen die Dateien ausdrücklich in der gewünschten Reihenfolge eingefügt werden. - Alle Pfade, die Sie definieren, werden als relativ aus der Stammkonfigurationsdatei gelesen.
Beispiel:
@INCLUDE somefile.conf
SET-Befehl
Sie können den Befehl @SET verwenden, um Konfigurationsvariablen in die Fluent Bit-Konfiguration zu integrieren.
- Sie können den Befehl
@SETauf der Stammebene jeder Zeile verwenden. - Sie können den Befehl
@SETnicht innerhalb eines Abschnitts verwenden.
Sie können zum Beispiel die folgenden Variablen setzen und sie zur Konfiguration verschiedener Schlüssel verwenden:
@SET my_input=abc
@SET my_output=def
[SERVICE]
Flush 1
[INPUT]
Name ${my_input}
[OUTPUT]
Name ${my_output}