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 dasapplicationNameanzugeben, das Sie verwenden möchten.Standardmäßig wird der
applicationNamemit dem Namensraumnamenkubernetes.namespace_nameim 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 dassusbsystemNameanzugeben, das Sie verwenden möchten.Standardmäßig wird der
subsystemNamemit dem Containernamenkubernetes.container_namein 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:
-
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"} -
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 -
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 -
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, undlift, 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
liftverwenden.[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.