Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Docker Composeファイルの設定 | DevOpsにおけるモニタリング&ロギング
DevOps入門

bookDocker Composeファイルの設定

メニューを表示するにはスワイプしてください

すべての必要な設定FilebeatLogstashFlaskアプリケーション)が整ったので、これらをまとめて1つのシステムとして実行します。そのために、Docker Composeを使用します。

Note
定義

Docker Composeは、すべての必要なコンテナを1つのYAMLファイルで定義し、1つのコマンドで実行できるツール。

各サービスごとに個別のdocker runコマンドを書く代わりに、docker-compose.ymlに設定を記述し、すべてをまとめて実行できます。

シンプルなdocker-compose.ymlファイルの例は次のとおりです:

docker-compose.yml

docker-compose.yml

copy

それでは、各コンテナについて説明しながら、ファイル全体を段階的に作成していきます。

Flaskアプリケーション

ログを生成するメインアプリケーション。

docker-compose.yml

docker-compose.yml

copy

このブロックは、Docker に現在のフォルダー(Dockerfile が存在する場所)からコンテナをビルドするよう指示します。

コンテナ名は flask-app です。 volumes 行はローカルの ./logs フォルダーをコンテナ内の /logs に接続します。これにより、アプリケーションによって作成されたすべてのログがコンテナ内とコンピュータの両方に保存されます。

アプリケーションはコンテナ内でポート 5000 で実行されますが、マシンのポート 5050 にマッピングされるため、ブラウザで http://localhost:5050 からアクセスできます。

Filebeat

Filebeat は、ログファイルを監視し、新しいエントリを Logstash に送信するエージェントとして機能します。

docker-compose.yml

docker-compose.yml

copy

Filebeat は公式の 8.15.0 イメージから実行されます。 root ユーザーとして実行されるため、ログファイルを読み取る権限があります。

./logs フォルダーを読み取り専用モードでアタッチし、filebeat.yml 設定ファイルもマウントします。これにより、Filebeat が監視するログと送信先が指定されます。 depends_on により、アプリケーションと Logstash が起動した後にのみ Filebeat が開始されます。

Logstash

LogstashFilebeat からログを受信し、(例えば JSON のパースなど)処理を行い、Elasticsearch へ転送します。

docker-compose.yml

docker-compose.yml

copy

このコンテナは公式のLogstashイメージを使用。

logstash.conf設定ファイルをマウントし、Logstashに受信ログの処理方法を指示。 コンテナはElasticsearchが起動した後にのみ開始され、処理済みログの保存先が必要。

ポート5044を公開し、FilebeatがデータをLogstashに送信可能。

Elasticsearch

Elasticsearchはログをドキュメントとして保存し、高速な検索を実現。

docker-compose.yml

docker-compose.yml

copy

公式の Elasticsearch イメージバージョン 8.15.0 を使用。

  • discovery.type=single-node は、シングルノードクラスター(ローカルテストに十分)で実行していることを指定。
  • xpack.security.enabled=false はセキュリティを無効化し、ユーザー名やパスワードの設定が不要。
  • ES_JAVA_OPTSJava プロセスのメモリ使用量を制限。

サービスはポート 9200http://localhost:9200 からアクセス可能。

Kibana

KibanaElasticsearch 用のウェブインターフェース。ログの可視化やダッシュボードの作成に利用。

docker-compose.yml

docker-compose.yml

copy

公式のKibanaイメージを使用。

ポート5601が公開されているため、ブラウザでhttp://localhost:5601からKibanaにアクセス可能。

ELASTICSEARCH_HOSTSKibanaElasticsearchコンテナに接続し、データを取得・表示するための設定。

最終的なdocker-compose.yml

すべてのサービスが正しい順序で接続された、完全なDocker Composeファイル。

docker-compose.yml

docker-compose.yml

copy

この docker-compose.yml は、すべてのサービスを正しい順序で起動します。Flask アプリケーションがログを生成し、Filebeat がそれらを収集して Logstash に送信します。Logstash はログを処理し、Elasticsearch に転送します。Kibana はデータの閲覧と分析のためのウェブインターフェースを提供します。

残る作業はシステムを実行し、テストすることだけです。これについては次の章で説明します。

1. この構成における Docker Compose の主な目的は何ですか?

2. Flaskアプリケーションからログファイルを収集し、Logstashに送信する役割を担うサービスはどれか?

question mark

この構成における Docker Compose の主な目的は何ですか?

正しい答えを選んでください

question mark

Flaskアプリケーションからログファイルを収集し、Logstashに送信する役割を担うサービスはどれか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  5

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  5
some-alt