1. 概要
このクイックチュートリアルでは、アプリケーションログをElastic Stack(ELK)に送信する方法について段階的に説明します。
以前の記事では、ElasticStackのセットアップと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とTimeBasedRollingPolicyを使用して、毎日のログを別のファイルに保存します(このアペンダーの詳細)
- maxHistory を7に設定することで、古いログを1週間(7日間)だけ保持します
また、 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がログファイルから今回ログを読み取るために使用されます
- path がロギングディレクトリに設定され、拡張子が.logのすべてのファイルが処理されます
- index は、デフォルトの「logstash-%{+ YYYY.MM.dd}」ではなく、新しいインデックス「logback-%{+YYYY.MM.dd}」に設定されます
新しい構成でLogstashを実行するには、次を使用します。
bin/logstash -f logback.conf
4. Kibanaを使用してログを視覚化する
これで、ログバックデータが「logback-*」インデックスに表示されます。
次のクエリを使用してログバックデータを確実に分離するために、新しい検索「ログバックログ」を作成します。
type:logback
最後に、ログバックデータの簡単な視覚化を作成できます。
- [視覚化]タブに移動します
- 「垂直棒グラフ」を選択します
- [保存された検索から]を選択します
- 作成した「ログバックログ」検索を選択します
Y軸の場合は、必ず[集約]を選択してください:カウント
X軸には、次を選択します。
- 集計:用語
- フィールド:レベル
視覚化を実行すると、レベルごとのログの数を表す複数のバーが表示されます(DEBUG、INFO、ERROR、…)
5. 結論
この記事では、システムにLogstashを設定して、生成されたログデータをElasticsearchにプッシュし、Kibanaを使用してそのデータを視覚化する基本を学びました。