私は、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が最初ですが、常にそうであるとは限りません。
キー(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)"
}