您可以在 vRealize Log Insight Linux 代理程式上依照其欄位值篩選所有收集的記錄事件,以指定要選取或捨棄的記錄事件。您可以使用 whitelistblacklist 收集器選項來定義篩選器。

提示: 依預設, vRealize Log Insight Linux 代理程式會收集程式或編輯器建立的隱藏檔案。隱藏檔案的名稱以句點開頭。您可阻止 vRealize Log Insight Linux 代理程式收集隱藏檔案,方式是新增排除 exclude=* 參數。

針對每個記錄事件,收集器會評估 whitelistblacklist 篩選器運算式。如果 whitelist 運算式評估為 true,且 blacklist 運算式評估為 false 或無法評估,則會將事件移至佇列進行進一步處理。在任何其他情況下,收集器會捨棄該事件。whitelist 運算式的預設值為 true,且 blacklist 運算式的預設值為 false。

提示: Filelog 收集器提供用於篩選的欄位較少。若要取得用於篩選的欄位,您可以剖析記錄檔。如需詳細資訊,請參閱 剖析記錄

whitelistblacklist 篩選器是評估為單一邏輯或整數值的一組變數、常值與運算子。您可以使用記錄事件欄位做為變數,以及雙引號的字串和數字做為常值。如需您可以在篩選器運算式內使用的運算子相關資訊,請參閱 事件欄位和運算子

備註:
  • 如果您將數字與字串比較,或如果比較牽涉到數值字串,則會將每個字串轉換為數字,並且以數值形式執行比較。例如:

    • 運算式 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

必要條件

  • 根使用者身分登入,或使用 sudo 執行主控台命令。
  • 登入安裝有 vRealize Log Insight Linux 代理程式的 Linux 機器,開啟主控台並執行 pgrep liagent,以確認 vRealize Log Insight 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 運算式只會將來自範例記錄的第一個和第二個記錄事件評估為 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"

      收集器會從範例記錄選取第二個、第三個和第四個記錄事件。

    • 若要根據多個述詞篩選記錄事件,您可以使用 orand 運算子。例如,您可以捨棄從本機 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」時捨棄事件。

      收集器會從範例記錄選取第二個和第三個記錄事件。

    • 若要捨棄測試使用者從本機 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"

      收集器會捨棄來自範例記錄的第五個記錄事件。

    • 您可以同時使用 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"

      收集器會選取來自範例記錄的第二個記錄事件。