GNU/Linux >> Linux の 問題 >  >> Cent OS

DockerコンテナでELKスタックを実行する方法

ELKスタックはElasticsearch、Logstash、Kibanaスタックと略され、オープンソースのフル機能の分析スタックはあらゆるマシンデータの分析に役立ちます。 Splunkなどの他の商用データ分析ソフトウェアの代替として使用されます。

ELKスタックがまだ必要な場合は、ELKスタックの導入は必要ないことを願っています。 LinuxオペレーティングシステムでELKスタックを構成するためのチュートリアルをたくさん書いています。

以下のチュートリアルに従って、ELKとは何かを理解できます。

  1. Ubuntu16.04にELKスタックをインストールする方法
  2. CentOS 7 /RHEL7にELKスタックをインストールする方法

このチュートリアルでは、ELKスタックをホストオペレーティングシステムにインストールするのではなく、Dockerコンテナで実行する方法を説明します。

DockerNativeCLIまたはDockercomposeのいずれかを使用してELKスタックを実行できます。

前提条件:

必要なのは、システムにインストールされている最新のDockerだけです。 Dockerのバージョンが1.6以降であることを確認してください。ただし、一部の画像、たとえば。 Elasticsearchは、Dockerバージョン1.12.1でのみ公式にサポートされています

  1. Ubuntu 16.04 / 15.10/14.04にDockerをインストールする方法
  2. CentOS 7 /RHEL7でDockerをセットアップする方法
  3. Fedora24/23にDockerをインストールする方法
  4. OpenSUSEにDockerをインストールする方法

ここで使用しているDockerイメージは、Elasticからの公式イメージです

Elasticsearch:

まず、Elastisearchコンテナを実行します。 Elasticsearchイメージは、 / usr / share / elasticsearch / dataのボリュームで構成されます 永続化されたインデックスデータを保持します。したがって、/esdataであるマウントされたボリュームにデータを保存する場合はそのパスを使用します。

/ esdataを作成します Dockerホスト上のディレクトリ。

 mkdir / esdata 

次のコマンドを実行して、ElasticsearchDockerコンテナを作成します。ホストパスは常にコマンドラインの最初にあり、:、 次に、コンテナの内部ボリューム。

 docker run -d --name Elasticsearch -p 9200:9200 -p 9300:9300 -v / esdata:/ usr / share / elasticsearch / data Elasticsearch 

CURLを使用して、Elasticsearchから応答を取得します。

 curl -X GET http:// localhost:9200 {"name": "Red Skull"、 "cluster_name": "elasticsearch"、 "version":{"number": "2.3.5"、 "build_hash" :"90f439ff60a3c0f497f91663701e64ccd01edbb4"、 "build_timestamp": "2016-07-27T10:36:52Z"、 "build_snapshot":false、 "lucene_version": "5.5.0"}、 "tagline": "You Know、for Search"} 

ログスタッシュ:

Elasticsearchが起動して実行されると、Logstashコンテナを実行する準備が整います。 Logstashコンテナーを開始する前に、ビートからログを受信するための構成ファイルを作成します。

Dockerホスト上にディレクトリと構成ファイルを作成します。

 mkdir / logstashvi /logstash/logstash.conf 

以下の構成ファイルは、ログタイプが「 syslog」のログを受信するためのものです。 」ポート「5044 「そしてそれらをElasticsearchに送信してインデックスを作成します。

 input {beats {port => 5044}} filter {if [type] =="syslog" {grok {match => {"message" => "%{SYSLOGLINE}"}}} date {match => [ "timestamp"、 "MMM d HH:mm:ss"、 "MMM dd HH:mm:ss"]}}} output {elasticsearch {hosts => ["elasticsearch:9200"] index => "%{[@ metadata ] [beat]}-%{+ YYYY.MM.dd} "} stdout {codec => ruby​​debug}} 

上記の構成ファイルで、出力セクションが表示されている場合。 Elasticsearchホストはelasticsearch:9200として定義されています 。 Logstashがそのホストを解決してログを送信する方法を考えるかもしれませんが、心配する必要はありません。 Dockerリンク( –リンク )それを処理します。

 cd / logstash / 

次のコマンドを発行して、Logstashコンテナを作成します。

どこで、

–link Elasticsearch-container-name:hostname-in-config-file

 docker run -d --name logstash -p 5044:5044 --link elasticsearch:elasticsearch -v "$ PWD":/ logstash logstash -f /logstash/logstash.conf 

キバナ:

Kibanaコンテナーは構成を必要とせず、必要なのはKibanaDockerコンテナーをElasticsearchコンテナーにリンクすることだけです。

 docker run --name kibana --link elasticsearch:elasticsearch -p 5601:5601 -d kibana 

確認:

ユーザーdockerps すべてのコンテナが実行されているかどうかを確認するコマンド。

<前> psCONTAINER IDイメージコマンドCREATED STATUSポートドッキングウィンドウNAMES824dc7ee3c9f kibana「/docker-entrypoint.s」アップ前の時間について時間0.0.0.0:5601->5601/tcp kibana4fa8a72c96a2 logstashについてはについて「/docker-entrypoint.s」 1時間前約1時間アップ0.0.0.0:5044->5044/ tcp logstash4ea93b1d838b Elasticsearch 9.0.0:0.0> 0.0> 0.0>0.0>0.0約1時間前0.0約1時間前9300-> 9300 / tcp Elasticsearch

Beatsのインストールと構成:

ビートは、ログを収集してLogstashに送信するものです。ビートのインストールと構成は範囲外です。

  1. Ubuntu/DebianにFilebeatをインストールして設定する方法
  2. CentOS 7 /RHEL7にFilebeatをインストールして構成する方法
ログを送信するためにlogstash証明書を使用する必要はありません。ファイルビート構成ファイルにlogstash証明書パスのエントリを入れないでください。

Kibanaインターフェイスにアクセスする:

すべてのコンテナが期待どおりに稼働している場合は、次のURLにアクセスしてWebインターフェイスにアクセスします。

http:// your-ip-address:5601 /

ビートインデックスを設定して、Kibanaを使用したデータの検索を開始します。

[検出]をクリックして、ファイルビートから最新のログの検索を開始します。

今のところ、これですべてです。


Cent OS
  1. Dockerコンテナ内でプログラムを実行する方法は?

  2. 実行中のDockerコンテナでコマンドを実行する方法

  3. Dockerコンテナを終了する方法

  1. Dockerコンテナで実行されるプログラムにシグナルを送信するには?

  2. ユーザーを Docker コンテナに追加するにはどうすればよいですか?

  3. docker コンテナ内で cron ジョブを実行する方法

  1. 例を使用してDockerRunコマンドを使用する方法

  2. DockerコンテナでMySQLを実行する方法

  3. CentOS7にELKスタックをインストールする方法