2016-06-27 8 views
3

WebSphereサーバーから「履歴」例外ログをすべて読み込み、Hiveにロードする必要があります。 以下は典型的なログの様子ですが、メッセージ行は4〜5行まで拡張されることもあります。私は本当にスタックトレースは気にしませんが、タイムスタンプ、ThereadId、ショートネーム、イベントタイプ、フルエラーメッセージがそれぞれの列に必要です。Javaサーバー例外ログの解析

[5/20/16 22:35:39:841 CDT] 00233723 SystemOut  O 22:35:39,840 ERROR [com.xxx.app.yyy.hms.jms.receivers.impl.B2bTonnn278InReceiverImpl] 
xxxRuntimeException{errorVO=com.xxx.app.yyy.nnn.mmm.data.mmmCompleteIntakeErrorVO(diagnosesMessagesExist:false, mmmMessagesExist:false, incrementedKey:null, numPagesWithMessages:1, primaryKeyFields:[], providersMessagesExist:false, requiredFields:[], servicesMessagesExist:true, changeDateTime:05-20-2016 10:35:39:840 PM CDT, changeUserID:SYSTEM, createDateTime:null, createUserID:null, dataSecured:false, dataSecurityTypeList:null, globalMessages:[], historyID:0, messages:{procedureUnitCount=[Field For Label: procedureUnitCount Message ID: 'ERR0010', Message Arguments: '[]']}, trackChanges:false, updateVersion:-1, messages={procedureUnitCount=[Field For Label: procedureUnitCount Message ID: 'ERR0010', Message Arguments: '[]']})} 
    at com.xxx.app.yyy.nnn.mmm.businesslogic.impl.mmmImpl.completemmm(mmmImpl.groovy:612) 
    at sun.reflect.GeneratedMethodAccessor4988.invoke(Unknown Source) 

Iは、一度に1行を読み取り、正規表現を使用して解析することによってこれを行う試み - (データの20%のみが正規表現を満たし)悲惨に失敗し、その品質も悪くなります。私は実際にここで進めていくことを知りませんし、列にその例外文字列を分割するためにどの区切り文字を選択するのかは分かりません。\ 012

答えて

1

Logstashを使用してWebSphereログを読み込んで解析し、さらに処理するためにElasticsearchに投稿します(つまりELK Stackを使用)。

続きを読むhereを読んでください。

Logstashを使用すると、Grokを使用して、不格好な構造化されていないログデータを構造化されクエリ可能なものに解析できます。

+0

申し訳ありません、私はそれを使用するためにアカウントを作成する必要があります - それは無料ではありません。 – Rohit

1
grep -A 1 SystemOut LogFile | awk 'NR%3{printf $0" ";next;}2' | awk '{print $2" "$4" "$8" "$10}'