2017-01-17 2 views
0

[]内のログ値をテキストなしで.csvファイルに送信します。logstashの使用[]内にある値を.csvファイルにどのように取得できますか?

2017-01-18T14:05:47.376Z PC147594 [2017-01-13 12:58:09 --column 1 
843][WARN ][index.search.slowlog.query] [Spectra] [testindex-stats][2] --column 2 
took[15.3ms]  --column 3 
took_millis[15] --column 4 
types[]   --column 5 
stats[]   --column 6 
search_type[QUERY_THEN_FETCH] --column 7 
total_shards[5]     --column 8 
source[{"query":{"match":{"text":"ronin"}}}]  --column 9 
extra_source[] --column 10 

しかし、私が欲しいのは、私は、これはlogstash 5.1.1で問題だったと思う

2017-01-13 12:58:09,843] --column 1 
WARN      --column 2 
index.search.slowlog.query --column 3 
Spectra     --column 4 
testindex-stats   --column 5 
2       --column 6 
15.3ms      --column 7 
so on..      column.. 

です:

input { 
    file { 
    path => "D:\logstash-5.1.1\logstash-5.1.1\bin\slowlog.log" 
    start_position => "beginning" 
    } 
} 

filter { 
    grok { 
    match => ["message", "\[(?<TIMESTAMP>[^\]]*)\][^\[\]]*\[(?<LEVEL>[^\]]*)\][^\[\]]*\[(?<QUERY>[^\]]*)\][^\[\]]*\[(?<QUERY1>[^\]]*)\][^\[\]]*\[(?<INDEX-NAME>[^\]]*)\][^\[\]]*\[(?<SHARD>[^\]]*)\][^\[\]]*\[(?<TOOK>[^\]]*)\][^\[\]]*\[(?<TOOKM>[^\]]*)\][^\[\]]*\[(?<types>[^\]]*)\][^\[\]]*\[(?<stats>[^\]]*)\][^\[\]]*\[(?<search_type>[^\]]*)\][^\[\]]*\[(?<total_shards>[^\]]*)\][^\[\]]*\[(?<source_query>[^\]]*)\][^\[\]]*\[(?<extra_source>[^\]]*)\][^\[\]]*,"] 
    } 
} 

output { 
     csv { 
     fields => ["TIMESTAMP","LEVEL","QUERY","QUERY1","INDEX-NAME","SHARD","TOOK","TOOKM","types","stats","search_type","total_shards","source_query","extra_source"] 
     path => "D:\logstash-5.1.1\logstash-5.1.1\bin\output.csv" 
     spreadsheet_safe => false 
    } 

} 

私の出力ファイルは、このようなものです。

+0

問題は、セパレータの問題ではありません、これを見ます理由を調べるための質問:http://stackoverflow.com/questions/41681873/sending-slowlogs-to-csv-file – Val

答えて

0

あなたはこのようなGROKパターンを使用したい:

filter { 
    grok { 
    match => ["message", "\[(?<field1>[^\]]*)\][^\[\]]*\[(?<field2>[^\]]*)\][^\[\]]*\[(?<field3>[^\]]*)\][^\[\]]*\[(?<field4>[^\]]*)\][^\[\]]*\[(?<field5>[^\]]*)\][^\[\]]*\[(?<field6>[^\]]*)\][^\[\]]*\[(?<field7>[^\]]*)\][^\[\]]*\[(?<field8>[^\]]*)\][^\[\]]*\[(?<field9>[^\]]*)\][^\[\]]*\[(?<field10>[^\]]*)\][^\[\]]*\[(?<field11>[^\]]*)\][^\[\]]*\[(?<field12>[^\]]*)\][^\[\]]*\[(?<field13>[^\]]*)\][^\[\]]*\[(?<field14>[^\]]*)\][^\[\]]*"] 
    } 
} 

をそしてあなたは、このようにCSV出力を使用したい:

output { 
    csv => { 
    fields => ["field1","field2","field3","field4","field5","field6","field7","field8","field9","field10","field11","field12","field13","field14"] 
    } 
} 
+0

コードをありがとうが、logstash 5.1.1で問題が発生しました。私の質問が更新されました – Seeker

+0

UNIXスタイルのファイル名と私のMac上で実行すると、何も問題がないので、構文エラーはありませんあなたは持っている。また、csv出力のフィールドを特定の名前リストに更新した場合、grokパターンの同じ名前に一致するようにトップパターンを更新する必要があります。 – Alcanzar

+0

grokパターンの名前を変更して質問を更新しましたが、出力は同じ変更なしです。 – Seeker

関連する問題