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

1概要

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

リンク:/tomcat-jmx-elastic-stack[以前の記事]では、Elastic Stackの設定とそこへのJMXデータの送信に焦点を当てました。

2ログバックを設定する

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

<appender name="STASH" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logback/redditApp.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>logback/redditApp.%d{yyyy-MM-dd}.log</fileNamePattern>
        <maxHistory>7</maxHistory>
    </rollingPolicy>
    <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<root level="DEBUG">
    <appender-ref ref="STASH"/>
</root>

ご了承ください:

  • 私たちは、を使って毎日のログを別々のファイルに保存します。

RollingFileAppender with TimeBasedRollingPolicy (詳細については アペンダリンク:/java-logging-rolling-file-appenders[ここ]) ** maxHistory を設定して、1週間(7日)だけ古いログを保存します。

7まで

また、https://github.com/logstash/logstash-logback-encoder[ LogstashEncoder ]を使用してJSON形式にエンコードしていることにも注目してください。これはLogstashでより簡単に使用できます。

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

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>4.11</version>
</dependency>

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

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は今回ロギングからログを読み込むので** input file が使用されます。

ファイル ** path は、ロギングディレクトリと.logを持つすべてのファイルに設定されます

拡張子が処理されます ** index は、新しいインデックス「logback - %\ {YYYY.MM.dd}」に設定されます。

デフォルト“ logstash - %\ {YYYY.MM.dd}”

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

bin/logstash -f logback.conf

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

ログバックデータは、 ' logback - ** 'インデックスで確認できます。

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

type:logback

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

  • [視覚化]タブに移動します

  • [縦棒グラフ]を選択します

  • [保存した検索から]を選択します

  • 先ほど作成した[Logback logs]検索を選択します。

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

X軸の場合は、次のように選択します。

  • 集計:__条件

  • フィールド: level

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

5結論

この記事では、私たちのシステムでLogstashを設定して、それが生成するログ・データをElasticsearchにプッシュし、そのデータをKibanaの助けを借りて視覚化することの基本を学びました。