0
0

More than 3 years have passed since last update.

Elastic StackをDocker上で実行してログモニタリングサービスを作成するまで - デモ編

Last updated at Posted at 2021-06-28

背景

細かいことはいいからとりあえず動かしてみたい!という方向けです。
完成品をこちらで用意しているので、それを動かしてみるデモを行っていきます。

できること

この投稿はどのように作っていくかシリーズ化しているシリーズ記事の番外編になります!
ほかの記事もよろしければぜひご覧ください。

  1. Elasticsearch編: ElasticsearchをDocker上で起動して、実際に動かしてみる
  2. Kibana編: KibanaをDocker上で起動して、データを可視化してみる
  3. Filebeat編: Filebeatを利用して、ログファイルをKibanaで表示してみる
  4. Spring Boot編: 簡単なSpring Webアプリケーションをローカルで実行、ログを作成してそれをKibanaで可視化する

デモ編: とりあえず完成品を動かしてみる

手順

1. インストール
それでは早速このプロジェクトをダウンロードしていきます。
まずはterminalに行って以下の様にプロジェクトをクローンしましょう。
その後ルートディレクトリまで移動し、docker-composeでElastic Stackを起動させてください。

git clone https://github.com/sgr0416st/elastic-docker-demo.git
cd elastic-docker-demo
docker-compose up --build

2. Spring Bootアプリケーションの起動
次は、project内にlogging-demoというサブプロジェクトが存在するはずなのでこれをお好みのIDEで開いてみましょう。(mavenコマンドを利用してJarを直接buildして実行してもらう方法でも構いません)。
これはmavenで管理されたSpring Bootアプリケーションとなっており、http://localhost:8080 にアクセスするとyyyy-MM-ddThh:mm:ss.SSS: return responseというフォーマットで現在時刻のログをlogs/logging-demo.log に出力し、Hello, worldという文字列を返す簡単なエンドポイントを持っています。

今は、起動したらlogs/フォルダ内にlogging-demo.logというファイルがきちんと生成できているかどうかだけ確認して次に進んでください。

3. 実行されているか確認する
その後、filebeatがログを読み込んでElasticsearchにデータを送信できているか確認するために、filebeatによって作成されたインデックスパターンのログが存在するか検証するリクエストを送ってみましょう。
以下のコマンドを新しいターミナルから入力して実行してみてください。

curl -XGET "http://localhost:9200/filebeat-*/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match_all": { }
  },
  "sort": [
    {
      "@timestamp": "desc"
    }
  ]
}'

以下の様なレスポンスが返ってきたら成功です。

{
  "took" : 4,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 4,
      "relation" : "eq"
    },
  ...

4. Kibanaでログデータを表示する
次に、初回のみKibanaに手動でindex patternを登録する必要があるので、Kibana (http://localhost:5601) にアクセスして、ホーム左上のアイコンからStack Management > Index Patterns へと進んでCreate Index Patternを選択してください。
kibana index pattern registration.pngkibana index pattern registration2.png

次に、"sel"の欄にfilebeat-*と選択して次へ進んでください。
kibana index pattern registration3.png

その後、time fieldの欄のドロップダウンから@timestampを選択し、index patternを作成してください。
kibana index pattern registration4.png

これで無事準備が整ったので、メニューからAnalytics > Discoverへと進みましょう。
kibana index pattern registration5.png

左にあるドロップダウンから作成されたindex patternが選択されていることを確認します。
その後、検索範囲をfilebeatを実行した日の0:00 ~ 翌日の0:00に設定して再検索してみましょう。
kibana index pattern registration6.png

search result.png

そこまできたら、検索窓にreponseと打ち込んでrefreshしてみましょう。
このキーワードに一致するログはまだ見つからないはずです。

response.png

最後に、http://localhost:8080 にアクセスしてみましょう。
すると、アプリケーション側で yyyy-MM-ddThh:mm:ss.SSS: return response というようなフォーマットのログが生成され、それがKibanaに反映されるはずです。30秒程待って、もう一度Kibanaを開きrefreshボタンをクリックしてみましょう。(デフォルトではfilebeatがログを読みこむ時間は30秒おきになっています)

final result.png

この様に検索結果が変わって新しいログを取得できた方、おめでとうございます!!
これで、Elastic StackをDocker上で動かしてSpring Bootアプリケーションのログをモニタリングする方法を体験できたと思います。
自分で最初から作ってみたい場合は、是非このシリーズの他の記事もみてみてください!

最後にコンテナを消去して綺麗にしておきましょう。

docker-compose down -v --rmi local

完成プロジェクトURL

0
0
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
0
0