用于逗号分隔键值对的 Graylog 提取器

用于逗号分隔键值对的 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 是第一个,但并非总是如此。

答案1

关键(哈!)是添加一个将 Key=Value 对转换为字段。

但是,同时使用 CSV 和 Key=Value 转换器并不能达到您想要的效果,因为您不知道另一个分隔符。Key=Value 假定为空格。因此,一种解决方案是使用替换正则表达式提取器将逗号替换为空格,并在末尾添加 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)"
}

相关内容