Docker 環境で ELK スタックを構築するにはどうすればよいでしょうか?詳細なチュートリアルと使用分析

Docker 環境で ELK スタックを構築するにはどうすればよいでしょうか?詳細なチュートリアルと使用分析

この記事では、Docker 環境で ELK (Elasticsearch、Logstash、Kibana) スタックを設定する方法について説明します。 ELK は、データをリアルタイムで検索、分析、視覚化するために使用できる人気のオープン ソース ログ分析プラットフォームです。 ELK スタックは、Docker を使用して簡単に構築、展開、管理できます。

1. 準備

始める前に、Docker と Docker Compose をインストールする必要があります。まだインストールされていない場合は、インストール手順については Docker の公式 Web サイトのドキュメントを参照してください。

2. Docker Composeファイルを作成する

Docker Compose を使用して ELK スタックを定義および実行します。 ELK コンテナの構成を指定するには、docker-compose.yml ファイルを作成する必要があります。以下は、ELK スタックの 3 つのコンポーネントを指定する基本的な docker-compose.yml ファイルです。

バージョン: '3'

サービス:
エラスティックサーチ:
イメージ: docker弾力性があるco / elasticsearch / elasticsearch : 7.10 .2
コンテナ名: elasticsearch
環境
-ノード名前= elasticsearch
-発見タイプ=シングルノード
ポート:
- 9200 : 9200
ネットワーク:
-ヘラジカ

ログスタッシュ:
イメージ: docker弾力性があるco /ログスタッシュ/ログスタッシュ: 7.10 .2
コンテナ名: logstash
巻数:
- ./logstash/config:/usr/share/logstash/pipeline/
コマンド: logstash -f /usr/share/logstash/pipeline/logstash.conf
環境
-パイプラインバッチサイズ= 500
-パイプライン労働者= 4
ポート:
- 5000 : 5000
ネットワーク:
-ヘラジカ

キバナ:
イメージ: docker弾力性があるco /キバナ/キバナ: 7.10 .2
コンテナ名: kibana
ポート:
- 5601 : 5601
ネットワーク:
-ヘラジカ

ネットワーク:
ヘラジカ

各サービスの構成が何を意味するのかを段階的に見ていきましょう。

Elasticsearch サービス

ログの保存と検索エンジンとして Elasticsearch を使用します。このサービスでは、Elasticsearch の公式 Docker イメージを使用します。コンテナに elasticsearch という名前を付け、ホストのポート 9200 にマップします。

また、ノード名と単一ノードの検出を指定するために、環境変数にいくつかのパラメータを設定します。これは、複数のノードを実行する場合に便利です。

最後に、サービスを elk というネットワークに接続します。

Logstash サービス

Logstash は、さまざまなソースからデータを受信し、Elasticsearch が読み取れる形式に変換するデータ処理パイプラインです。このサービスでは、Elasticsearch の公式 Docker イメージを使用します。

コンテナに logstash という名前を付け、ホストのポート 5000 にマップします。また、コンテナ内の構成フォルダーをホスト上のフォルダーにマウントします。これにより、コンテナ外で Logstash 構成ファイルを編集できるようになります。

また、バッチ サイズやワーカー スレッドの数などのいくつかのパラメータを環境変数に設定します。これらのパラメータは、Logstash のパフォーマンスを最適化するのに役立ちます。

最後に、サービスを elk というネットワークに接続します。

Kibana サービス

Kibana は、ログ データを視覚化および分析するための Web インターフェースです。このサービスでは、Elasticsearch の公式 Docker イメージを使用します。

コンテナに kibana という名前を付け、ホストのポート 5601 にマッピングします。これにより、Web ブラウザを介して Kibana インターフェースにアクセスできるようになります。

最後に、サービスを elk というネットワークに接続します。

ネットワーク構成

ELK コンテナを接続するために、elk と呼ばれるカスタム ネットワークを使用します。これにより、通信が容易になり、コンテナがパブリック ネットワークに公開されるのを防ぐことができます。

3. Logstash設定ファイルを作成する

Logstash サービスでは、構成ファイルを使用して、ログ データを受信する場所、ログ データを処理する方法、およびログ データを Elasticsearch に送信する方法を指定します。以下は基本的な logstash.conf ファイルの例です。

入力{
TCP {
ポート=> 5000
コーデック=> json
}
}

出力{
エラスティックサーチ
ホスト=> [ "elasticsearch:9200" ]
インデックス=> "logstash-%{+YYYY.MM.dd}"
}
}

この構成ファイルでは、TCP 入力プラグインを使用してポート 5000 からログ データを受信します。また、Logstash が受信した JSON 形式のデータを正しく解析できるように、JSON コーデックも指定します。

次に、Elasticsearch 出力プラグインを使用して、処理されたデータを Elasticsearch に送信します。 Elasticsearch のホストアドレスを指定し、ログインデックスの名前を logstash-YYYY.MM.dd に設定しました。これにより、ログデータを日付別に保存および検索できるようになります。

4. ELKスタックを構築して実行する

docker-compose.yml ファイルと logstash.conf ファイルが準備できたので、ELK スタックをビルドして実行できるようになりました。コマンド ラインで、2 つのファイルが含まれているディレクトリに移動し、次のコマンドを実行します。

 docker -作成する

これにより、ELK スタック内のすべてのコンテナがビルドされ、起動されます。最初の実行時に、Docker は Docker Hub から必要なイメージをダウンロードします。ネットワークの速度によっては、時間がかかる場合があります。

すべてのコンテナが正常に起動したら、Web ブラウザで Kibana インターフェースにアクセスできるようになります。ブラウザで http://localhost:5601 にアクセスするだけです。

5. ログデータをELKスタックに送信する

ELK スタックのセットアップが正常に完了したので、ログ データを ELK スタックに送信する必要があります。

Logstashサービスでは、ポート5000からデータをリッスンするTCP入力プラグインを設定しました。したがって、このポートにログデータを送信できます。Log

Stash は自動的に解析し、Elasticsearch に送信します。

ログ データを ELK スタックに送信する方法の例を次に示します。

ncコマンドを使用してログデータを送信する

Linux システムでは、nc (netcat とも呼ばれる) コマンドを使用して、ログ データを Logstash サービスに送信できます。

まず、次のコマンドを実行して、ホストに nc コマンドをインストールします。

 sudo apt - get を実行してnetcatをインストールします

次に、次のコマンドを使用してログデータを送信します。

 echo '{"メッセージ": "Hello, World!"}' | ncローカルホスト5000

これにより、JSON 形式のログ メッセージが Logstash サービスに送信されます。

Pythonを使用してログデータを送信する

また、Python で簡単なスクリプトを記述して、ログ データを Logstash サービスに送信することもできます。サンプル スクリプトは次のとおりです。

インポートソケット
jsonをインポート

logstash_host = "ローカルホスト"
ログスタッシュポート= 5000

log_data = { "メッセージ" : "Hello, World!" }

log_socket =ソケットソケット(ソケット. AF_INETソケット. SOCK_STREAM )
ログソケットconnect (( logstash_host , logstash_port ))
ログソケット送信( json . dumps ( log_data ). encode ( 'utf-8' ))
log_socket.close ( ) 関数

このスクリプトは、Python のソケット モジュールを使用して Logstash サービスに接続し、ログ データを JSON 形式でポート 5000 に送信します。

6. Kibanaでログデータを表示する

ログ データを ELK スタックに正常に送信できたので、それを Kibana で表示する必要があります。

まず、Web ブラウザを開いて http://localhost:5601 にアクセスします。これにより、Kibana インターフェースが開きます。

Kibana インターフェースで、[Discover] タブを選択します。これにより、すべてのインデックスのログ データが表示されます。

デフォルトでは、Kibana は過去 15 分間のログ データを表示します。時間範囲セレクターを使用して、別の時間範囲を選択できます。

「検出」タブでは、さまざまなフィルターやクエリを使用してログ データをフィルター処理および検索することもできます。

7. まとめ

Docker と ELK スタックを使用することで、強力なログ分析プラットフォームを迅速かつ簡単に構築できます。

この記事では、Docker Compose ファイルを作成して ELK スタック内のさまざまなサービスを定義する方法と、Logstash 構成ファイルを使用してログ データを Elasticsearch に送信する方法について説明しました。

また、Kibana インターフェースを使用してログ データを視覚化および分析する方法と、さまざまなフィルターとクエリを使用してログ データをフィルター処理および検索する方法も学習しました。

この投稿が、ELK スタックとログ分析スペースをすぐに使い始めるのに役立つことを願っています。

8. 参考文献

この記事で使用されている参考文献は次のとおりです。

  • Docker 公式ドキュメント: https://docs.docker.com/
  • ELK スタックの公式ドキュメント: https://www.elastic.co/guide/index.html
  • Docker Compose 公式ドキュメント: https://docs.docker.com/compose/
  • Logstash 構成ガイド: https://www.elastic.co/guide/en/logstash/current/configuration.html
  • Kibana 公式ドキュメント: https://www.elastic.co/guide/en/kibana/current/index.html

9. 結論

この記事の学習を通じて、Docker と ELK スタックを使用して強力なログ分析プラットフォームを構築する方法を学びました。

ELK スタックは、Elasticsearch、Logstash、Kibana の 3 つのコア コンポーネントで構成されています。 Elasticsearch はログ データの保存とインデックス作成に使用され、Logstash はログ データの解析と送信に使用され、Kibana はログ データの視覚化と分析に使用されます。

Docker Compose ファイルを使用して ELK スタック内のさまざまなサービスを定義し、Logstash 構成ファイルを使用してログ データを Elasticsearch に送信します。

最後に、Kibana インターフェースを使用してログ データを視覚化および分析し、さまざまなフィルターとクエリを使用してログ データをフィルター処理および検索する方法を学びました。

この投稿が、ELK スタックとログ分析の世界への入門に役立つことを願っています。

<<:  エッジコンピューティングの予測: サービスプロバイダーが大きな勝者となる

>>:  SFサプライチェーンはアマゾンウェブサービスと提携し、サプライチェーンのインテリジェントな変革とアップグレードを推進

推薦する

SEO のエキスパートと SEO の敗者を分ける 8 つの領域

SEO 業界は標準化されていません。SEO エンジニアの中には、高額の給与を稼ぎ、大規模な Web ...

エッジデータセンターとは何ですか?

エッジ データ センターは、ユーザー クラスターの近くに戦略的に配置された高度な施設です。これらは、...

ライブストリーミング販売がWeChat Momentsを席巻

9月10日、葛世三は「8:15」WeChatビデオ生放送イベントで観客と「セックスレス結婚」について...

エッジコンピューティングが商用 IoT ソリューションの構築にもたらす意味

ガートナーによると、2023年末までに、大企業の50%以上がIoT向けにインストールされた少なくとも...

22Q2 医療美容業界中間レポート

第1四半期を振り返ると、医療美容業界は消費アップグレード路線に属し、浸透度が低く成長率が高い段階にあ...

デジタル変革を背景とした銀行におけるプライベートクラウドの構築に関する簡単な議論

01. 銀行におけるクラウドコンピューティングの発展の背景クラウド コンピューティングは、金融業界の...

負担を軽くするための投資がトレンドになる中、次に打撃を受けるのは56.comだろうか?

インターネットの世界は常に変化しています。アリババによるインタイムへの投資をめぐる論争はまだ収まって...

ZjiNet: 香港葵湾CN2ネットワーク専用サーバー、30%割引、2倍の帯域幅20M、月額450元から

ZjiNet は現在、香港の葵湾データセンターにある香港独立サーバー (シグネチャー製品) のスーパ...

テンセントWeiboのトップ10業界のデータ分析を収集して洞察を得る

私は編集業務に1年以上従事していますが、データ収集や分析は一度もしたことがありません。百度や捜狗で検...

[高速韓国VPS] 2018年最速の速度を誇る韓国VPSのおすすめ、ファイリング不要/直接接続/大容量

韓国のVPSの推奨、高速な韓国のVPS、最速の韓国のVPS、最速の韓国のVPS... 韓国は中国本土...

2014年、レノボ・モバイルは「空約束」を実現できるだろうか?

2014 年 4 月 22 日の午後、オリンピック スポーツ センターの国立オリンピック体育館で、レ...

アリババのクラウドネイティブなビッグデータ運用・保守プラットフォームSREWorksが正式にオープンソース化

著者 |盛白業界が発展し続けるにつれて、ビッグデータと AI は徐々にクラウドネイティブの傾向を示し...

PR 値、Baidu 重み、Baidu スナップショット、含まれる数量を一括クエリする方法

多くの場合、データを一括してクエリする必要がありますが、現在、そのようなクエリ機能を提供する Web...

WeChat Readingの「Unlimited Card」活動のプロモーション手法を分析!

1. 事件のハイライト1. 1 回のゲームプレイで、半年以内に少なくとも数百万人のユーザーを獲得しま...

草の根談話:WeChatは市場の信頼に応えられるか?

WeChat 5.0のリリースは、最近比較的大きなニュースです。コミュニケーション機能から始まった製...