Docker ベースの ELK ログ システムを構築する方法

Docker ベースの ELK ログ システムを構築する方法

背景要件:

ビジネスがどんどん大きくなると、サーバーの数も増え、さまざまなアクセスログ、アプリケーションログ、エラーログの量も増えていきます。その結果、運用・保守担当者はログをうまく管理できなくなっています。開発者は、問題をトラブルシューティングするためにサーバー上のログを確認する必要があり、運用担当者にとっては不便です。データが必要な場合は、ログを分析するためにサーバーを運用・保守する必要があります。

ELKの紹介:

ここに画像の説明を挿入

ELK は、Elasticsearch、Logstash、Kibana という 3 つのオープンソース ソフトウェアの略称です。これらはすべてオープンソース ソフトウェアです。 現在、元の ELK Stack は、Beats ツールの追加により Elastic Stack に名前が変更されています。 Beatsはリソースをほとんど消費しない軽量なログ収集・処理ツール(エージェント)で、各種サーバーのログを収集してLogstashに送信するのに適しています。公式もこのツールを推奨しています。

ここに画像の説明を挿入

構築手順:

上記の説明を読めば、このプラットフォームを構築するには少なくとも 3/4 のソフトウェアが必要であることが誰でも少しは理解できるはずです (Filebeat は必須ではありません)。

  • キバナはディスプレイに使用されます
  • 検索用の elasticsearch
  • フィルタリングにはlogstashが使用される
  • Filebeatはログを収集するために使用されます

この記事では、すでに Docker 環境があり、Docker の基本的な使用経験があることを前提としています。

イメージをプルします (統合バージョンでは多くの落とし穴を回避できます):

docker pull キバナ:6.8.2
docker pull elasticsearch:6.8.2
docker pull mobz/elasticsearch-head:5 # es 用のプラグイン docker pull logstash:6.8.2
docker pull docker.elastic.co/beats/filebeat:6.8.2 # 非常に遅い場合は、プロキシを設定するか、dockerイメージソースを変更してみてください。

Linux で Docker プロキシを設定するには、ClashX を使用して URL をサブスクライブし、Docker をプロキシに接続します。デスクトップをお持ちの場合は直接変更できます。デスクトップをお持ちでない場合は設定ファイルを作成して変更することができます。⇒ポータル

ここに画像の説明を挿入

また、遅延を回避するために Docker にさらに多くのメモリを割り当てます。

ES をビルド:

docker run -d -p 9200:9200 -p 9300:9300 --name elasticsearch -e "discovery.type=single-node" elasticsearch:6.8.2

ブラウザアクセス(curlでもOK):localhost:9200。以下の結果が表示されれば起動成功です。

ここに画像の説明を挿入

エラーが発生した場合は、エラーログを確認してください。

ES-HEAD を作成します。

docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5

もう一度 localhost:9100 にアクセスすると、次の結果が表示されます。

ここに画像の説明を挿入

es ではクロスドメインが有効になっていないため、es-head で es に接続できない可能性があります。es コンテナに入り、構成ファイルの下にある elasticsearch.yml を見つけます。このファイルに次の内容を追加します。

http.cors.enabled: 有効
http.cors.allow-origin: "*"

その後、es を再起動すると、es-head は es に接続できるようになります。

Kibana を開きます:

docker run -d -p 5601:5601 --link elasticsearch -e ELASTICSEARCH_URL=http://elasticsearch:9200 kibana:6.8.2

ここでは http://elasticsearch:9200 です。変更しないでください。以前は、--link を使用して elasticsearch IP アドレスを kibana コンテナの hosts ファイルに追加し、定義された名前を通じて es サービスに直接アクセスできるようにしていました。
コンテナが正常に起動すると、es-head に次の情報が表示されます。

ここに画像の説明を挿入

localhost:5601 にアクセスすると、次のようになります。

ここに画像の説明を挿入

これまでのところ、kibana は正常に実行されており、es も実行されています。次のステップは、ログ サービスを収集することです。

Filebeat と logstash をビルドします。

まず、この 2 つの兄弟にはいくつかの設定ファイルが必要です。これらの 2 つの設定ファイルを同じフォルダーに保存します。

mkdir elktest # メインディレクトリ、つまり ~/elktest パス cd elktest
ファイルbeat.yml をタッチする
logstash.conf をタッチする

プロフィールを追加する

vim ファイルビート.yml
ファイルビートプロスペクター:
- パス:
    - /home/elk/logs/user/a.log
  複数行:
      パターン: ^\d{4}
      否定: 真
      一致: 後
  フィールド:
    ドキュメントタイプ: ユーザー
- パス:
    - /home/elk/logs/service/a.log
  複数行:
      パターン: ^\d{4}
      否定: 真
      一致: 後
  フィールド:
    ドキュメントタイプ: サービス
output.logstash: # 出力アドレス ホスト: ["logstash:5044"]
vim ログスタッシュ.conf
入力{
  ビート {
    ポート => "5044"
  }
}
フィルター {
  json {
    ソース => "メッセージ"
  }
}

出力{
  stdout { コーデック => ruby​​debug }
  エラスティックサーチ
        ホスト => [ "elasticsearch:9200" ]
        インデックス => "%{[fields][doc_type]}-%{+YYYY.MM.dd}"
    }
}

まだ elktest ディレクトリにいるはずです。ログ ソースがないため、このビデオでは手動でログを作成し、ログ フォルダーを作成します。

mkdir ログディレクトリ

自分でログをいくつか作成し、好きなように記述します。ファイル名とフォルダ名は変更しないでください。これらはすでに構成ファイルにマッピングされています。ビルドが完了すると、ディレクトリ構造は次のようになります。

ここに画像の説明を挿入

コンテナを作成します。

docker run -it --name logstash --link elasticsearch -d -p 5044:5044 -v ~/elktest/logstash.conf:/usr/share/logstash/pipeline/logstash.conf logstash:6.8.2

docker run --name filebeat --link logstash -d -v ~/elktest/filebeat.yml:/usr/share/filebeat/filebeat.yml -v ~/elktest/logdir/user/:/home/elk/logs/user/ -v ~/elktest/logdir/service/:/home/elk/logs/service/ docker.elastic.co/beats/filebeat:6.8.2

この時点で、es-head は次のようになります。

ここに画像の説明を挿入

そうでない場合は、コンテナが実行中かどうか、エラーログがあるかどうかを確認できます。また、logstash コンテナ内の elasticsearch に ping を実行し、filebeat コンテナ内の logstash に ping を実行して、パスに問題がないか確認することもできます。

Kibana の表示: インデックスの作成:

ここに画像の説明を挿入

作成が完了したら、確認して、表示するフィールドを追加します。内容はメッセージ内にあります (これは a.log の内容です)。

ここに画像の説明を挿入

今のところ、ヘラジカは完成しました。うまく作った友達は、夕食にチキンドラムスティックを食べてもいいですよ! ! ! !

以上がDockerをベースにELKログシステムを構築する方法の詳細な内容です。DockerでELKログシステムを構築する方法の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Docker を使用して ELK ログ システムを構築する例
  • Docker を使用して ELK 環境を迅速にデプロイする方法の詳細な説明 (最新バージョン 5.5.1)
  • ELK を使用して Docker コンテナ化されたアプリケーション ログ センターを構築する方法の詳細な説明
  • Docker が ELK Docker クラスター ログ収集システムを構築

<<:  CSSでプロセスナビゲーション効果を実現する(3つの方法)

>>:  Tudou.com フロントエンドの概要

推薦する

MYSQLクエリデータの結果に自動的に番号を付ける方法

序文実際、クエリ中に結果に番号が付けられるこのような状況に遭遇したことは一度もありません。同僚が転職...

Mysql5.7 で JSON 操作関数を使用する手順

序文JSON は、言語に依存しないテキスト形式を使用する軽量のデータ交換形式で、XML に似ています...

Win10でIIS10を構成し、ASPプログラムのデバッグをサポートする手順

マイクロソフトIIS (Internet Information Server) は、Microso...

jsで七夕告白連打の効果を実現、jQueryで連打技術を実現

この記事では、jsとjQueryテクノロジーを使用して告白弾幕を実現する方法を紹介します。具体的な内...

Reactの基本のまとめ

目次序文始めるReactライフサイクルリアクトファイバーリアクトセットステートReactイベントメカ...

Reactを使用する際の7つの落とし穴のまとめ

目次1. コンポーネントの肥大化2. 状態を直接変更する3. プロパティは数値を渡す必要があるが文字...

JS で配列をループする 4 つの方法のまとめ

この記事では、配列を走査する 4 つの方法を比較してまとめます。 for ループ: for (let...

MySQL inndbジョイントインデックスを正しく使用する方法を徹底的に理解するためのケーススタディ

最近確認された5件のデータを照会するビジネスがあります。 `id`、`title` を選択 `th_...

Linuxブートサービスを起動する2つの方法

目次rc.local メソッドchkconfig メソッドrc.local メソッド1 まず自動的に...

Docker MQTT のインストールと使用のチュートリアル

MQTT の紹介MQTT (Message Queuing Telemetry Transport)...

React プロジェクトで eslint の Baidu スタイルを使用する詳細な説明

1. Baidu Eslint Ruleプラグインをインストールする npm i -D eslint...

Linux の総合システム監視ツール dstat の詳細な例

オールラウンドなシステム監視ツール dstat dstat は、vmstat、iostat、nets...

Linux での MySQL 8.0 インストール チュートリアル

この記事では、LinuxでMySQL 8.0をインストールする方法を紹介します。具体的な内容は次のと...

vue2 vue3 での Echarts の詳細な使用方法

目次1. インストール2. vue2でEchartsを使用するmain.jsファイル内コンテナが与え...