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 Order By 複数フィールドのソートルールのコード例

事前に言っておく気まぐれですが、MySQL の order by sorting にどのようなルール...

nginx が複数のプロキシ層を通過して実際の送信元 IP を取得するプロセスの詳細な説明

質問Nginx は $remote_addr を実際の IP アドレスとして受け取りますが、実際には...

docker nginxコンテナの起動とローカルへのマウントの詳細な説明

まず、nginx コンテナ内の構造:コンテナを入力します: docker exec -it b511...

CentOS 7 で Apache (httpd) サービスをインストールおよびアンインストールする詳細な手順

アンインストールまず、次のコマンドを使用して、httpd サービスがインストールされているかどうか、...

MySQL 入門 - 概念

1. それは何ですか? MySQL は最も人気のあるリレーショナル データベース管理システムです。W...

Typescriptを使用してローカルストレージをカプセル化する方法

目次序文ローカルストレージの使用シナリオ使用上の問題解決機能性有効期限を追加データ暗号化を追加する命...

JavaScript スロットリングとアンチシェイクに関する簡単な説明

目次スロットルと手ぶれ防止コンセプト:違いスロットリングの実装スロットル機能手ぶれ補正の実装手ぶれ防...

CSS で高さが不明な垂直中央揃えを実装する

この記事では主に、高さが不明な垂直方向の中央揃えを CSS で実装する方法を紹介し、皆さんと共有しま...

Web ページは何ピクセルで設計すればよいでしょうか?

多くのウェブデザイナーは、ウェブページのレイアウトを設計する際に、インターフェースウェブページの幅に...

Windows 上で Zookeeper サーバーを構築するチュートリアル

インストールと設定Apacheの公式ウェブサイトには多くのミラーダウンロードアドレスが用意されており...

JavaScriptの動作原理を理解しましょう

目次ブラウザカーネルJavaScript エンジンV8エンジンJavaScript がどのように実行...

プロキシはVue3データの双方向バインディングの原理を実現します

目次1. proxy と Object.defineProperty の利点2. プロキシ監視オブジ...

Linux での透過的巨大ページの使用と無効化の概要

導入コンピューティングのニーズが拡大し続けるにつれて、アプリケーションのメモリに対する需要も増加して...

Vue2.0/3.0 での provide と inject の使用例

目次1. provide/inject の用途は何ですか? 2. provide/injectの使い...