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 -a pour spécifier le applicationName que vous souhaitez utiliser.

    Par défaut, le applicationName correspond au nom de l'espace de noms kubernetes.namespace_name dans 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 -s pour spécifier le susbsystemName que vous souhaitez utiliser.

    Par défaut, le subsystemName correspond au nom du conteneur kubernetes.container_name dans 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 :

  1. 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"}

  2. Ajoutez le plugin JSON PARSER au fichier logger-agent-iks.yaml pour 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
    
  3. Ajoutez le plugin PARSER au fichier logger-agent-iks.yaml pour 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
    
  4. 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 : nest il prend un ensemble d'enregistrements et les place dans une carte, et lift il 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.