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

推薦する

Dockerコミットの使い方の詳しい説明

場合によっては、ベースイメージに特定の依存関係をインストールする必要があります。Dockerfile...

Linux でも利用できる人気の Windows アプリ 10 選

データ分析会社Net Market Shareによると、Linuxデスクトップオペレーティングシステ...

Vue ベースの要素ボタン権限実装ソリューション

背景要件: ERP システムに「ボタン権限制御」機能を追加する必要があり、権限の制御粒度をボタン レ...

初心者向け入門講座⑧:記事サイトを簡単に作る

前回の投稿では、Web ページの作成方法について説明しました。Web サイトは多くの Web ページ...

Dockerイメージ構築原理の分析(Dockerをインストールしなくてもイメージを構築できる)

イメージの構築は、DevOps プロセスにおいて非常に重要なプロセスです。一般的に、イメージの構築と...

CSS3でアニメーションを実装する3つの方法

これは、面接者の CSS に関する基本的な知識をテストするものです。 CSSでアニメーションを実装す...

Dockerイメージ作成の完全なプロセス

目次序文作成手順CentOSベースイメージを作成するコンテナを作成してカスタマイズするカスタムコンテ...

Docker で ElasticSearch と Kibana をインストールするためのサンプル コード

1. はじめにElasticsearchは現在非常に人気があり、多くの企業が利用しているため、esを...

Ubuntu 20.04 ダブルピンイン入力方式のインストール手順

1. 中国語入力方法を設定する 2. ダブルスペルモードを設定する 3. 注意事項20.04 で S...

Nginx Httpモジュールシリーズにおけるautoindexモジュールの具体的な使用法

ブラウザ モジュールの主な機能は、http リクエスト ヘッダーの「User-Agent」の値とブラ...

IMG での UserMap の使用例

usemap は <img> タグの属性であり、使用するイメージ マップの名前を指定する...

HTML+CSS マージテーブル境界線サンプルコード

table タグと td タグに境界線を追加すると、デフォルトでは次のように二重境界線が使用されます...

Nginx+ModSecurity セキュリティモジュールの導入

目次1. ダウンロード2. 展開1.Nginxのデプロイメント2. ModSecurityの展開3....

Navicatを使ってMySQLを操作する方法

目次序文: 1. Navicatの紹介2. シンプルなチュートリアルの共有接続管理ライブラリテーブル...

CSS3 変換遷移ジッター問題の解決

transform: scale(); スケーリングするとIEブラウザでジッターが発生します変換スケ...