Vous pouvez filtrer tous les événements collectés sur l'agent Linux vRealize Log Insight selon leurs valeurs de champ afin de spécifier les événements de journal à sélectionner ou à annuler. Vous pouvez utiliser les options de collecteur whitelist et blacklist pour définir des filtres.

Info-bulle : Par défaut, l'agent Linux vRealize Log Insight collecte les fichiers cachés créés par des programmes ou des éditeurs. Les noms de ces fichiers ne peuvent pas commencer par un point. Pour empêcher l'agent Linux vRealize Log Insight de collecter les fichiers cachés, ajoutez un paramètre exclude=.*.

Pour chaque événement, le collecteur évalue l'expression des filtres whitelist et blacklist. Si l'expression whitelist donne la valeur True et que l'expression blacklist donne la valeur False ou ne peut pas être évaluée, l'événement est déplacé vers la file d'attente en vue d'un traitement ultérieur. Dans tous les autres cas, le collecteur annule l'événement. La valeur par défaut de l'expression whitelist est True et celle de l'expression blacklist est False.

Info-bulle : Le collecteur Filelog fournit moins de champs pour le filtrage. Pour obtenir des champs de filtrage, vous pouvez analyser les journaux. Pour plus d'informations, consultez Analyse des journaux.

Un filtre whitelist ou blacklist est un ensemble de variables, de littéraux et d'opérateurs qui donne une valeur logique ou entière unique. Vous utilisez les champs d'événement comme des variables et les chaînes ainsi que les nombres entre guillemets doubles comme des littéraux. Pour plus d'informations sur les opérateurs que vous pouvez utiliser dans une expression de filtre, consultez la section Champs d'événements et opérateurs.

Note :
  • Si vous comparez un nombre avec une chaîne ou si la comparaison implique des chaînes numériques, chaque chaîne est convertie en nombre et la comparaison s'effectue numériquement. Par exemple :

    • L'expression whitelist = 123.0 == "000123" donne la valeur True.
    • L'expression whitelist = "00987" == "987.00" donne la valeur True.
    • Dans l'expression whitelist = response_size >= "12.12", si le champ response_size contient une valeur numérique, l'expression est évaluée numériquement. Si la taille de la réponse est supérieure à 12,12, l'expression est True. Sinon, elle est False.
    • Dans l'expression whitelist = "09123" < "234", les deux littéraux de chaîne sont convertis en valeurs numériques et l'expression donne la valeur False.
  • Si l'un des opérandes de chaîne ne peut pas être converti en valeurs numériques, les deux opérandes sont convertis en chaîne. Une comparaison lexicographique simple sensible à la casse est effectuée. Par exemple :

    • L'expression whitelist = "1234a" == "1234A" est une comparaison de chaînes qui donne la valeur False.
    • L'expression whitelist = 4 < "four" convertit 4 en « 4 » et donne la valeur True.
    • Dans l'expression whitelist = response_size > "thousand", la valeur du champ response_size est convertie en valeur de chaîne qui donne la valeur False à l'expression.
  • Si une expression de filtre donne une valeur entière, elle est considérée comme False si elle est de 0 et comme True dans le cas contraire.

    Par exemple, l'expression whitelist = some_integer & 1 donne la valeur True si le champ some_integer a un bit de poids faible défini et False dans le cas contraire.

Pour accéder à la liste complète des champs d'événements et des opérateurs, consultez la section Collecter les événements d'un fichier journal.

Dans cet exemple, vous collectez des journaux d'accès Apache depuis le fichier /var/log/httpd/access. Voici quelques exemples de journaux du fichier :
  • 127.0.0.1 - frank [10/Oct/2016:13:55:36 +0400] "GET /apache_pb.gif HTTP/1.0" 200 2326
  • 198.51.100.56 - john [10/Oct/2016:14:15:31 +0400] "GET /some.gif HTTP/1.0" 200 8270
  • 198.51.100.12 - smith [10/Oct/2016:14:15:31 +0400] "GET /another.gif HTTP/1.0" 303 348
  • 198.51.100.32 - test [10/Oct/2016:15:22:55 +0400] "GET /experimental_page.gif HTTP/1.0" 400 46374
  • 127.0.0.1 - test [10/Oct/2016:15:22:57 +0400] "GET /experimental_page2.gif HTTP/1.0" 301 100

Conditions préalables

  • Connectez-vous en tant que root ou utilisez sudo pour exécuter des commandes de console.
  • Connectez-vous à la machine Linux sur laquelle vous avez installé l'agent vRealize Log Insight Linux, ouvrez une console et exécutez pgrep liagent pour vérifier que l'agent vRealize Log Insight Linux est installé et fonctionne.

Procédure

  1. Définissez un analyseur pour les journaux, comme indiqué dans l'extrait de code suivant :
    [parser|apache-access]
    base_parser=clf
    format=%h %l %u %t \"%r\" %s %b
    L'analyseur que vous avez défini extrait les champs remote_host, remote_log_name, remote_auth_user, timestamp, request, status_code et response_size pour tous les événements collectés depuis le fichier /var/log/httpd/access. Vous pouvez utiliser ces champs pour filtrer les événements.
  2. Ouvrez le fichier /var/lib/loginsight-agent/liagent.ini dans n'importe quel éditeur de texte.
  3. Définissez une section Filelog dans le fichier pour collecter et analyser les journaux, comme indiqué dans l'extrait de code suivant :
    [filelog|apache-access]
    directory = /var/log/httpd/
    include = access
    parser = apache-access
  4. Filtrez les événements en fonction de vos besoins.
    • Pour collecter des journaux dont l'état de HTTP est 200, vous pouvez définir un élément whitelist dans la section Filelog, comme indiqué dans l'extrait de code suivant :

      [filelog|apache-access]
      directory = /var/log/httpd/
      include = access
      parser = apache-access
      whitelist = status_code == 200

      L'expression whitelist donne la valeur True uniquement pour les premier et deuxième événements provenant des exemples de journaux. Ensuite, le collecteur sélectionne ces événements.

      Si le champ status_code n'existe pas dans l'événement, car il n'est pas présent dans le journal ou n'est pas analysé, l'expression whitelist ne peut pas être évaluée. Cela signifie qu'elle donne la valeur False et que le collecteur annule l'événement.

    • Pour annuler un événement qui ne vous intéresse pas, vous pouvez utiliser l'option blacklist. Par exemple, si vous n'êtes pas intéressé par le trafic local, vous pouvez bloquer l'adresse IP locale, comme indiqué dans l'extrait de code suivant :

      [filelog|apache-access]
      directory = /var/log/httpd/
      include = access
      parser = apache-access
      blacklist = remote_host == "127.0.0.1"

      Le collecteur sélectionne les deuxième, troisième et quatrième événements provenant des exemples de journaux.

    • Pour filtrer les événements en fonction de plusieurs prédicats, vous pouvez utiliser les opérateurs or et and. Par exemple, vous pouvez annuler des événements générés depuis une adresse IP locale ou des événements générés par des utilisateurs test depuis n'importe quel hôte non requis, comme indiqué dans l'extrait de code suivant :

      [filelog|apache-access]
      directory = /var/log/httpd/
      include = access
      parser = apache-access
      blacklist = remote_host == "127.0.0.1" or remote_auth_user == "test"

      L'utilisation de l'opérateur or donne la valeur True à l'expression blacklist afin d'ignorer un événement indésirable. L'expression demande au collecteur d'annuler l'événement si la valeur de champ remote_host est « 127.0.0.1 » ou si la valeur de champ remote_auth_user est « test ».

      Le collecteur sélectionne les deuxième et troisième événements provenant des exemples de journaux.

    • Pour annuler des événements générés depuis une adresse IP locale par des utilisateurs test, vous pouvez utiliser and dans l'expression blacklist, comme indiqué dans l'extrait de code suivant :

      [filelog|apache-access]
      directory = /var/log/httpd/
      include = access
      parser = apache-access
      blacklist = remote_host == "127.0.0.1" and remote_auth_user == "test"

      Le collecteur annule le cinquième événement provenant des exemples de journaux.

    • Vous pouvez utiliser conjointement les filtres whitelist et blacklist. Par exemple, si vous avez besoin d'événements dont la taille de la réponse est supérieure à 1 024 octets, mais pas de ceux provenant d'un hôte local, vous pouvez utiliser l'extrait de code suivant :

      [filelog|apache-access]
      directory = /var/log/httpd/
      include = access
      parser = apache-access
      whitelist = response_size > 1024
      blacklist = remote_host == "127.0.0.1" or remote_host == "localhost"

      Le collecteur sélectionne le deuxième événement provenant des exemples de journaux.