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 の導入に関する問題

推薦する

JavaScript で外部変数にアクセスするサブ関数の 3 つのソリューション

序文Web ページを作成するときに、次のような状況に遭遇することはよくあります。 <本文>...

JSX を使用してカルーセル コンポーネントを実装する方法 (フロントエンドのコンポーネント化)

JSX を使用してコンポーネント システムを構築する前に、例を使用してコンポーネントの実装原理とロ...

MySQL における楽観的ロック、悲観的ロック、MVCC の包括的な分析

序文データベースの実際の使用では、データの書き込みや読み取りを同時に行わないことが必要な状況によく遭...

antd pro に基づく SMS 認証コード ログイン機能 (プロセス分析)

目次まとめ全体的なプロセスフロントエンドページコード検証コードとログイン サービスをリクエストする ...

mysql5.7.17 zip の解凍とインストールの詳細な手順

1. ダウンロードアドレスhttps://dev.mysql.com/downloads/mysql...

HTML メタタグの使用の概要 (推奨)

メタタグ機能METAタグは、HTMLタグのHEAD領域にある重要なタグです。文書の文字セット、使用言...

Docker で FastDFS ファイル システムを構築する (マルチイメージ チュートリアル)

目次FastDFSについて1. 画像を検索する2. イメージをインストールする3.1. 必要なディレ...

Linuxシステムにmsfをインストールするプロセスの詳細な説明

または、インストールプロセスを自分で書き留めてください。私のサーバーシステムはAliyun Linu...

Linux システムで時間を取得して使用する方法

Linux システム時間には 2 種類あります。 (1)暦上の時刻。値は、指定された時刻、1970 ...

ウェブのさまざまなフロントエンド印刷方法: CSS はウェブページの印刷スタイルを制御します

CSS は Web ページの印刷スタイルを制御します。 CSS を使用して印刷スタイルを制御します。...

ウェブデザインとは何か

<br />元の記事: http://www.alistapart.com/articl...

iOS スタイルの選択ボックスの開閉機能を実装するための純粋な CSS

1 効果デモアドレス: https://www.albertyy.com/2020/7/check...

MySQLでトリガーを作成する方法

この記事の例では、参考のためにMySQLトリガーを作成するための具体的なコードを共有しています。具体...

Vue の 4 つのカスタム命令の説明と使用例

4つの実用的なVueカスタム指示1. Vドラッグ要件: マウスドラッグ要素アイデア:要素のオフセット...