JavaアプリケーションのログをElastic Stack(ELK)に送信する

JavaアプリのログをElastic Stack(ELK)に送信する

1. 概要

このクイックチュートリアルでは、アプリケーションログをElastic Stack(ELK)に送信する方法について段階的に説明します。

earlier articleでは、ElasticStackのセットアップとJMXデータの送信に焦点を当てました。

2. ログバックを構成する

FileAppenderを使用してアプリログをファイルに書き込むようにLogbackを構成することから始めましょう。


    logback/redditApp.log
    
        logback/redditApp.%d{yyyy-MM-dd}.log
        7
    
    


    

ご了承ください:

  • RollingFileAppenderTimeBasedRollingPolicyを使用して、毎日のログを個別のファイルに保存します(このアペンダーhereの詳細)

  • maxHistoryを7に設定することで、古いログを1週間(7日間)だけ保持します

また、LogstashEncoderを使用してJSON形式にエンコードする方法にも注目してください。これはLogstashで簡単に使用できます。

このエンコーダーを利用するには、pom.xmlに次の依存関係を追加する必要があります。


    net.logstash.logback
    logstash-logback-encoder
    4.11

最後に、アプリにログディレクトリにアクセスする権限があることを確認しましょう。

sudo chmod a+rwx /var/lib/tomcat8/logback

3. Logstashを構成する

次に、アプリによって作成されたログファイルからデータを読み取り、ElasticSearchに送信するようにLogstashを構成する必要があります。

構成ファイルlogback.confは次のとおりです。

input {
    file {
        path => "/var/lib/tomcat8/logback/*.log"
        codec => "json"
        type => "logback"
    }
}

output {
    if [type]=="logback" {
         elasticsearch {
             hosts => [ "localhost:9200" ]
             index => "logback-%{+YYYY.MM.dd}"
        }
    }
}

ご了承ください:

  • Logstashは今回ログファイルからログを読み取るため、入力fileが使用されます

  • pathがログディレクトリに設定され、拡張子が.logのすべてのファイルが処理されます

  • indexは、デフォルトの「logstash-%\ {+ YYYY.MM.dd}」ではなく、新しいインデックス「logback-%\ {+ YYYY.MM.dd}」に設定されます。

新しい構成でLogstashを実行するには、以下を使用します。

bin/logstash -f logback.conf

4. Kibanaを使用してログを視覚化する

これで、ログバックデータが ‘logback-*‘インデックスに表示されます。

次のクエリを使用してログバックデータを確実に分離するために、新しい検索「ログバックログ」を作成します。

type:logback

最後に、Logbackデータの簡単な視覚化を作成できます。

  • 「視覚化」タブに移動します

  • 「縦棒グラフ」を選択します

  • 「保存済み検索から」を選択します

  • 作成した「ログバックログ」検索を選択します

Y軸の場合は、必ず集計を選択してください:Count

X軸の場合、次を選択します。

  • 集計:Terms

  • フィールド:level

視覚化を実行すると、レベルごとのログの数を表す複数のバー(DEBUG、INFO、ERROR、…)が表示されるはずです。

5. 結論

この記事では、システムでLogstashをセットアップして、生成するログデータをElasticsearchにプッシュする基本を学び、Kibanaを使用してそのデータを視覚化しました。