最初に書く この記事では、ELK 7.3.0 の展開についてのみ説明します。 展開環境:
ELK 分散クラスタ展開ソリューション Linux の elasticsearch ユーザーのメモリ権限が小さすぎます。少なくとも 262144 が必要です。エラー メッセージが表示されます (最大仮想メモリ領域 vm.max_map_count [65530] が低すぎます。少なくとも [262144] に増やしてください)。したがって、まずシステム構成を変更します。 # sysctl.conf 設定を変更する vi /etc/sysctl.conf # 次の設定を追加します。 vm.max_map_count=262144 # リロード: sysctl -p # 最後に、elasticsearch を再起動して正常に起動します。 環境は Docker を使用してデプロイされます。Docker コマンドをより便利に使用するために、bash-completion 自動補完プラグインをインストールします。 # 依存ツールbash-completeをインストールします yum インストール -y bash 補完 ソースは /usr/share/bash-completion/completions/docker です。 ソース /usr/share/bash-completion/bash_completion デプロイ順序: ES --> Kibana --> Logstash --> Filebeat ElasticSearch 7.3.0 のデプロイメント マスターノードの展開 設定ファイルとデータ保存ディレクトリを作成する mkdir -p }mnt/es1/master/data、/mnt/es1/master/logs} vim /mnt/es1/master/conf/es-master.yml es-master.yml 設定 # クラスター名 cluster.name: es-cluster #ノード名node.name: es-master # マスターノードになれるかどうかnode.master: true # ノードがデータを保存できるようにするかどうか。デフォルトで有効です。node.data: false # ネットワークバインディング network.host: 0.0.0.0 # 外部サービスのhttpポートを設定します http.port: 9200 # ノード間の通信用のTCPポートを設定します transport.port: 9300 # クラスター検出 discovery.seed_hosts: - 172.17.0.2:9300 - 172.17.0.3:9301 # マスターノードになることができるすべてのノードの名前または IP アドレスを手動で指定します。これらの構成は最初の選出 cluster.initial_master_nodes で計算されます。 - 172.17.0.2 # クロスドメインアクセスをサポートする http.cors.enabled: true http.cors.allow-origin: "*" # セキュリティ認証 xpack.security.enabled: false #http.cors.allow-headers: 「認証」 bootstrap.memory_lock: 偽 bootstrap.system_call_filter: 偽 #クロスドメインの問題を解決する#http.cors.enabled: true #http.cors.allow-origin: "*" #http.cors.allow-methods: OPTIONS、HEAD、GET、POST、PUT、DELETE #http.cors.allow-headers: "X-Requested-With、コンテンツ タイプ、コンテンツの長さ、X-User" イメージをプルするときに少し遅くなりますので、しばらくお待ちください。 # イメージをプルします。コンテナを直接ビルドしてこの手順を無視することもできます。 docker pull elasticsearch:7.3.0 # コンテナをビルドする## 5601 を Kibanadocker 用に予約されたポートにマップする run -d -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ -p 9200:9200 -p 9300:9300 -p 5601:5601 \ -v /mnt/es1/master/conf/es-master.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /mnt/es1/master/data:/usr/share/elasticsearch/data \ -v /mnt/es1/master/logs:/usr/share/elasticsearch/logs \ -v /etc/localtime:/etc/localtime \ --name es-master elasticsearch:7.3.0 /etc/localtime:/etc/localtime: ホストとコンテナの時刻が同期されます。 ノードからデプロイする 設定ファイルとデータ保存ディレクトリを作成する mkdir -p }mnt/es1/slave1/data、/mnt/es1/slave1/logs} vim /mnt/es1/slave1/conf/es-slave1.yml es-slave1.yml 設定 # クラスター名 cluster.name: es-cluster #ノード名node.name: es-slave1 # マスターノードになれるかどうかnode.master: true # ノードがデータを保存できるようにするかどうか。デフォルトで有効です。node.data: true # ネットワークバインディング network.host: 0.0.0.0 # 外部サービスのhttpポートを設定します http.port: 9201 # ノード間の通信用のTCPポートを設定します transport.port: 9301 # クラスター検出 discovery.seed_hosts: - 172.17.0.2:9300 - 172.17.0.3:9301 # マスターノードになることができるすべてのノードの名前または IP アドレスを手動で指定します。これらの構成は最初の選出 cluster.initial_master_nodes で計算されます。 - 172.17.0.2 # クロスドメインアクセスをサポートする http.cors.enabled: true http.cors.allow-origin: "*" # セキュリティ認証 xpack.security.enabled: false #http.cors.allow-headers: 「認証」 bootstrap.memory_lock: 偽 bootstrap.system_call_filter: 偽 イメージをプルするときに少し遅くなりますので、しばらくお待ちください。 # イメージをプルします。コンテナを直接ビルドしてこの手順を無視することもできます。 docker pull elasticsearch:7.3.0 # コンテナをビルド docker run -d -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ -p 9201:9200 -p 9301:9300 \ -v /mnt/es1/slave1/conf/es-slave1.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /mnt/es1/slave1/data:/usr/share/elasticsearch/data \ -v /mnt/es1/slave1/logs:/usr/share/elasticsearch/logs \ -v /etc/localtime:/etc/localtime \ --name es-slave1 elasticsearch:7.3.0 設定を変更してコンテナを再起動します # マスターコンテナとスレーブコンテナのIPを表示する docker の es-master を検査する docker で es-slave1 を検査する ES 構成ファイル es-master.yml および es-slave1.yml 内のdiscovery.seed_hostsおよびcluster.initial_master_nodesを対応する IP に変更します。コンテナを再起動します。 docker es-master を再起動します docker es-slave1 を再起動します。 # es ログを表示する docker logs -f --tail 100f es-master ES クラスターの情報を確認するには、http://IP:9200/_cat/nodes にアクセスしてください。マスター ノードとスレーブ ノードが正常にデプロイされていることがわかります。 ノードのデプロイメントによく使用される API:
Kibana 7.3.0 のデプロイメント Kibana 設定ファイルを作成する vim /mnt/kibana.yml # ## ** これは自動生成されたファイルです ** ## # ## docker ターゲットのデフォルトの Kibana 構成 サーバー名: kibana # Kibana のリモート アクセス サーバーを設定します。ホスト: "0.0.0.0" #es アクセス アドレス elasticsearch.hosts を設定します: [ "http://127.0.0.1:9200" ] #中国語インターフェース i18n.locale: "zh-CN" #xpack.monitoring.ui.container.elasticsearch.enabled: true es-masterコンテナIDを表示する docker ps | grep es-master Kibanaをデプロイする コマンド内の 40eff5876ffd を es-master コンテナ ID に変更し、イメージをプルして、しばらく待つ必要があることに注意してください。 # イメージをプルします。コンテナを直接ビルドしてこの手順を無視することもできます。 docker pull docker.elastic.co/kibana/kibana:7.3.0 # コンテナをビルドする## --network=container はコンテナネットワークを共有することを意味します docker run -it -d \ kibana.yml を /usr/share/kibana/config/kibana.yml にコピーします。 -v /etc/localtime:/etc/localtime \ -e ELASTICSEARCH_URL=http://172.17.0.2:9200 \ --network=コンテナ:40eff5876ffd \ --name キバナ docker.elastic.co/kibana/kibana:7.3.0 Kibana コンテナのログを確認します。次の図に示すログが表示された場合、起動は成功しています。 docker ログ -f --tail 100f kibana http://IP:5601 にアクセスすると、503 が表示される場合があります。しばらく待つとアクセスできるようになります。 Kibana コンソールにアクセスできる場合は、Kibana が正常にインストールされ、es-master との接続が確立されていることを意味します。 Logstash 7.3.1 のデプロイメント Logstash 構成ファイルの記述
入力{ # ソースビート ビート { # ポート port => "5044" } } # 分析およびフィルタリングプラグイン、複数のフィルタが可能 { 理解する { # grok 式が保存される場所 patterns_dir => "/grok" # grok 式の書き換え # match => {"message" => "%{SYSLOGBASE} %{DATA:message}"} # ネイティブメッセージフィールドを削除します overwrite => ["message"] # 独自のフォーマットマッチを定義する => { "メッセージ" => "%{URIPATH:request} %{IP:clientip} %{NUMBER:response:int} \"%{WORD:sources}\" (?:%{URI:referrer}|-) \[%{GREEDYDATA:agent}\] \{%{GREEDYDATA:params}\}" } } # クエリ分類プラグイン geoip { ソース => "メッセージ" } } 出力{ # elasticsearchを選択 エラスティックサーチ # es クラスターホスト => ["http://172.17.0.2:9200"] #ユーザー名 => "root" #パスワード => "123456" # インデックス形式 index => "omc-block-server-%{[@metadata][version]}-%{+YYYY.MM.dd}" # trueに設定すると、logstashというカスタムテンプレートがある場合、カスタムテンプレートがデフォルトのテンプレートlogstashを上書きすることを示します。 テンプレート上書き => true } } Logstashをデプロイする # イメージをプルします。コンテナを直接ビルドしてこの手順を無視することもできます。docker pull logstash:7.3.1 # コンテナをビルドします# xpack.monitoring.enabled は X-Pack のセキュリティと監視サービスをオンにします# xpack.monitoring.elasticsearch.hosts は ES アドレスを設定します。172.17.0.2 は es-master コンテナの IP です # Docker では、コンテナの起動時にいくつかのコマンドを実行できます。logsatsh -f は、設定ファイルを指定して logstash を実行することを意味します。/usr/share/logstash/config/logstash-sample.conf は、コンテナ内のディレクトリ ファイルです。docker run -p 5044:5044 -d \ -v /mnt/logstash-filebeat.conf:/usr/share/logstash/config/logstash-sample.conf \ -v /etc/localtime:/etc/localtime \ -e elasticsearch.hosts=http://172.17.0.2:9200 \ -e xpack.monitoring.enabled=true \ -e xpack.monitoring.elasticsearch.hosts=http://172.17.0.2:9200 \ --name ログスタッシュ ログスタッシュ:7.3.1 -f /usr/share/ログスタッシュ/config/ログスタッシュ-sample.conf ここでは、es クラスターのアドレスに注意する必要があります。ここでは、es-master IP (172.17.0.2) のみを設定します。詳細な Logstash 設定。 次のログが表示されれば、インストールは成功です。 Filebeat 7.3.0 の展開 Filebeat は必須コンポーネントではありません。Logstash を使用してログを転送することもできます。 たとえば、「20」で始まらないすべてのログをマージするには、次の Logstash 構成を使用できます。 入力{ # ソースビート ビート { # ポート port => "5044" } ファイル { タイプ => "サーバーログ" パス => "/logs/*.log" start_position => "始まり" コーデック=>マルチライン{ // 正規表現、プレフィックスが「20」のすべてのログ。ログに「[2020-06-15」のようなプレフィックスがある場合は、「^[」に置き換えることができます。 パターン => "^20" // 通常のルールを否定するかどうか negate => true // previous は前の行にマージすることを意味し、next は次の行にマージすることを意味します what => "previous" } } } Filebeat はアプリケーションと同じサーバーにデプロイする必要があることに注意してください。ここでは、アプリケーションは docker を使用してデプロイされ、/mnt/omc-dev/logs はアプリケーション ログ ファイルのマッピング ディレクトリです。サービスも docker 経由でデプロイする場合は、[-v /mnt/omc-dev/logs:/app/logs] を使用してログ ファイルをマッピングすることを忘れないでください。 Filebeat設定ファイルを作成する ## /mnt/omc-dev/logs はアプリケーション ログ ディレクトリです。アプリケーション デプロイメント ディレクトリをマッピングする必要があります。mkdir -p {/mnt/omc-dev/logs,/mnt/filebeat/logs,/mnt/filebeat/data} vim /mnt/filebeat/filebeat.yml ファイルビート入力: - タイプ: ログ 有効: true パス: # 現在のディレクトリ内のすべての .log ファイル - /home/project/spring-boot-elasticsearch/logs/*.log 複数行パターン: '^20' 複数行否定: true 複数行一致: 前 ログレベル: デバッグ filebeat.config.モジュール: パス: ${path.config}/modules.d/*.yml リロードが有効: false セットアップテンプレート設定: インデックスの破片の数: 1 セットアップダッシュボードが有効: false セットアップ.kibana: ホスト: "http://172.17.0.2:5601" # ESに直接転送されない #出力.elasticsearch: # ホスト: ["http://es-master:9200"] # インデックス: "filebeat-%{[beat.version]}-%{+yyyy.MM.dd}" 出力.logstash: ホスト: ["172.17.0.5:5044"] #スキャン頻度: 1秒 クローズ_非アクティブ: 12時間 バックオフ: 1秒 最大バックオフ: 1秒 バックオフ係数: 1 フラッシュタイムアウト: 1秒 プロセッサ: - ホストメタデータを追加: ~ - クラウドメタデータを追加: ~ Logstash IP とポートを変更する必要があることに注意してください。 # イメージをプルします。コンテナを直接ビルドしてこのステップを無視することもできます。docker pull docker.elastic.co/beats/filebeat:7.3.0 # コンテナをビルド## --link logstash 指定されたコンテナを現在の接続に接続します。ip メソッドによる動的な変更によりコンテナを接続できない状況を回避するためにエイリアスを設定できます。logstash はコンテナ名です。docker run -d -v /mnt/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \ -v /mnt/omc-dev/logs:/home/project/spring-boot-elasticsearch/logs \ -v /mnt/filebeat/logs:/usr/share/filebeat/logs \ ファイルビートデータ:/usr/share/ファイルビートデータ\ -v /etc/localtime:/etc/localtime \ --link logstash --name filebeat docker.elastic.co/beats/filebeat:7.3.0 ログを確認します。設定ファイルでFilebeatのログレベルをデバッグに設定しているので、収集された情報がすべて表示されます。 docker ログ -f --tail 100f ファイルビート ES インデックスをクエリすると、さらに 3 つのインデックスが見つかることがわかります。設定した日次インデックス セグメンテーションにより、私の環境は 3 日間実行されているため、3 つの omc サービス インデックスがあります (omc はスケジュールされたタスク サービスです。テスト用に簡単なスケジュールされたタスクを記述することもできます)。 次に、Kibana インデックス パターンを作成し、ログ クエリを実行します。 インデックスが作成されると、 Discoverビューでインデックス パターン別にログをクエリできるようになります。 記事はここまでです。他に導入が必要なサービスがある場合は、ログを指定のディレクトリにマウントするだけで済みます。もちろん、他のサーバーにサービスを展開する場合は、サーバーにFilebeatを展開し、サーバー間のネットワーク接続を確保する必要があります~~ 最後に、オープンソースの ELK 自動 Docker デプロイメント プロジェクトを紹介します: https://github.com/deviantony/docker-elk.git -------------------------------------------------------- 2020年6月28日更新 最近、Logstash による物理メモリの急増問題が発生しました。 主な問題について簡単に説明しましょう。 現在、単一サービスの1日のログ容量は2.2GB程度です。初期はLogstashのメモリに制限がなかったため、大量のデータが入ってくるとLogstashがメモリとIOをめちゃくちゃ占有してしまいます。 最近、同じサーバー上のアプリケーション サービスのトラフィックが増加し、最終的にメモリ不足と OutOfMemoryError の問題が発生しました。 その後、JVM メモリを最適化し (詳細は説明しません。インターネット上には多くの情報があります)、Logstash 応答メモリ構成を追加することで、以前のレガシー問題は解決されました。 最後に、監視のために Logstash を Kibana に追加します (もちろん、Logstash ログを ES に設定することもできます)。 https://blog.csdn.net/QiaoRui_/article/details/97667293 以下もご興味があるかもしれません:
|
<<: Vueはel-tableを使用して列と行を動的に結合します
場合によっては、MySQL が公式に提供しているテスト ライブラリに基づいてテスト データを作成し、...
この記事は、CentOS 7の詳細なインストールチュートリアルを参考のために記録します。具体的な内容...
1998 年の CSS2 勧告の時点で、テーブルは徐々に舞台から消え、歴史の中に記録されるようになり...
<br />オリジナルリンク: http://www.dudo.org/article....
最近、あるサービスにアラームが発生し、耐えられなくなっています。アラーム情報は次のとおりです。メトリ...
PHP のコンパイル時に -enable-gd-jis-conv オプションを追加することで発生する...
MySQLへのリモートアクセスを有効にするデフォルトでは、MySQL ユーザーにはリモート アクセス...
この記事では、入力ボックスコンポーネントを手動で実装するための具体的なコードを参考までに紹介します。...
:動的コンポーネントv-bind:is="component name" を使用...
はじめに: Web ページを作成するときに、画像をアップロードする必要がある場合がよくあります。画像...
この記事では、マウスドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...
質問最近、以下に示すように、テキストストローク効果を実現するという要件に遭遇しました。 解決策1まず...
目次シンプルな CASEWHEN 関数:これは、CASEWHEN 条件式関数を使用するのと同じです。...
目次ドキュメント オブジェクト モデル (DOM) DOM と JavaScript DOMツリーの...
1. 実装のアイデアインターフェース署名の目的は、リクエストパラメータが改ざんされていないか、リクエ...