Docker を使用して ELK ログ システムを構築する例

Docker を使用して ELK ログ システムを構築する例

以下のインストールではすべて、インストール ルート ディレクトリとして ~/ ディレクトリが使用されます。

エラスティックサーチ

画像をダウンロード:

$ sudo docker pull elasticsearch:5.5.0

ElasticSearch コンテナを実行します。

$ sudo docker run -it -d -p 9200:9200 -p 9300:9300 \
-v ~/elasticsearch/data:/usr/share/elasticsearch/data \
--name myes elasticsearch:5.5.0

バージョン6以上をご使用の場合はJDKエラーが発生しますので、ログを確認してください。

$ docker ログ -f myes

ログを表示します:

OpenJDK 64 ビット サーバー VM の警告: オプション UseConcMarkSweepGC はバージョン 9.0 で非推奨となり、将来のリリースで削除される可能性があります。

インターネットで見つかったおおよその意味は次のとおりです。

jdk9 は elasticSearch にあまり適していない (バージョンが新しすぎる) ため、JDK8 を使用する必要があります。私は JDK8u152 (jdk-8u152-windows-x64.exe) を使用します。 JDK9 と elasticSearch-rtf (v5.1.1) を使用すると、次のエラーが発生します。 elasticSearch6.0 バージョンでは JDK9 を使用する必要があることに特に注意してください。そうしないと、公式サイトからダウンロードした msi を正常にインストールできません。 理由は十分に確認されていません。

これも非常に厄介な問題なので、v5.5.0 安定バージョンを直接インストールしました。

ログスタッシュ

画像をダウンロード:

$ sudo docker pull logstash:5.5.0

新しい設定ファイルを作成します。

$ mkdir ~/logstash/conf.d && cd logstash/conf.d
$ vim ログスタッシュ.conf

ログスタッシュ.conf:

入力{

 ビート {
  port => 5044 # このポートはfilebeat.ymlのポートと同じである必要があります}

 ファイル {
  パス => "/data/logs"
  # start_position => "始まり"
 }
}

フィルター {
 #グロク{
 # 一致 => { "メッセージ" => "%{COMBINEDAPACHELOG}" }
 #}
 #日付 {
 # 一致 => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
 #}

 理解する {

  patterns_dir => "/etc/logstash/conf.d/patterns"
  一致 => {"メッセージ" => "%{TIMESTAMP_ISO8601:time}\S%{MYSELF:msgid}%{MYSELF:method}%{MYDATA:data}%{MYSELF:UserInfo}\S%{LOGLEVEL:level}\S%{MYSELF:thread}%{MYSELF:application}%{MYSELF:ip}"}
}
日付 {
   #match => [ "time", "YYYY-MM-dd HH:mm:ss,SSS" ]
   一致 => [ "time", "ISO8601" ]
   ターゲット => "@timestamp"
   タイムゾーン => "Asia/Phnom_Penh"
 }

}

出力{

 標準出力{
  コーデック => ruby​​debug
 }

 エラスティックサーチ
  アクション => "インデックス"
  ホスト => ["172.17.10.114:9200"]
  インデックス => "%{[フィールド][インデックス名]}-%{+YYYY.MM.dd}"
 }
}

Logstash コンテナを実行します。

$ sudo docker run -it -d -p 5044:5044 \
-v ~/logstash/conf.d:/etc/logstash/conf.d \
-v ~/logstash/data/logs:/data/logs \
--name ログスタッシュ ログスタッシュ:5.5.0 \
ログスタッシュの設定

キバナ

画像をダウンロード:

$ sudo docker pull kibana:5.5.0

新しい設定ファイルを作成します。

$ mkdir ~/kibana && cd ~/kibana
$ vim キバナ.yml

kibana.yml:

サーバーポート: 5601
サーバーホスト: "0.0.0.0"
elasticsearch.url: "http://172.17.10.114:9200"

Kibana コンテナを実行します。

$ sudo docker run -it -d -p 5601:5601 \
キバナディレクトリを /etc/kibana ディレクトリにコピーします。
--name キバナ キバナ:5.5.0

ファイルビート

ログを収集する必要があるサーバーに Filebeat を展開する必要があります。

画像をダウンロード:

$ sudo docker pull docker.elastic.co/beats/filebeat:5.5.0

新しい設定ファイルを作成します。

ファイルビートプロスペクター:
- タイプ: ログ
  パス:
   - ~/filebeat/logs #収集するログファイルのパスを指定します。フィールド:
  indexname: xxx # インデックスに対応するプロジェクト名をここに入力します => "%{[fields][indexname]}-%{+YYYY.MM.dd}"
出力.logstash:
 ホスト: ["172.17.10.114:5044"]

Filebeat コンテナを実行します。

$ sudo docker run -it -d \
ファイルビートを別のディレクトリにコピーします。
--name ファイルビート docker.elastic.co/beats/filebeat:5.5.0

添付は ELK 構造フローチャートです。

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

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

<<:  Mysql 5.6.37 winx64 インストール デュアル バージョン mysql ノート

>>:  ReactアプリケーションにおけるDOM DIFFアルゴリズムの詳細な説明

推薦する

Nginx インストールの詳細なチュートリアル

1. Nginxの簡単な紹介Nginx は、無料のオープンソースの高性能 HTTP サーバーおよびリ...

vue-router を遅延ロードする 3 つの方法のまとめ

遅延読み込みを使用しない 'vue' から Vue をインポートします。 '...

テーブル適応とオーバーフローのいくつかの設定の詳細な説明

1. テーブル リセットの 2 つのプロパティ: ①border-collapse: collaps...

Ubuntu 16.04 に nvidia ドライバー + CUDA + cuDNN をインストールする詳細なチュートリアル

準備1. GPUがCUDAをサポートしているかどうかを確認するlspci | grep -i nvi...

Nginx ルーティング転送とリバースプロキシロケーション構成の実装

Nginx を設定する 3 つの方法最初の方法は、位置一致部分を直接置き換える。 2 番目の pro...

ハイパーリンクの表示と開き方

<br />関連記事: ハイパーリンクを表示して開く方法症状<br />ユー...

SEATAトランザクションサービスDockerのデプロイ手順の詳細説明

1. データベース認証ステートメントを作成する > データベース seata を作成します。 ...

MySQL での or ステートメントの使用例

1. MySQL での or 構文の使用、および MySQL 構文で or を使用する際の注意点。 ...

Linuxカーネルで中国語の文字を出力する方法

次のように、Windows/MacOS からログインした Linux の SSH ターミナルで簡単に...

MySQLでグローバル変数とセッション変数を設定する2つの方法の詳細な説明

1. MySQL でグローバル変数を変更するには 2 つの方法があります。方法 1: my.ini ...

CSS リセットスタイルリセットの実装例

はじめに: すべてのブラウザには、「ユーザー エージェント スタイル シート」と呼ばれる、すべてのペ...

Linux に MySQL をインストールする方法 (yum とソース コードのコンパイル)

Linux に MySQL をインストールするには、yum インストールとソース コード コンパイ...

MySQLに画像を保存する方法

1 はじめにデータベースを設計する場合、画像や音声ファイルをデータベースに挿入することは避けられませ...

Docker バインディング固定 IP/クロスホストコンテナ相互アクセス操作

序文これまでは、パイプワークで割り当てた静的 IP は一時的なものであり、再起動すると無効になってい...

Mysql インデックスと Redis ジャンプテーブルについての簡単な説明

まとめインタビュー中、MySQL インデックスの問題について議論しているときに、B+ ツリー、B ツ...