VMware Aria Operations for Logs Linux エージェントで収集されたすべてのログ イベントをフィールド値に基づいてフィルタリングして、どのログ イベントを選択またはドロップするかを指定できます。whitelist および blacklist コレクタ オプションを使用して、フィルタを定義できます。

ヒント: デフォルトでは、 VMware Aria Operations for Logs Linux エージェントはプログラムまたはエディタによって作成された隠しファイルを収集します。隠しファイルの名前はピリオドで始まります。 VMware Aria Operations for Logs Linux エージェントが隠しファイルを収集しないようにするには、 exclude=.* パラメータを追加します。

各ログ イベントについて、コレクタは whitelist および blacklist フィルタ式を評価します。whitelist 式が true に評価され、blacklist 式が false に評価されるか、または評価できない場合、イベントはキューに移動してさらに処理されます。それ以外の場合は、コレクタによってイベントがドロップされます。whitelist 式のデフォルト値は true で、blacklist 式のデフォルト値は false です。

ヒント: Filelog コレクタでは、フィルタリングのフィールドが少なくなります。フィルタリングのフィールドを取得するには、ログを解析します。詳細については、 ログの解析を参照してください。

whitelist または blacklist フィルタは、単一の論理値または整数値に評価される一連の変数、リテラル、および演算子です。ログ イベント フィールドは変数として、二重引用符で囲んだ文字列および数字はリテラルとして使用します。フィルタ式内で使用できる演算子の詳細については、イベントのフィールドおよび演算子 を参照してください。

注:
  • 数値を文字列と比較する場合、または比較に数値文字列が含まれている場合は、各文字列が数値に変換され、比較は数値で実行されます。例:

    • whitelist = 123.0 == "000123" は true に評価されます。
    • whitelist = "00987" == "987.00" は true に評価されます。
    • whitelist = response_size >= "12.12" で、response_size フィールドに数値が指定されている場合、式は数値として評価されます。応答のサイズが 12.12 より大きい場合、式は true、それ以外の場合は false になります。
    • whitelist = "09123" < "234" では、両方の文字列リテラルが数値に変換され、式が false に評価されます。
  • 文字列のいずれかのオペランドを数値に変換できない場合は、両方のオペランドが文字列に変換されます。単純な大文字/小文字の区別による辞書比較が実行されます。例:

    • whitelist = "1234a" == "1234A" は文字列比較で、false に評価されます。
    • whitelist = 4 < "four" は 4 から "4" に変換され、true に評価されます。
    • whitelist = response_size > "thousand" では、response_size フィールドの値が文字列値に変換されます。これにより、式が false に評価されます。
  • フィルタ式が整数値として評価されると、0 の場合は false として、そうでない場合は true として扱われます。

    たとえば、some_integer フィールドに最下位ビットが設定されている場合、式 whitelist = some_integer & 1 は true に、それ以外の場合は false に評価されます。

ログ イベント フィールドおよび演算子の完全なリストについては、ログ ファイルからのログ イベントの収集を参照してください。

この例では、ファイル /var/log/httpd/access から Apache アクセス ログを収集します。ファイルのサンプル ログには次のものがあります。
  • 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

前提条件

  • root としてログインするか、または sudo を使用してコンソール コマンドを実行します。
  • VMware Aria Operations for LogsLinux エージェントがインストールされた Linux マシンにログインし、コンソールを開き、pgrep liagent を実行して、VMware Aria Operations for Logs Linux エージェントがインストールされて実行中であることを確認します。

手順

  1. 次のスニペットに示すように、ログのパーサーを定義します。
    [parser|apache-access]
    base_parser=clf
    format=%h %l %u %t \"%r\" %s %b
    定義したパーサーは、ファイル /var/log/httpd/access から収集されたすべてのログ イベントについて、 remote_host remote_log_nameremote_auth_usertimestamprequeststatus_code、および response_size フィールドを抽出します。これらのフィールドを使用して、イベントをフィルタリングできます。
  2. 任意のテキスト エディタで /var/lib/loginsight-agent/liagent.ini ファイルを開きます。
  3. 次のスニペットに示すように、ログを収集して解析するためのファイル内の Filelog セクションを定義します。
    [filelog|apache-access]
    directory = /var/log/httpd/
    include = access
    parser = apache-access
  4. 要件に応じてログ イベントをフィルタリングします。
    • HTTP ステータスが 200 のログを収集するには、次のスニペットに示すように Filelog セクションに whitelist を定義できます。

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

      whitelist 式は、サンプル ログの最初と 2 番目のログ イベントについてのみ true に評価され、コレクタはこれらのイベントを選択します。

      status_code フィールドがログに存在しないか、解析されていないためにログ イベント内に存在しない場合は、whitelist 式を評価できません。これは false と評価され、コレクタによってイベントがドロップされます。

    • 関心のないログ イベントをドロップするには、blacklist オプションを使用します。たとえば、ローカル トラフィックに関心がない場合は、次のスニペットに示すようにローカル IP アドレスをブロックすることができます。

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

      コレクタは、サンプル ログから 2 番目、3 番目、4 番目のログ イベントを選択します。

    • 複数の述語に基づいてログ イベントをフィルタリングするには、or および and 演算子を使用できます。たとえば、次のスニペットに示すように、ローカル IP アドレスから生成されたイベント、またはテスト ユーザーによって生成されたイベントを不要なホストから削除できます。

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

      or 演算子を使用すると、blacklist 式が true に評価され、不要なログ イベントがスキップされます。式は、remote_host フィールド値が「127.0.0.1」または remote_auth_user フィールド値が「test」の場合にイベントをドロップするようにコレクタに指示します。

      コレクタは、サンプル ログから 2 番目と 3 番目のログ イベントを選択します。

    • テスト ユーザーによってローカル IP アドレスから生成されたログ イベントをドロップするには、次のスニペットに示すように、blacklist 式で and を使用できます。

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

      コレクタは、サンプル ログから 5 番目のログ イベントをドロップします。

    • whitelistblacklist フィルタを一緒に使用できます。たとえば、応答サイズが 1024 バイトを超えるログ イベントを必要とするが、ローカル ホストから発生するイベントを必要としない場合は、次のスニペットを使用できます。

      [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"

      コレクタは、サンプル ログから 2 番目のログ イベントを選択します。