2016-03-26 13 views
0

私は、IISは、私はエラーの下になっていると私は、ANSI形式を使用してログファイルを解析していた場合、何も作業LogstashがあるUTF-8形式のログファイルを解析していますコンソール "Logstash startup completed"にメッセージを表示するだけです。私のサーバー上には約1000のファイルがありますが、各ファイル形式をANSIからUTF-8に変更することはできません。設定ファイルを変更する必要がある場所で助けてください。また、UTF-8形式のファイルを解析しているときにデバッグファイルを添付しています。私は同じボックスとその完全に正常に動作して弾性検索を使用しています。私はまた、127.0.0.1で9200番のtelnetに接続できます。logstash-2.2.2、窓、IISログファイル形式

ログサンプル:

2016-03-26T05:40:40.764Z WIN-AK44913P759 2016-03-24 00:16:31 W3SVC20 ODSANDBOXWEB01 172.x.x.x GET /healthmonitor.axd - 80 - 172.x.x.x HTTP/1.1 - - - www.xyz.net 200 0 0 4698 122 531 

のstdout出力:

以下
{ 
    "message" => "2016-03-24 04:43:02 W3SVC20 ODSANDBOXWEB01 172.x.x.x GET /healthmonitor.axd - 80 - 172.x.x.x HTTP/1.1 - - - www.xyz.net 200 0 0 4698 122 703\r", 
    "@version" => "1", 
    "@timestamp" => "2016-03-26T05:42:15.045Z", 
    "path" => "C:\\IISLogs/u_ex160324.log", 
    "host" => "WIN-AK44913P759", 
    "type" => "IISLog", 
    "tags" => [ 
    [0] "_grokparsefailure" 
    ] 
} 

私logstash confファイルの設定が

ある
input { 
    file { 
    type => "IISLog" 
    path => "C:\IISLogs/u_ex*.log" 
    start_position => "beginning" 
    } 
} 
filter { 
    #ignore log comments 
    if [message] =~ "^#" { 
    drop {} 
    } 
    grok { 
    match => ["message", "%{TIMESTAMP_ISO8601:log_timestamp} %{WORD:iisSite} %{IPORHOST:site} %{WORD:method} %{URIPATH:page} %{NOTSPACE:querystring} %{NUMBER:port} %{NOTSPACE:username} %{IPORHOST:clienthost} %{NOTSPACE:useragent} %{NOTSPACE:referer} %{NUMBER:response} %{NUMBER:subresponse} %{NUMBER:scstatus} %{NUMBER:bytes:int} %{NUMBER:timetaken:int}"] 
    } 
    #Set the Event Timesteamp from the log 
    date { 
    match => [ "log_timestamp", "YYYY-MM-dd HH:mm:ss" ] 
    timezone => "Etc/UCT" 
    } 
    useragent { 
    source=> "useragent" 
    prefix=> "browser" 
    } 
    mutate { 
    remove_field => [ "log_timestamp"] 
    } 
} 
# output logs to console and to elasticsearch 
output { 
    stdout {} 
    elasticsearch { 
    hosts => ["127.0.0.1:9200"] 
    } 
    stdout { 
    codec => rubydebug 
    } 
} 

答えて

0

_grokparsefailureタグは、あなたのGROKパターンが一致しなかったことを意味しあなたの入力。最初の2つのフィールドをスキップするパターンを考えているようですが、これは問題ありません。

そして、次の四つのフィールドを見て、私は次を参照してください。

2016-03-24 00:16:31 W3SVC20 ODSANDBOXWEB01 172.1.1.1 

が、あなたのパターンはODSANDBOXWEB01が起こっているので、あなたはIPアドレス(計上していない

%{TIMESTAMP_ISO8601:log_timestamp} %{WORD:iisSite} %{IPORHOST:site} %{WORD:method} 

を探しています[サイト]に)。 GROKパターンを構築

は意図的、反復的なプロセスです。 debuggerから始めてください。サンプル入力行を入力して、一度に1つずつgrokパターンを追加してください! - 行全体が一致するまで

また、あなたのデータを難読化する場合、有効なデータとしてそれを残してください。 ipを172.x.x.xに変更すると、あなたが何をしたのかわからなくても、%{IP}パターンと一致しなくなります。この例では172.1.1.1に変更しました。

+0

こんにちはアラン、更新のためのThansk。私の場合、172.x.x.xは通常のIPアドレス形式です。 Grokパターンを構築するための助けはありますか?私はElastic search&logstashで少し新しいです。 – Gparmar

+0

私は172.x.x.xの意味を知っていましたが、その入力は%{IP}と決して一致しないので、あなたのパターンをデバッグするための作業を手伝ってくれる人たちを作ってください。他の有効なIPに変更した場合は、デバッグが容易になります。 grokの学習に関しては、ここから始めてください:http://svops.com/blog/introduction-to-logstash-grok-patterns/ –