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はパスワードボックスの検証情報を実装します

この記事では、パスワードボックスの検証情報を実装するためのJavaScriptの具体的なコードを例と...

ウェブサイトのビジュアルデザインパスはユーザーの習慣に合わせる必要がある

クーパー氏は、一般的に上から下、左から右に向かうユーザーの視覚経路について話しました。優れたビジュア...

HTML マーキー文字フラグメントのスクロール

その特性は次のとおりです。方向アクティブな字幕のスクロール方向を設定するコードは次のとおりです。 &...

IDEA2020.1.2 Webプロジェクトの作成とTomcatの設定に関する詳細なチュートリアル

この記事は、IDEA で Web プロジェクトを作成し、Tomcat を構成する方法についての統合記...

Javascriptでオブザーバーモードを実装する方法を教えます

目次オブザーバーパターンとは何ですか?シナリオシミュレーションコードの実装コードのリファクタリング要...

vuex での Getter の使用法の詳細な説明

序文Vuex を使用すると、ストア内に「ゲッター」を定義できます (これはストアの計算されたプロパテ...

Dockerコンテナ同士を接続する3つの方法の詳しい説明

Docker コンテナ間の相互接続と通信には 3 つの方法があります。 Docker 内部ネットワー...

HTMLページ作成に関する私の経験の簡単な要約

Word of Mouth に入社して 3 ~ 4 か月が経ちました。仕事の中で一番の収穫は、ビジュ...

MySQL クラスター化インデックスのページ分割原理の分析例

この記事では、MySQL クラスター化インデックスのページ分割を例を使って説明します。ご参考までに、...

RedisとMySQLの違いを簡単に説明してください

MySQL はディスクに保存される永続的なストレージであり、取得には一定の IO が伴うことはご存じ...

VMware Workstation 14 Pro に Win10 システムをインストールする

この記事では、VMware Workstation 14 Proにシステムをインストールする方法を紹...

JavaScriptのアロー関数の特徴と通常の関数との違い

目次1. 矢印関数の使用1. 通常関数から矢印関数へ2. 中括弧を省略してリターンする3. 括弧を省...

CSS を使用してプログレスバーと順序プログレスバーを実装する例

この半月、期末試験の準備にかなりのエネルギーを費やしました。今日はしっかり復習するべきだったのですが...

Windows で MySQL マスター スレーブ レプリケーションを構成する方法

MySQL マスター/スレーブ レプリケーションを使用すると、1 つのデータベース (マスター デー...