ログを表示するための新しいアプローチ

かつて、私はログをたくさん扱う必要がありました。それらは大きく、異なるサーバー上にある可能性があります。特定のものを見つけるのではなく、システムが正常に動作しない理由を理解する必要がありました。何らかの理由で、ログアグリゲーターがありませんでした。





Linuxコンソールのlessコマンドのように、ローカルマシンにダウンロードせずに、いつでもファイルを開くことができるログビューアが必要でした。しかし同時に、IDEのように便利なテキストの強調表示があり、さまざまなパラメーターでレコードをフィルタリングする必要があります。フィルタリングと検索は、grepのように行ではなく、ログ内のイベントによって機能する必要があります。これは、スタックトレースのエラーなど、複数行のエントリがある場合に重要です。また、ファイルが異なるノードにある場合でも、1つのページで複数のファイルのレコードを一度に表示し、タイムスタンプに従ってそれらをフリーズすることができるはずです。





そして、私はそのようなユーティリティを作る方法を考え出しました!





Log Viewer - web-, , , Web . , , , , . . 





  « ?   c ».  , , 1 3,5, .  , ,   ,  ,     ,     .   .





, ; severity , .





  , , «+» «…» ,   ,  ,   .  .       . Java IDE.





: «~.SecurityManager». ,   «~».





, . , . , Ctrl+C, , .





, , , :





. , , . . , severity, UI :





Severity filter





  . ,   «    ».      ,   . ,     .









    « » « »,   .  .





JavaScript. true false.





JavaScript
function isVisibleEvent(text, fields) {
    var match = text.match(/Task completed, elapsed time: (\d+)ms$/)
    if (!match)
        return false // Don't show events not matched the pattern
        
    var time = parseInt(match[1])

    return time > 500 // Show only events where elapsed time is more than a threshold
}
      
      











, . , , . , , , .





URL, .





,

-  —  ,    ,       , , ,   ,  ..





, .





, . , . . , . . log4j, logback . , — issue GitHub, .





 — .     «.log»   ,       .     :





logs = [
  {
    path: "/opt/my-app/logs/*.log"
  },
  {
    path: ${HOME}"/work/**"
  }
]
      
      



.log /opt/my-app/logs ~/work .





GitHub.





,    — ,   .   ,         . ,     Log Viewer. web UI    , ,  Log Viewer   LogViewer .       - .





. , ,   «  N », N —  .  ,  N   . ,   «  N    T», T —  .    . ,   .  , / T,  ,     . ,   .    .





  ,  UI   ,   URL   :

http://localhost:8111/log?path=/opt/my-app/logs/a.log@hostname1&path=/opt/my-app/logs/b.log@hostname1&path=/opt/my-app/logs/c.log@hostname2

"path" , "@" ,     . . "@"  —   .     URL,  ,   log-paths = { … }



.





Log Viewer   Java Web , . .  Maven/Gradle    spring context. , log viewer        .   UI  /logs,   .  Log4j  Logback.





, — discussions GitHub.





, . , . , , .





UI. , JSON, , . severity , .





サーバーのポートを開いてログを表示する方法がない場合があります。SSHアクセスしかありません。SSH経由で作業をサポートできます。Web UIはローカルマシンで起動し、SSH経由でサーバーに接続し、そこで特別なエージェントを起動します。エージェントは、入力ストリームを介してコマンドを受け入れ、出力ストリームを介してログの必要な部分を返します。





フィードバックをお待ちしております。





GitHubのプロジェクト:https//github.com/sevdokimov/log-viewer








All Articles