Docker ベースの ELK を素早く構築する方法

Docker ベースの ELK を素早く構築する方法

[概要] この記事では、自作の Docker プラットフォームをベースに完全な ELK システムを素早く構築します。関連するイメージは Docker Hub から直接取得され、ログの収集、分析、取得を素早く実現できます。

画像の準備

  • ES イメージを取得します: docker pull elasticsearch:latest
  • Kibana イメージを取得します: docker pull kibana:latest
  • logstash イメージを取得します: docker pull logstash:latest

Elasticsearchを起動する

公式イメージの ES 構成ファイルは /usr/share/elasticsearch/config に保存されます。必要に応じて、このディレクトリをホスト マシンにマップできます。データ ファイル ディレクトリは /usr/share/elasticsearch/data です。ここでは、データ ディレクトリをマップします。コンテナーは、API 対話用にデフォルトでポート 9200 を提供します。

docker run --name elasticsearch \
-v "$PWD/esdata":/usr/share/elasticsearch/data \
-p 9200:9200 \
-d エラスティックサーチ

コンテナが起動したら、それを呼び出して確認できます。

Kibanaを起動する

Kibana は ES 操作の UI として ES コンテナと通信する必要があるため、ここで ES コンテナをリンクし、ページの操作用にポート 5601 を提供する必要があります。

docker run --name kibana \
--link elasticsearch:elasticsearch \
-p 5601:5601 \
-d キバナ

コンテナが起動したら、ブラウザを使用してポート 5601 にアクセスし、kibana ページを表示します。初めてアクセスすると、デフォルトのインデックスが作成されていないというメッセージが表示される場合があります。ここでは、管理ページでデフォルトのインデックスを作成する必要があります。デフォルトのインデックスは通常、logstash-* と呼ばれます。次の図に示すように、デフォルトのインデックスを作成します。

Logstashを起動する

Logstash の主な機能はログを収集することです。このコンポーネントには多くのプラグインがあり、TCP、UDP、JDBC、ファイル、キューなど、ほとんどのログ統合方法をサポートできます。設定は非常にシンプルで、起動方法も非常に簡単です。ここでは、nginx のアクセス ログを例に、logstash が nginx の access.log を読み取り、ログを Elasticsearch に転送するように設定します。

まず、logstash 構成ファイル logstash.conf をコンパイルします。内容は次のようになります。

入力{
 
   ファイル{
 
      パス=>"/tmp/nginx/logs/access.log"
 
   }
 
}出力{
 
   stdout{ } #コンソールにログ出力 #esに出力
 
   エラスティックサーチ
 
      ホスト=>"100.100.x.231"
 
   }
 
}

コンテナを起動します。ここでは、nginx ログを /tmp/nginx/logs/access.log に配置します。コンテナがこのログを読み取るには、ログ ディレクトリをコンテナにマップする必要があります。

docker run –it –rm -v /tmp/nginx/logs/access.log:/tmp/nginx/logs/access.log -f /config-dir/logstash.conf

次に、ログの収集と表示のプロセス全体をテストします。まず、nginx でアクセス ログをいくつか作成します。たとえば、curl を使用して nginx サービス ポートを直接呼び出したり、データを access.log に直接書き込んだりします。この時点で、logstash コンテナに次のログ出力が表示されます。

その後、Kibana ページを開いて、リアルタイムで書き込まれたログ データを確認します。

要約する

Docker コンテナを使用すると、ELK の構築が非常に簡単になります。ELK を使用すると、ログをすばやく分析して取得し、問題を見つけることができます。ELK のコア コントリビューター数名が Elastic という会社を設立し、現在当社と協力関係にあります。オープンソースに基づいて、同社は X-Pack という商用製品もリリースしており、機械学習、グラフ アルゴリズム、セキュリティ テクノロジーの多くの機能強化を提供しています。興味のある学生は自分でそれについて学ぶことができます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker-compose を使用して ELK をデプロイするためのサンプル コード
  • NodeフレームワークをELKに接続する実践の簡単な概要
  • Docker を使用して ELK ログ システムを構築する例
  • ELKの原理と導入の詳細な分析

<<:  Windows 10 での MySQL 5.7.21 インストーラのインストール グラフィック チュートリアル

>>:  Vue 関数のアンチシェイクとスロットリングの正しい使用方法

推薦する

HTML サブタグと sup タグ

今日はあまり使わないHTMLタグ「subタグ」と「supタグ」を紹介します。定義と使用法: <...

MySQLデスクトップツールSQLyogのリソースとアクティベーション方法は、白黒のコマンドラインに別れを告げます

では、早速リソースについて見ていきましょう。 123WORDPRESS.COM ダウンロードSQLy...

Linux ネットワークプログラミング機能の簡単な分析

目次1.ソケットを作成する2. ソケットをバインドする3. 聞き手を作る。聞く4. 接続が受け入れら...

バインドを使用してDNSサーバーを設定する方法

DNS(ドメインネームサーバー)は、ドメイン名とそれに対応する IP アドレスを変換するサーバーです...

MySQL 8.0 の新機能の分析 - トランザクション データ ディクショナリとアトミック DDL

序文トランザクション データ ディクショナリとアトミック DDL は、MySQL 8.0 で導入され...

MySQL SELECT文の実行方法

MySQL Select ステートメントはどのように実行されますか?最近、Geek Time で D...

Vue: メモリリークの詳細な説明

メモリリークとは何ですか?メモリ リークとは、新しいメモリが作成されたが、解放またはガベージ コレ...

CSS でフロートをクリアするための完全ガイド (要約)

1. 親divは疑似クラスafterとzoomを定義します <スタイル タイプ="...

WeChat 8.0の爆発的な特殊効果を実現するために300行以上のCSSコードが必要

WeChat 8.0 アップデートの主な特徴は、アニメーション絵文字のサポートです。送信するメッセー...

MySQLにおけるrow_numberの実装プロセス

1. 背景一般的に、データ ウェアハウス環境では、row_number 関数を使用して特定のディメン...

MySQL マスタースレーブ構築(複数のマスターと 1 つのスレーブ)の実装アイデアと手順

背景:最近、同社のプロジェクトは同時実行のプレッシャーに耐えられないようなので、最適化が差し迫ってい...

Vue で親コンポーネントから子コンポーネントにデータを渡すいくつかの方法

最近、Vue のソースコードを勉強していて、Vue で親コンポーネントと子コンポーネント間でデータを...

MySQLトランザクション処理の使用方法とサンプルコードの詳細な説明

MySQL トランザクション サポートは、MySQL サーバー自体にバインドされているのではなく、ス...

SELinux 入門

カーネル 2.6 の時代には、アクセス制御セキュリティ ポリシーのメカニズムを提供するために新しいセ...

MySQLの保存場所を新しいディスクに移行する方法

1. 新しいディスクを準備し、現在のルートパーティションと同じファイルシステムでフォーマットし、ディ...