Filebeat を使用して Nginx ログを収集する方法

Filebeat を使用して Nginx ログを収集する方法

Nginx ログは、ユーザーの住所の場所や行動プロファイルなどを分析するために使用できます。Elastic Stack を使用して、ワンストップのデータ収集、データクリーニング、データランディング、データ視覚化を実行し、データを本当に価値のあるものにするにはどうすればよいでしょうか。

建築デザイン

Elastic Stack では、Filebeat は Nginx 関連のログ収集に使用され、Elasticsearch はデータの保存と検索のためのエンジンであり、Kibana はデータの視覚化のためのツールです。

Nginx では、関連するログ (アクセス ログ access.log とエラー ログ error.log) は /var/log/nginx ディレクトリに保存されます。

ここに画像の説明を挿入

ベアメタル環境の場合は、同じホストに Filebeat を直接インストールしてログファイルを収集できます。
Docker 環境の場合は、Nginx で Volume を使用して Filebeat 収集用のログ ファイルを共有することをお勧めします。
Kubernetes環境の場合は、PVを収集するためにPodにFilebeat Containerを追加することをお勧めします。

さまざまなシナリオにはさまざまな収集ソリューションがあります。ビジネス シナリオに応じて、ホスト上でログを収集するために Daemonset を使用できるものもあれば、Sidecar を使用してログを収集できるものもあります。

実装方法

Docker環境を例に挙げる

エンギンクス

Nginx と Filebeat コンテナの共同マウントを容易にするためのストレージボリュームを作成する
docker volume create nginx-log-volume

Nginxコンテナを起動し、ストレージボリュームをログディレクトリにマップします。
docker run -d --name nginx -p 80:80 -v nginx-log-volume:/var/log/nginx nginx:latest

設定を変更するにはコンテナに入ります
docker exec -it nginx /bin/bash

コンテナ環境のデフォルトのログはstdoutに出力されるので、この設定を解除してファイルを指定する
unlink /var/log/nginx/access.log
unlink /var/log/nginx/error.log
touch /var/log/nginx/access.log /var/log/nginx/error.log
nginx -s reload

ファイルビート

Filebeatコンテナを起動し、ストレージボリュームをデータディレクトリにマップします。
docker run -d --name filebeat --user=root -v nginx-log-volume:/data elastic/filebeat:7.9.2

設定を変更するにはコンテナに入ります
docker exec -it filebeat /bin/bash

設定を変更し、ElasticsearchとKibanaのホストを追加します。
vi filebeat.yml

ファイルビートの設定:
 モジュール:
  パス: ${path.config}/modules.d/*.yml
  リロードが有効: false

プロセッサ:
 - クラウドメタデータを追加: ~
 - dockerメタデータを追加します: ~

出力.elasticsearch:
 ホスト: 'elasticsearch:9200'
 ユーザー名: "elastic"
 パスワード: "xxx"
セットアップ.kibana:
 ホスト: "kibana:5601"

Nginx コレクションモジュールを有効にする

filebeat modules enable nginx

Nginx コレクション設定を編集する
vi modules.d/nginx.yml

- モジュール: nginx
 アクセス:
  有効: true
  var.paths: ["/data/access.log*"]
 エラー:
  有効: true
  var.paths: ["/data/error.log*"]

Kibana でインデックスパターンとダッシュボードを作成するために Filebeat を設定する
filebeat setup

有効にするにはFilebeatを再起動してください
docker restart filebeat

視覚化

Kibanaのダッシュボード機能を使用して、Nginxのログへのアクセス、ユーザーアドレスの場所、ブラウザ情報を表示します。

ここに画像の説明を挿入

アクセスログとエラーログのNginx固有のリクエスト情報を表示します

ここに画像の説明を挿入

以下もご興味があるかもしれません:
  • Nginx ログのカスタマイズとログ バッファの有効化の詳細な説明
  • Dockerでnginxログをローリングするアイデアの詳細な説明
  • nginx ログにリクエスト応答ログを追加する (推奨)
  • nginx アクセスログ形式の詳細な説明
  • log_format を使用して Nginx サーバーのより詳細なログ形式を設定する方法

<<:  WeChatアプレット開発で遭遇したことのない落とし穴のまとめ

>>:  MySQL 5.5 の導入に関する問題

推薦する

MySQL の大文字と小文字の区別に関する注意

目次MySQLの大文字と小文字の区別はパラメータによって制御されますMySQLの大文字と小文字の区別...

JavaScript プリミティブデータ型シンボルの詳細な説明

目次導入説明名前の競合私有財産要約する導入シンボル変数を作成する最も簡単な方法は、Symbol() ...

MySQL 5.7.17 のインストールと設定方法のグラフィック チュートリアル (Windows10)

MySQL 5.7.17 のインストールと設定方法の概要最初のステップは、MySQL公式サイトから...

この記事ではCSSボーダーの使い方を説明します

境界線のスタイルborder-style プロパティは、表示する境界線の種類を指定します。 bord...

CSS 境界線の半分または部分的に表示される実装コード

1. 疑似クラスを使用して境界線の半分を表示する <!DOCTYPE html> <...

ネガティブマージン関数の紹介と使用方法の概要

1998 年の CSS2 勧告の時点で、テーブルは徐々に舞台から消え、歴史の中に記録されるようになり...

vue $setは配列コレクションオブジェクトへの値の割り当てを実装します

Vue $set 配列コレクションオブジェクトの割り当てVue カスタム配列オブジェクト コレクショ...

MYSQL の 3 つのツリー構造テーブル設計の長所と短所の簡単な分析と共有

目次導入質問設計 1: 隣接リストテーブルデザインSQL の例デザイン 2: パスの列挙テーブルデザ...

Vue プロジェクトは左スワイプ削除機能を実装します (完全なコード)

成果を達成するコードは次のとおりですhtml <テンプレート> <div> ...

Redhat 8.0 システムのインストール方法に関するグラフィック チュートリアル (初心者には必須)

目次1. はじめに2. インストール01. 新しい仮想マシンを作成する02. システムをインストール...

Linux は、Deepin がルートユーザーとして Google Chrome ブラウザを起動できない問題を解決します

Deepin がルートユーザーとして Google Chrome ブラウザを起動できない問題を解決す...

Reactイベントメカニズムソースコード分析

目次原理ソースコード分析委任されたイベントバインディングすべてのサポートされているイベントを聴くネイ...

CSS3 border-radius 丸角の実装方法と使い方の詳しい説明

以前は、角を丸くするのは非常に面倒でしたが、CSS3 では、角を丸くするのは非常に簡単になり、bor...

MySQL のデータ型とフィールド属性の原理と使用法の詳細な説明

この記事では、MySQL のデータ型とフィールド属性について説明します。ご参考までに、詳細は以下の通...