1.はじめに


Graloglog

はログ集約サービスです。簡単に言うと、複数のソースから何百万ものログメッセージを収集し、それらを単一のインターフェースに表示することができます。

また、リアルタイムアラート、グラフやチャートを含むダッシュボードなど、その他多数の機能もあります。

このチュートリアルでは、Graylogサーバーを設定し、Spring Bootアプリケーションからログメッセージを送信する方法を説明します。

2. Graylogを設定する

Graylogをインストールして実行するにはいくつかの方法があります。このチュートリアルでは、2つの最も早い方法、DockerとAmazon Web Servicesについて説明します。

2.1. 港湾労働者

次のコマンドは、必要なDockerイメージをすべてダウンロードし、各サービスのコンテナを起動します。

$ docker run --name mongo -d mongo:3
$ docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
    -e ES__JAVA__OPTS="-Xms2g -Xmx4g" \
    -e "discovery.type=single-node" -e "xpack.security.enabled=false" \
    -e "bootstrap.memory__lock=true" --ulimit memlock=-1:-1 \
    -d docker.elastic.co/elasticsearch/elasticsearch:5.6.11
$ docker run --name graylog --link mongo --link elasticsearch \
    -p 9000:9000 -p 12201:12201 -p 514:514 -p 5555:5555 \
    -e GRAYLOG__WEB__ENDPOINT__URI="http://127.0.0.1:9000/api" \
    -d graylog/graylog:2.4.6-1

Graylogダッシュボードは、URL


http://localhost:9000/


を使用して利用可能になり、デフォルトのユーザー名とパスワードは両方とも

admin

です。

Dockerの設定は最も簡単ですが、かなりの量のメモリを必要とします。 Docker for Macでも動作しないため、すべてのプラットフォームに適しているとは限りません。

2.2. アマゾンウェブサービス

テスト用にGraylogをセットアップするための次の最も簡単なオプションは、Amazon Web Servicesです。 ** Graylogは、インストール後に追加の設定を必要としますが、必要なすべての依存関係を含む公式のAMIを提供します。


ここ

をクリックして地域を選択すると、Graylog AMIを使用してEC2インスタンスをすばやくデプロイできます。 ** Graylogは少なくとも4GBのメモリを持つインスタンスを使用することを推奨します。

インスタンスが起動したら、ホストにSSH接続していくつか変更を加える必要があります。次のコマンドは、Graylogサービスを設定します。

$ sudo graylog-ctl enforce-ssl
$ sudo graylog-ctl set-external-ip https://<EC2 PUBLIC IP>:443/api/$ sudo graylog-ctl reconfigure

また、EC2インスタンスで作成されたセキュリティグループを更新して、特定のポートのネットワークトラフィックを許可する必要があります。以下の図は、有効にする必要があるポートとプロトコルを示しています。

Graylogダッシュボードは、URL


https://<EC2

PUBLIC IP>/

を使用して利用できるようになり、デフォルトのユーザー名とパスワードはどちらも

admin

です。

2.3. 他のGraylogインストール

DockerとAWS以外にも、さまざまなオペレーティングシステム用のhttp://docs.graylog.org/en/latest/pages/installation/operating

system

packages.html#operating-system-packages[Graloglog packages]があります。 ** このアプローチでは、ElasticSearchとMongoDBサービスも設定する必要があります。

このため、DockerとAWSは、特に開発とテストの目的でセットアップがはるかに簡単です。

3.ログメッセージを送信する

Graylogが稼働したら、Spring Bootアプリケーションを設定してログメッセージをGraylogサーバに送信する必要があります。

どのJavaロギングフレームワークも、GELFプロトコルを使用してGraylogサーバへのメッセージ送信をサポートできます。

3.1. Log4J

現時点で唯一公式にサポートされているロギングフレームワークはLog4Jです。

Graylogはアペンダーを提供しています。

これを有効にするには、

pom.xml

ファイルに次のMaven依存関係を追加します。

<dependency>
    <groupId>org.graylog2</groupId>
    <artifactId>gelfj</artifactId>
    <version>1.1.16</version>
</dependency>

Spring Bootスターターモジュールを使用する場合は、ロギングスターターモジュールも除外する必要があります。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

これで

log4j.xml

ファイルに新しいアペンダを定義できます。

<appender name="graylog" class="org.graylog2.log.GelfAppender">
    <param name="graylogHost" value="<GRAYLOG IP>"/>
    <param name="originHost" value="localhost"/>
    <param name="graylogPort" value="12201"/>
    <param name="extractStacktrace" value="true"/>
    <param name="addExtendedInformation" value="true"/>
    <param name="facility" value="log4j"/>
    <param name="Threshold" value="INFO"/>
    <param name="additionalFields" value="{'environment': 'DEV', 'application': 'GraylogDemoApplication'}"/>
</appender>

これにより、すべてのログメッセージがINFOレベル以上のGraylogアペンダに送信されるように設定され、アペンダはそのログメッセージをGraylogサーバに送信します。

3.2. その他のロギングフレームワーク

これらのサードパーティ製ライブラリを利用するときは注意が必要です。

3.3. グレイログコレクターサイドカー

ログ収集のための別のオプションはhttp://docs.graylog.org/en/2.4/pages/collector__sidecar.html[Graylog Collector Sidecar]です。サイドカーは、ファイルコレクターに沿って実行され、ログファイルの内容をGraylogサーバーに送信するプロセスです。

サイドカーは、ログ設定ファイルを変更することが不可能なアプリケーションに最適なオプションです。また、ログファイルをディスクから直接読み取るため、** プラットフォームやプログラミング言語からのログメッセージを統合するためにも使用できます。

4. Graylogでメッセージを見る

Graylogダッシュボードを使用して、ログメッセージが正しく配信されたことを確認できます。フィルタ

source:localhost

を使用すると、上記のサンプル

log4j

configからのログメッセージが表示されます。

5.まとめ

Graylogは多くのログ集約サービスの1つにすぎません。数百万のログメッセージをすばやく検索し、リアルタイムでログデータを視覚化し、特定の条件が満たされたときにアラートを送信できます。

GraylogをSpring Bootアプリケーションに統合するには、ほんの数行の設定と新しいコードなしで必要です。

コードサンプルは、いつものようにhttps://github.com/eugenp/tutorials/tree/master/spring-boot-logging-log4j2[fit on GitHub]にすることができます。