Configuration de l'agent pour définir des valeurs personnalisées pour les champs de métadonnées applicationName et subsystemName
Vous pouvez configurer le service Agent de journalisation pour qu'il envoie les journaux au service IBM Cloud Logs.
Les journaux que vous envoyez doivent contenir une valeur pour les champs de métadonnées applicationName et subsystemName.
Par défaut, lorsque vous configurez l'agent Agent de journalisation, l'agent définit des valeurs par défaut pour ces champs. Vous pouvez configurer vos propres valeurs personnalisées pour remplacer les valeurs par défaut. Pour plus d'informations sur les valeurs par défaut, voir Champs de métadonnées.
Dans IBM Cloud Logs, vous pouvez utiliser les champs de métadonnées applicationName et subsystemName pour configurer l'une des fonctions suivantes :
- Politiques TCO
- Règles d'analyse
- Rapports sur l'utilisation des données
- Alertes
- Vues
- Tableaux de bord
- Événements à mesurer
- Loggregation
Pour plus d'informations sur IBM Cloud Logs, voir la IBM Cloud Logs documentation.
Configurer l'agent pour qu'il définisse des valeurs personnalisées
Vous pouvez configurer le Agent de journalisation avec des valeurs personnalisées pour les champs de métadonnées applicationName et subsystemName en spécifiant des options API.
-
Utilisez
-apour spécifier leapplicationNameque vous souhaitez utiliser.Par défaut, le
applicationNamecorrespond au nom de l'espace de nomskubernetes.namespace_namedans le cluster Red Hat OpenShift on IBM Cloud ou IBM Cloud Kubernetes Service.Vous pouvez également utiliser des variables de l'environnement pour définir des valeurs personnalisées, par exemple
'${POD_NAMESPACE}'. -
Utilisez
-spour spécifier lesusbsystemNameque vous souhaitez utiliser.Par défaut, le
subsystemNamecorrespond au nom du conteneurkubernetes.container_namedans les clusters Red Hat OpenShift on IBM Cloud ou IBM Cloud Kubernetes Service.Vous pouvez également utiliser des variables d'environnement, par exemple
'${POD_NAME}'.
Lors de la définition de ces champs de métadonnées, vous disposez des options suivantes :
- Vous pouvez définir la valeur d'une chaîne fixe. Par exemple, vous pouvez utiliser
-s 'production'. - Vous pouvez utiliser des variables d'environnement, par exemple
-a '${POD_NAMESPACE}'. - Vous pouvez combiner une chaîne fixe avec des variables de l'environnement, par exemple
-a 'mycluster:${POD_NAME}'.
Vous pouvez définir applicatioName, subsystemName, ou les deux. Si une valeur n'est pas définie, la valeur par défaut est appliquée. Pour plus d'informations sur les valeurs par défaut définies pour les champs de métadonnées
applicationName et subsystemName, voir Métadonnées.
Exemple : Configuration des valeurs dynamiques
Pour configurer l'agent Agent de journalisation avec des valeurs dynamiques personnalisées pour les champs de métadonnées applicationName et subsystemName, vous pouvez déployer l'agent comme suit dans un Kubernetes:
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}'
Exemple : Configuration d'une valeur combinant une valeur fixe et une valeur dynamique
Pour configurer l'agent Agent de journalisation avec des valeurs personnalisées pour les champs de métadonnées applicationName et subsystemName, vous pouvez déployer l'agent comme suit dans un Kubernetes:
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}'
Dans cet exemple, le nom du cluster est ajouté sous forme de chaîne de caractères.
Exemple : Configuration des valeurs fixes
Pour configurer l'agent Agent de journalisation avec des valeurs fixes personnalisées pour les champs de métadonnées applicationName et subsystemName, vous pouvez déployer l'agent comme suit dans un Kubernetes:
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'
Configurer l'agent pour qu'il définisse des valeurs personnalisées en fonction de la ligne de journal
Vous pouvez ajouter dynamiquement des valeurs pour l'application et le nom du sous-système en fonction de la ligne de journal.
L'exemple suivant montre comment configurer un agent pour un cluster Kubernetes qui ajoute un nom d'application personnalisé pour un message au format JSON :
-
Ajoutez le applicationName à la ligne de journal.
Par exemple, votre ligne de journal se présente comme suit :
{"level":"info", "msg":"Test message", "applicationName":"my-application"} -
Ajoutez le plugin JSON PARSER au fichier
logger-agent-iks.yamlpour convertir un JSON stingify en un objet JSON. Pour plus d'informations, voir 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 -
Ajoutez le plugin PARSER au fichier
logger-agent-iks.yamlpour extraire les champs des journaux. Pour plus d'informations, voir Parser.Par défaut, le plugin d'analyseur ne conserve que les champs analysés dans sa sortie.
[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 -
Extraire le nom de l'application en utilisant le plugin Nest filter
Le plugin Nest Filter vous permet d'opérer sur ou avec des données imbriquées. Ses modes de fonctionnement sont les suivants :
nestil prend un ensemble d'enregistrements et les place dans une carte, etliftil prend une carte par clé et soulève ses enregistrements. Pour plus d'informations, voir Nest.applicationName doit être au niveau supérieur, vous devez donc utiliser l'opération
lift.[FILTRE] Nom du nid Correspondance * Opération lift Sous-message imbriqué Wildcard applicationName
Ainsi, le "applicationName" de l'exemple de ligne de journal ci-dessus sera "my-application" pour cette ligne particulière.