Konfigurieren des Agenten zum Festlegen benutzerdefinierter Werte für die Metadatenfelder applicationName und subsystemName

Sie können den Protokollierungsagent so konfigurieren, dass er Protokolle an den IBM Cloud Logs-Dienst sendet.

Protokolle, die Sie senden, müssen einen Wert für die Metadatenfelder applicationName und subsystemName enthalten.

Wenn Sie den Protokollierungsagent konfigurieren, setzt der Agent standardmäßig Standardwerte für diese Felder. Sie können Ihre eigenen benutzerdefinierten Werte konfigurieren, um die Standardwerte zu ersetzen. Weitere Informationen zu Standardwerten finden Sie unter Metadatenfelder.

In IBM Cloud Logs können Sie die applicationName und subsystemName Metadatenfelder verwenden, um eine der folgenden Funktionen zu konfigurieren:

  • TCO-Politik
  • Parsing-Regeln
  • Berichte über die Datennutzung
  • Warnungen
  • Ansichten
  • Dashboards
  • Ereignisse zu Metriken
  • Loggregation

Informationen zu IBM Cloud Logs finden Sie in der IBM Cloud Logs Dokumentation.

Konfigurieren des Agenten zum Festlegen benutzerdefinierter Werte

Sie können den Protokollierungsagent mit benutzerdefinierten Werten für die applicationName und subsystemName Metadatenfelder konfigurieren, indem Sie API-Optionen angeben.

  • Verwenden Sie -a, um das applicationName anzugeben, das Sie verwenden möchten.

    Standardmäßig wird der applicationName mit dem Namensraumnamen kubernetes.namespace_name im Red Hat OpenShift on IBM Cloud oder IBM Cloud Kubernetes Service Cluster vorbelegt.

    Sie können auch Variablen aus der Umgebung verwenden, um benutzerdefinierte Werte zu setzen, zum Beispiel '${POD_NAMESPACE}'.

  • Verwenden Sie -s, um das susbsystemName anzugeben, das Sie verwenden möchten.

    Standardmäßig wird der subsystemName mit dem Containernamen kubernetes.container_name in Red Hat OpenShift on IBM Cloud oder IBM Cloud Kubernetes Service Clustern vorbelegt.

    Sie können auch Variablen aus der Umgebung verwenden, zum Beispiel '${POD_NAME}'.

Bei der Einstellung dieser Metadatenfelder haben Sie die folgenden Möglichkeiten:

  • Sie können den Wert auf eine feste Zeichenfolge setzen. Sie können zum Beispiel -s 'production' verwenden.
  • Sie können Variablen aus der Umgebung verwenden, zum Beispiel -a '${POD_NAMESPACE}'.
  • Sie können eine feste Zeichenfolge mit Variablen aus der Umgebung kombinieren, zum Beispiel -a 'mycluster:${POD_NAME}'.

Sie können applicatioName, subsystemName oder beides einstellen. Ist kein Wert angegeben, wird der Standardwert verwendet. Informationen über die Standardwerte, die für die Metadatenfelder applicationName und subsystemName festgelegt werden, finden Sie unter Metadaten.

Beispiel: Dynamische Werte konfigurieren

Um den Protokollierungsagent mit benutzerdefinierten dynamischen Werten für die applicationName und subsystemName Metadatenfelder zu konfigurieren, können Sie den Agenten wie folgt in einem Kubernetes-Cluster bereitstellen:

curl -sSL https://ibm.biz/logs-router-setup | bash -s --   -v 1.1.1   -m IAMAPIKey    -k xxxx   -t Kubernetes   -r eu-es   -p 3443 -s '${POD_NAME}' -a '${POD_NAMESPACE}'

Beispiel: Konfigurieren eines Wertes, der einen festen und einen dynamischen Wert kombiniert

Um den Protokollierungsagent mit benutzerdefinierten Werten für die applicationName und subsystemName Metadatenfelder zu konfigurieren, können Sie den Agenten wie folgt in einem Kubernetes-Cluster bereitstellen:

curl -sSL https://ibm.biz/logs-router-setup | bash -s --   -v 1.1.1   -m IAMAPIKey    -k xxxx   -t Kubernetes   -r eu-es   -p 3443 -s '${POD_NAME}' -a 'mycluster-dallas:${POD_NAMESPACE}'

In diesem Beispiel wird der Name des Clusters als String hinzugefügt.

Beispiel: Festwerte konfigurieren

Um den Protokollierungsagent mit benutzerdefinierten festen Werten für die applicationName und subsystemName Metadatenfelder zu konfigurieren, können Sie den Agenten wie folgt in einem Kubernetes-Cluster bereitstellen:

curl -sSL https://ibm.biz/logs-router-setup | bash -s --   -v 1.1.1   -m IAMAPIKey    -k xxxx   -t Kubernetes   -r eu-es   -p 3443 -s 'mysubsystem' -a 'myapp'

Konfigurieren des Agenten zum Festlegen benutzerdefinierter Werte auf der Grundlage der Protokollzeile

Sie können dynamisch Werte für Anwendungs- und Subsystemnamen in Abhängigkeit von der Protokollzeile hinzufügen.

Das folgende Beispiel zeigt, wie man einen Agenten für einen Kubernetes-Cluster konfiguriert, der einen benutzerdefinierten Anwendungsnamen für eine JSON-formatierte Nachricht hinzufügt:

  1. Fügen Sie den applicationName in die Protokollzeile ein.

    Ihre Protokollzeile sieht zum Beispiel wie folgt aus: {"level":"info", "msg":"Test message", "applicationName":"my-application"}

  2. Fügen Sie das JSON PARSER-Plugin in die logger-agent-iks.yaml-Datei ein, um ein stingify-JSON in ein JSON-Objekt zu konvertieren. Weitere Informationen finden Sie unter JSON.

    [PARSER]
        # Converts the original log source from a JSON map string to the internal binary representation.
        Name   json
        Format json
        # Time_Key: Set the time in your log entry to the log record time included with the log. If not set, Fluenti Bit uses its own time.
        Time_Key time
        Time_Format %d/%b/%Y:%H:%M:%S %z
        # Time_Keep: To keep all fields in the original log record
        Time_Keep On
    
  3. Fügen Sie das PARSER-Plugin in die logger-agent-iks.yaml-Datei ein, um Felder aus den Protokollen zu extrahieren. Weitere Informationen finden Sie unter Parser.

    Standardmäßig behält das Parser-Plugin nur die geparsten Felder in seiner Ausgabe.

    [FILTER]
       # Name: Specify the name of the parser
       Name parser
       # Match: A pattern that is used to match against the tags that are defined on incoming records.
       Match *
       # Key_Name: Specify the field name in the log to be parsed.
       Key_Name message
       # Parser: Specify the parser name to interpret the field.
       Parser json
       # Reserve_Data: Set to keep all the fields
       Reserve_Data On
       # preserve_key: Set to keep the original key field.
       Preserve_Key On
    
  4. Extrahieren Sie den Anwendungsnamen mit dem Nest-Filter-Plugin

    Mit dem Nestfilter-Plugin können Sie auf oder mit verschachtelten Daten arbeiten. Seine Arbeitsweisen sind: nest, bei der eine Reihe von Datensätzen in eine Karteikarte eingefügt wird, und lift, bei der eine Karteikarte nach Schlüsseln geordnet wird und die Datensätze nach oben gehoben werden. Weitere Informationen finden Sie unter Nest.

    applicationName muss sich auf der obersten Ebene befinden, daher müssen Sie die Operation lift verwenden.

    [FILTER] Name Nest Übereinstimmung * Operation Aufzug Verschachtelte_unter Nachricht Platzhalter applicationName

In diesem Fall wäre der "applicationName" für das obige Beispiel der Protokollzeile "my-application" für diese bestimmte Zeile.