12.2. Filtrage des journaux par contenu


La collecte de tous les journaux à partir d’un cluster peut produire une grande quantité de données, ce qui peut être coûteux pour le transport et le stockage.

Il est possible de réduire le volume de vos données de log en filtrant les données à faible priorité qui n’ont pas besoin d’être stockées. L’enregistrement fournit des filtres de contenu que vous pouvez utiliser pour réduire le volume des données de log.

Note

Les filtres de contenu sont distincts des sélecteurs d’entrée. les sélecteurs d’entrée sélectionnent ou ignorent des flux de journaux entiers basés sur les métadonnées source. Les filtres de contenu modifient les flux de journaux pour supprimer et modifier les enregistrements en fonction du contenu de l’enregistrement.

Le volume des données de log peut être réduit en utilisant l’une des méthodes suivantes:

Lorsque le filtre de chute est configuré, le collecteur de journaux évalue les flux de journaux en fonction des filtres avant le transfert. Le collecteur dépose les enregistrements de journal indésirables qui correspondent à la configuration spécifiée.

Conditions préalables

  • L’opérateur de journalisation Red Hat OpenShift a été installé.
  • Il y a des autorisations d’administrateur.
  • Création d’une ressource personnalisée ClusterLogForwarder (CR).

Procédure

  1. Ajoutez une configuration pour un filtre à la spécification des filtres dans le ClusterLogForwarder CR.

    L’exemple suivant montre comment configurer le ClusterLogForwarder CR pour laisser tomber les enregistrements de journaux basés sur des expressions régulières:

    Exemple ClusterLogForwarder CR

    apiVersion: logging.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
    # ...
    spec:
      filters:
      - name: <filter_name>
        type: drop 
    1
    
        drop: 
    2
    
        - test: 
    3
    
          - field: .kubernetes.labels."foo-bar/baz" 
    4
    
            matches: .+ 
    5
    
          - field: .kubernetes.pod_name
            notMatches: "my-pod" 
    6
    
      pipelines:
      - name: <pipeline_name> 
    7
    
        filterRefs: ["<filter_name>"]
    # ...
    Copy to Clipboard Toggle word wrap

    1
    Indique le type de filtre. Le filtre de chute dépose les enregistrements de journal qui correspondent à la configuration du filtre.
    2
    Indique les options de configuration pour l’application du filtre de chute.
    3
    Indique la configuration des tests utilisés pour évaluer si un enregistrement de journal est supprimé.
    • Lorsque toutes les conditions spécifiées pour un essai sont vraies, le test passe et l’enregistrement du journal est supprimé.
    • Lorsque plusieurs tests sont spécifiés pour la configuration du filtre de chute, si l’un des tests passe, l’enregistrement est supprimé.
    • En cas d’erreur d’évaluation d’une condition, par exemple, le champ est absent de l’enregistrement journal en cours d’évaluation, cette condition évalue à false.
    4
    Indique un chemin de champ délimité par point, qui est un chemin vers un champ dans l’enregistrement de journal. Le chemin peut contenir des caractères alpha-numériques et des accents (a-zA-Z0-9_), par exemple, .kubernetes.namespace_name. Lorsque les segments contiennent des caractères en dehors de cette plage, le segment doit être en guillemets, par exemple, .kubernetes.labels.foo.bar-bar/baz. Il est possible d’inclure plusieurs chemins de champ dans une configuration de test unique, mais ils doivent tous être évalués à true pour que le test passe et que le filtre de chute soit appliqué.
    5
    Indique une expression régulière. Lorsque les enregistrements de journaux correspondent à cette expression régulière, ils sont supprimés. Il est possible de définir soit les correspondances, soit la condition Matches pour un seul chemin de champ, mais pas les deux.
    6
    Indique une expression régulière. Lorsque les enregistrements de journaux ne correspondent pas à cette expression régulière, ils sont supprimés. Il est possible de définir soit les correspondances, soit la condition Matches pour un seul chemin de champ, mais pas les deux.
    7
    Indique le pipeline auquel le filtre de goutte est appliqué.
  2. Appliquez le ClusterLogForwarder CR en exécutant la commande suivante:

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

Exemples supplémentaires

L’exemple supplémentaire suivant montre comment vous pouvez configurer le filtre de chute pour ne conserver que des enregistrements de journal de priorité plus élevés:

apiVersion: logging.openshift.io/v1
kind: ClusterLogForwarder
metadata:
# ...
spec:
  filters:
  - name: important
    type: drop
    drop:
      test:
      - field: .message
        notMatches: "(?i)critical|error"
      - field: .level
        matches: "info|warning"
# ...
Copy to Clipboard Toggle word wrap

En plus d’inclure plusieurs chemins de champ dans une configuration de test unique, vous pouvez également inclure des tests supplémentaires qui sont traités comme des vérifications OU. Dans l’exemple suivant, les enregistrements sont supprimés si l’une ou l’autre configuration de test évalue à true. Cependant, pour la deuxième configuration d’essai, les deux spécifications de champ doivent être vraies pour qu’elles soient évaluées à true:

apiVersion: logging.openshift.io/v1
kind: ClusterLogForwarder
metadata:
# ...
spec:
  filters:
  - name: important
    type: drop
    drop:
      test:
      - field: .kubernetes.namespace_name
        matches: "^open"
      test:
      - field: .log_type
        matches: "application"
      - field: .kubernetes.pod_name
        notMatches: "my-pod"
# ...
Copy to Clipboard Toggle word wrap

Lorsque le filtre tailleur est configuré, le collecteur de journaux évalue les flux de journaux en fonction des filtres avant le transfert. Le collecteur prune log enregistre en supprimant les champs de faible valeur tels que les annotations de pod.

Conditions préalables

  • L’opérateur de journalisation Red Hat OpenShift a été installé.
  • Il y a des autorisations d’administrateur.
  • Création d’une ressource personnalisée ClusterLogForwarder (CR).

Procédure

  1. Ajoutez une configuration pour un filtre à la spécification de prune dans le ClusterLogForwarder CR.

    L’exemple suivant montre comment configurer le ClusterLogForwarder CR pour tailler les enregistrements de journal en fonction des chemins de champ:

    Important

    Dans le cas où les deux sont spécifiés, les enregistrements sont taillés en fonction du tableau notIn d’abord, ce qui prime sur le tableau dans le tableau. Après que les enregistrements ont été élagués en utilisant le tableau notIn, ils sont ensuite élagués en utilisant le tableau dans le tableau.

    Exemple ClusterLogForwarder CR

    apiVersion: logging.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
    # ...
    spec:
      filters:
      - name: <filter_name>
        type: prune 
    1
    
        prune: 
    2
    
          in: [.kubernetes.annotations, .kubernetes.namespace_id] 
    3
    
          notIn: [.kubernetes,.log_type,.message,."@timestamp"] 
    4
    
      pipelines:
      - name: <pipeline_name> 
    5
    
        filterRefs: ["<filter_name>"]
    # ...
    Copy to Clipboard Toggle word wrap

    1
    Indiquez le type de filtre. Le filtre prunes enregistre les enregistrements par champs configurés.
    2
    Spécifiez les options de configuration pour l’application du filtre de pruneaux. Les champs in et notIn sont spécifiés comme des tableaux de chemins de champ délimités par points, qui sont des chemins vers des champs dans les enregistrements de log. Ces chemins peuvent contenir des caractères alpha-numériques et des accents (a-zA-Z0-9_), par exemple, .kubernetes.namespace_name. Lorsque les segments contiennent des caractères en dehors de cette plage, le segment doit être en guillemets, par exemple, .kubernetes.labels.foo.bar-bar/baz.
    3
    Facultatif : Tous les champs spécifiés dans ce tableau sont supprimés de l’enregistrement de journal.
    4
    Facultatif : Tous les champs qui ne sont pas spécifiés dans ce tableau sont supprimés de l’enregistrement de journal.
    5
    Indiquez le pipeline auquel le filtre de prune est appliqué.
  2. Appliquez le ClusterLogForwarder CR en exécutant la commande suivante:

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat