背景要件:ビジネスがどんどん大きくなると、サーバーの数も増え、さまざまなアクセスログ、アプリケーションログ、エラーログの量も増えていきます。その結果、運用・保守担当者はログをうまく管理できなくなっています。開発者は、問題をトラブルシューティングするためにサーバー上のログを確認する必要があり、運用担当者にとっては不便です。データが必要な場合は、ログを分析するためにサーバーを運用・保守する必要があります。 ELKの紹介:ELK は、Elasticsearch、Logstash、Kibana という 3 つのオープンソース ソフトウェアの略称です。これらはすべてオープンソース ソフトウェアです。 現在、元の ELK Stack は、Beats ツールの追加により Elastic Stack に名前が変更されています。 Beatsはリソースをほとんど消費しない軽量なログ収集・処理ツール(エージェント)で、各種サーバーのログを収集してLogstashに送信するのに適しています。公式もこのツールを推奨しています。 構築手順:上記の説明を読めば、このプラットフォームを構築するには少なくとも 3/4 のソフトウェアが必要であることが誰でも少しは理解できるはずです (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 サービスに直接アクセスできるようにしていました。 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 { コーデック => rubydebug } エラスティックサーチ ホスト => [ "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の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: CSSでプロセスナビゲーション効果を実現する(3つの方法)
最近、会社で DELL R730 サーバーを購入したのですが、偶然次のチュートリアルを見つけたので、...
初心者の Linux ユーザーとして、私は単純なgcc/g++操作を何度も使用してきましたが、少し複...
html ¶ <html></html> html:xml ¶ <ht...
目次nginxとは1. 必要な依存関係をダウンロードする2. nginxの圧縮パッケージをダウンロー...
この記事はMySQL 8.0.12のインストールと設定に関する詳細なチュートリアルを記録しています。...
imgタグは画像を導入しますreactは実際にはjsリーダー関数を介してページをレンダリングするため...
React は、開発者が Web およびモバイルベースのアプリケーションを作成するために使用するオ...
目次1. データ型1. MySQL空間データとは何か2. GeoJSONとは3. 空間データ型のフォ...
入力ボックスの値を取得する複数の方法最初の方法は、制御されていないコンポーネントの取得です2番目の方...
目次序文1. 文字列を分割する2. JSONのフォーマットと解析3. 複数行の文字列と埋め込み式4....
この記事では、Vueで開始時間と終了時間の範囲を照会する方法を参考までに紹介します。具体的な内容は次...
ログイン dockerログインdocker login コマンドを実行し、ユーザー名、パスワード、メ...
目次簡単な説明: 1. 取引の4つの特徴2. 複数の同時トランザクションによって発生する問題3. ト...
目次序文始めるちょっとした考えコードの実装真似する実装トラックトリガーの実装観察の実装計算の実装序文...
SQL はメイントランクです。なぜ私はこのように理解するのでしょうか。技術的な観点からリレーショナル...