web-dev-qa-db-ja.com

コンマで区切られたキーと値のペアのGraylogエクストラクタ

私は、graylogとそのエクストラクタのコアコンセプトを理解していないか、見落としているだけだと思います。カンマで区切られたキーと値のペアを取得して、それぞれのフィールドに分割したいだけです。

サンプルログメッセージ

2016-01-22 18:04:05,639-Host_info_log-INFO-'cpu_count = 2、user_cpu = 0.0、system_cpu = 0.0、idle_cpu = 100.0、total_memory = 3955.07、avail_memory = 3717.3、percent_memory = 6.0、used_memory = 523.44、free_memory = 3431.63、active_memory = 378.54、inactive_memory = 67.38、swap_memory_used = 0.0、swap_memory_total = 0.0、swap_memory_free = 0.0、swap_memory_percent = 0.0

注:キーは常に正確に同じ場所にあるとは限りません。ほとんどの場合、cpu_countが最初ですが、常にそうであるとは限りません。

2

キー(ha!)は、 Key = Valueペアのコンバーターをフィールドに追加することです。

CSVコンバーターとKey = Valueコンバーターの両方を使用しても、目的の機能は実行されませんが、他の区切り文字についてもわかりません。 Key = Valueは空白を想定しています。したがって、1つの解決策は、正規表現エクストラクタで置換を使用してカンマをスペースに入れ、最後にKey = Valueを追加することです([追加]ボタンを押すことを忘れないでください)。

パフォーマンス上の理由と誤った抽出を避けるために、文字列条件を追加します。

最終結果は次のようになります。

{
  "extractors": [
     {
      "condition_type": "string",
      "condition_value": "Host_info_log",
      "converters": [
        {
          "type": "numeric",
          "config": {}
        },
        {
          "type": "tokenizer",
          "config": {}
        }
      ],
      "cursor_strategy": "copy",
      "extractor_config": {
        "regex": ",",
        "replacement": " ",
        "replace_all": true
      },
      "extractor_type": "regex_replace",
      "order": 0,
      "source_field": "message",
      "target_field": "Host_info_log",
      "title": "serverfault  http://serverfault.com/q/751126/241174"
    }
  ],
  "version": "1.3.3 (0fda9dc)"
}
3
John Mahowald