LoginSignup
2
3

More than 5 years have passed since last update.

Windows環境でFluentd+Elasticsearch+kibanaでアクセスログの可視化

Last updated at Posted at 2018-12-20

やりたいこと

Windows7 環境でアプリケーションのアクセスログをKibanaで可視化できるようにしてみたので、メモを書きます。

以下の方にお役に立れば幸いです。
* Spring bootを利用してアプリをできた状態
* サーバはTomcatを利用しています
* アプリの可視化をしていきたい

現時点のソフトのバージョンリスト
* Java 1.8
* Spring Boot 2.1.0
* Tomcat 9
* td-agent 3.2.1
* elasticsearch 6.5.3
* kibana 6.5.3

※ 初めて記事を書きますので、ご不明点、アドバイスがあれば、ぜひコメントしてください!

アプリ可視化のために、アクセスログ出力の設定

Spring bootからtomcatアクセスログ出力に関して、fintanの記事を参考しました。

画面やAPIでTomcatのアクセスログを出力する

logback-access.xmlは以下のように設定しました。

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>./log/access.log</file>
       <encoder>
          <pattern>host:%h&#9;timeLog:%t{yyyy/MM/dd HH:mm:ss}&#9;user:%u&#9;method:%m&#9;uri:%U%q&#9;protocol:%H&#9;status:%s&#9;thread:%I</pattern>
       </encoder>
</appender>

実際出力されたログ(LTSV形式):

host:127.0.0.1  timeLog:2018/12/16 17:35:07 user:user1@example.com  method:GET  uri:/questions/94   protocol:HTTP/1.1   status:200  thread:http-nio-8080-exec-4
host:127.0.0.1  timeLog:2018/12/16 17:35:07 user:user1@example.com  method:GET  uri:/questions/94   protocol:HTTP/1.1   status:200  thread:http-nio-8080-exec-4
host:127.0.0.1  timeLog:2018/12/16 17:35:07 user:user1@example.com  method:GET  uri:/questions/94   protocol:HTTP/1.1   status:200  thread:http-nio-8080-exec-4
host:127.0.0.1  timeLog:2018/12/15 17:35:07 user:user1@example.com  method:GET  uri:/questions/94   protocol:HTTP/1.1   status:200  thread:http-nio-8080-exec-4
host:127.0.0.1  timeLog:2018/12/15 17:35:07 user:user2@example.com  method:GET  uri:/questions/94   protocol:HTTP/1.1   status:200  thread:http-nio-8080-exec-4
host:127.0.0.1  timeLog:2018/12/15 17:35:07 user:user3@example.com  method:GET  uri:/questions/94   protocol:HTTP/1.1   status:200  thread:http-nio-8080-exec-4
host:127.0.0.1  timeLog:2018/12/15 17:35:07 user:user4@example.com  method:GET  uri:/questions/94   protocol:HTTP/1.1   status:200  thread:http-nio-8080-exec-4
...

環境構築

Fluentdのインストール

Fluentdのインストールはホームページからダウンロードします。

Installing Fluentd using .msi Installer (Windows)

上記リンクのStep 2まで動作確認ができればOKです。

Elasticsearchのインストール

Elasticsearchのインストールはホームページから最新のバージョンをダウンロードします。

Zipファイルを展開します。

展開先の参考例 C:\tool\elasticsearch-6.5.3

elasticsearchの起動ファイル C:\tool\elasticsearch-6.5.3\bin\elasticsearch.bat

動作確認

Elasticsearchを起動し、ブラウザで http://localhost:9200 を開くと、Elasticsearchの情報を表示できればOKです。

120.png

Kibanaのインストール

KibanaのインストールはElasticsearchと同じホームページから最新のバージョンをダウンロードします。

KibanaのバージョンはElasticsearchのバージョンと合わせた方がいいです。
違うバージョンで一部の機能が利用できないの可能性があります。

展開先の参考例

C:\tool\kibana-6.5.3
kibanaの起動ファイル C:\tool\kibana-6.5.3\bin\kibana.bat

動作確認

Kibanaを起動し、ブラウザで http://localhost:5601 を開くと、GUI 画面が表示できればOKです。

111.png

Fluentdの設定

設定はtd-agent.confファイルで行います。

C:\opt\td-agent\etc\td-agentの下にあります。

<source>
  @type tail
  path C:\****\log\access.log  ← 読込対象ファイルのパス
  pos_file C:\opt\td-agent\log\access.log.pos  ← 読み込んだポジションの格納先
  tag sample   ← 読み込んだ内容にsampleタグを付ける
  format ltsv  ← ログデータの形式に合わせる
</source>

<match sample>  ← マッチ対象はsampleタグ
  @type elasticsearch ← Elasticsearchに送信するため
  host localhost
  port 9200
</match>

ElasticsearchとKibanaの設定

ElasticsearchとKibanaの設定について、今回はローカル環境で実施するため、デフォルドの設定はいいです。

elasticsearch-6.5.3\config\elasticsearch.yml  ← elasticsearchの設定ファイル

kibana-6.5.3\config\kibana.yml  ← kibanaの設定ファイル

可視化

環境構築をした上、作ったアプリにアクセスすると、Elasticsearchにデータが入るようになるので、Kibanaの「Management」→「Index Patterns」→「Create index pattern」で「fluentd」のインデックスを選択して、
「Configure settings」を「timelog」に設定して、「Create index pattern」を押下します。

それで、「fluentd」というインデックスがKibanaのDiscoveryで見えます。

ログデータのグラフ化はKibanaのvisualzeで設定しますが、今回は省略します。

111.jpg

112.jpg

113.jpg

豆知識

Elasticsearchはインデックスに登録するデータのうち、日付としてフォーマットされているフィールドを自動でdate型にマッピングします。詳細はここに参照してください。

上記で出力されたアクセスログの「timeLog」の項目について、 Elasticsearchが日付として、自動認識してくれてます。

また、今回の実施環境では、以下のように各プロダクト、データのTimezoneがずれた状態で実施してしまったため、Kibanaでうまく表示できない問題が発生しました

  • インデックスに登録したデータ → JST
  • Elasticsearch → UTC
  • KibanaのTimezone → JST

この状態でデータを登録し、Kibanaで表示すると、アクセスログの時間が日本時間とは異なる時刻で表示されてしまいました。

解決方法:
Kibanaの「Timezone for date formatting」設定を変更します。

変更場所:「Management」→「Advanced Settings」→「Timezone for date formatting」
変更内容:デフォルトの「browser」→「Etc/UTC」に変更

参照

Apacheのアクセスログを、FluentdでtailしてElasticsearchに放り込む

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3