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

推薦する

ウェブサイトを黒、白、グレーにする4つのコードの詳細な説明

2008年5月12日に四川省汶川市で発生した地震により、多くの命が失われ、遺憾なことと存じます。国務...

Linux の cut コマンドの説明

Linux や Unix の cut コマンドは、ファイルの各行から一部を切り取って標準出力に出力す...

MySQL SQL文の特殊処理文のまとめ(必読)

1.テーブル全体を更新します。データ行の列の値が空の場合は、別の列フィールドの値と同じにします。 ...

webpack と rollup を使用してコンポーネント ライブラリをパッケージ化する方法

序文以前、ローディングスタイルのコンポーネントを作成しました。コードの再利用性を実現するために、この...

ウェブページ作成のテスト問題を全て解けますか?

Web ページのデザインに関する質問です。すべてに答えられるでしょうか? 1. 単一選択の質問 (...

MySQL のジオメトリ型を使用して経度と緯度の距離の問題を処理する方法

テーブルを作成する テーブル `map` を作成します ( `id` int(11) NULLではな...

docker+gitlab+gitlab-runnerの詳細なデプロイメント

環境サーバー: centos7クライアント: ウィンドウCentos7 に docker+gitla...

jsは配列の平坦化を実装します

目次配列をフラット化する方法1.flat() の使用2. 正規表現を使用する3.reduce()+c...

MYSQL 左結合の最適化 (10 秒から 20 ミリ秒)

目次【機能背景】 [生のSQL] 【独自SQL解析】 【分析手順】 [最適化されたSQL] 【最適化...

MySQL ルートパスワードエラー番号 1045 の解決方法

MySQLサービスを停止するWindowsでは、マイコンピュータを右クリック--管理--サービスと...

Linux netstatコマンドの詳細な説明

目次Linux netstat コマンド1. TCP接続ステータスの詳細な説明2. コマンド形式3....

Vue3.0 ルーティング自動インポート方法の例

1. 前提条件インポートには require.context メソッドを使用します。vite で作成...

スライドによるページめくり効果とクリックイベント問題をモバイル端末上で実装する

前述のこの記事はとても短いです〜主な目的は、モバイル端末上のクリックと js イベントのメカニズムに...

Linux sedコマンドの使用

1. 機能紹介sed (Stream EDitor) は、コンテンツを 1 行ずつ処理するストリーム...

Centos7 環境でソースコードから mysql5.7.16 をインストールする方法の詳細な説明

この記事では、centos7 環境でソース コードから mysql5.7.16 をインストールする方...