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

推薦する

LinuxでIPアドレスを手動で設定するための詳細な手順

目次1.まずネットワークカードの設定ディレクトリに入る2. ifcfg-ens33ネットワークカード...

Vue の双方向イベントバインディング v-model の原理についての簡単な説明

目次説明する:要約する補充するDOM を直接変更して操作する js や jQuery とは異なり、V...

MySQLはインデックスプッシュダウンを数秒で理解するのに役立ちます

目次1. インデックスプッシュダウン最適化の原理2. インデックスプッシュダウンの具体的な実践1. ...

HTMLページ埋め込み動画とJSコントロール切り替え動画例の詳しい説明

まず、ページにビデオを埋め込むための HTML コードは次のとおりです。コードをコピーコードは次のと...

検索履歴を実装するjQueryプラグイン

毎日jQueryプラグイン - 検索履歴を作成するためのものです。参考までに、具体的な内容は次のとお...

権限の問題によりMySQLの設定ファイルmy.cnfを起動できない問題の解決方法

この記事では、権限の問題により MySQL 構成ファイル my.cnf を起動できない場合の関連する...

tomcat8の最新のLinuxインストールプロセス

ダウンロード参考:ダウンロードするコアパッケージを選択してくださいダウンロード後、ファイルをサーバー...

新しいウィンドウで開くジャンプメニュー、window.open の使い方の紹介

コードをコピーコードは次のとおりです。 <前> <div> <sele...

JS における for、for...in、for...of、forEach の違いと使用例

forループ基本的な構文形式: for(変数の初期化; 条件式; 演算式){ループ本体ステートメント...

SSH接続を介してXshellを使用したUbuntu 20.04で報告されたサービス問題の詳細な説明

1. 最近、Ubuntu の新しいバージョンをインストールしました。/etc/ssh/sshd_co...

画像プレビュー付きのアップロードフォームの完全な HTML

画像プレビュー機能付きのアップロードフォーム、完全なHTMLコードは次のとおりです。 <htm...

データベースの削除から逃走までの MySQL の徹底分析_上級編 (I) - データ整合性

1. データ整合性の概要1. データ整合性の概要データの冗長性とは、データベース内に重複したデータが...

HTML におけるブロックコメントの使用に関する詳細な紹介

HTML の一般的なコメント: <!--XXXXXXXX--> (XXXXXXXX はコ...

CentOS 環境で NFS リモート ディレクトリ マウントを使用する手順の紹介

目次1. NFS の概要2. NFS構築1. NFSサーバーの構築2. NFSクライアントの構築3....