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アルゴリズムの詳細な説明

推薦する

暗号化における https の Apache 展開の概要

目次目的実験環境実験原理実験手順1. 独立したCAを生成する2. サーバーの秘密鍵と署名要求ファイル...

Vue プロジェクトのパッケージ化、マージ、圧縮により、Web ページの応答速度を最適化します。

目次序文1. リクエスト内容が大きすぎる解決: CDN の紹介リクエストリソースを圧縮する1. HT...

Alibaba Cloud CentOS 7 に MySQL 8.0.13 をインストールする方法

1. MySQL インストール パッケージをダウンロードします(ここにはコツがあります。おそらく、こ...

MySQLデータベースは重複データを削除し、メソッドインスタンスを1つだけ保持します

1. 問題の紹介ユーザー テーブルに 3 つのフィールドが含まれているシナリオを想定します。 id、...

JSは写真の自動再生効果を実現します

この記事では、写真の自動再生効果を実現するためのJSの具体的なコードを参考までに紹介します。具体的な...

有名ウェブサイトのロゴにおすすめのフォント40選

世界で最も有名なウェブサイトのロゴデザインにはどんなフォントが使われているかご存知ですか?これらのフ...

jQuery ベースのカレンダー効果

この記事では、カレンダー効果を実現するためのjQueryの具体的なコードを例として紹介します。具体的...

CentOS サーバーの時間を北京時間に変更する方法

1. VPSとCentOSシステムを購入しましたが、サーバーの時間が北京時間と一致せず、時差があるこ...

Vueコンポーネントドキュメント生成ツールライブラリのメソッド

目次.vue ファイルの解析文書情報を抽出するコンポーネント名、説明、プロパティ、メソッド、モデルを...

CSS で要素フローティングとクリアフローティングを実装する方法

フローティングの基礎標準ドキュメント フローでは、要素は塊級元素と行內元素の 2 種類に分けられます...

ドロップダウンボックス選択コンポーネントを実装するためのネイティブ js

この記事の例では、ドロップダウンボックス選択コンポーネントを実装するためのjsの具体的なコードを参考...

Vue ログインページでクッキーを使用してパスワードを 7 日間記憶する方法

問題の説明プロジェクトのログインページでは、7日間パスワードを記憶する必要がある機能があります。この...

MySQLクエリで大文字と小文字を区別しない問題を解決する方法

質問最近、SSH フレームワークを使用して実用的なプロジェクトを完了していたときに、長い間悩まされて...

MySQL 挿入時間の 8 時間の違いの問題の解決方法

MySQL挿入時の8時間の時差の問題を解決する通常、jdbc の URL にはいくつかのパラメータを...