Nginx のステータス監視とログ分析の詳細な説明

Nginx のステータス監視とログ分析の詳細な説明

1. Nginx ステータス監視

Nginx には、Nginx の全体的なアクセス ステータスを監視するために使用できる組み込みのステータス情報監視ページが用意されています。この機能は、ngx_http_stub_status_module モジュールによって実装されます。

nginx -V 2>&1 | grep -o with-http_stub_status_module コマンドを使用して、現在の Nginx にステータス機能があるかどうかを確認します。出力が ngx_http_stub_status_module の場合、ステータス機能があることを意味します。そうでない場合は、コンパイル時にこのモジュールを追加できます。

デフォルトではステータスは無効になっているため、有効にしてデータにアクセスするための URI を指定する必要があります。

サーバー{
  聞く 80;
  サーバー名 デフォルトサーバー;
  場所 / ステータス {
    stub_status オン; 
    114.247.125.227 を許可します。
  }
}

許可設定は、指定された IP のみが nginx ステータス機能にアクセスできるようにします。削除すると、制限はなくなります。

Nginx を再起動した後、ブラウザで http://{IP}/status にアクセスして、ステータス監視情報を表示します。

  • アクティブ接続: 現在アクティブなクライアント接続数(待機中のクライアント接続を含む)。TCP接続ステータスのEstablishedおよびSYN_ACKに相当します。
  • 受け入れ: 受け入れられたクライアント接続、つまりワーカープロセスによって受信された接続の合計数
  • 処理済み: 処理された接続の合計数
  • リクエスト: クライアントからの HTTP リクエストの総数
  • 読み取り: 現在読み取られている http リクエストの数 (http リクエスト ヘッダーを読み取る)
  • 書き込み: 現在応答準備ができている接続の数 (http 応答ヘッダーに書き込まれます)
  • 待機中: 現在待機中のアイドル クライアント要求の数。待機時間は、読み取りと書き込みの間隔です。

Nginx データを収集した後、監視ツールを使用して監視できます。

2. ログ分析

Nginxのデフォルトのログフォーマット設定は/etc/nginx/nginx.confにあります。

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" "$http_x_forwarded_for" $request_time $upstream_response_time';

印刷されたログの例

39.105.66.117 - mp [11/Sep/2019:19:03:01 +0800] "POST /salesplatform-gateway/users HTTP/1.1" 200 575 "-" "Apache-HttpClient/4.5.5 (Java/1.8.0_161)" "-" 0.040 0.040
39.105.66.117 - mp [11/Sep/2019:19:03:08 +0800] "POST /salesplatform-gateway/users HTTP/1.1" 200 575 "-" "Apache-HttpClient/4.5.5 (Java/1.8.0_161)" "-" 0.008 0.008

  • $remote_addr: クライアントのIPアドレス
  • $remote_user: リモートクライアントのユーザー名を記録するために使用されます
  • $time_local: アクセス時間とタイムゾーンを記録するために使用されます
  • $request: リクエストURLとリクエストメソッドを記録するために使用されます
  • $status: 応答ステータスコード
  • $body_bytes_sent: クライアントに送信されたファイル本体のコンテンツのバイト数
  • $http_referer: ユーザーがアクセスしたリンクを記録できます
  • $http_user_agent: ユーザーが使用するブラウザに関する情報
  • $http_x_forwarded_for: クライアントのIPを記録し、プロキシサーバー経由でクライアントのIPアドレスを記録できます。
  • $request_time: ユーザーのリクエストの最初のバイトを受信して​​から応答データを送信するまでの時間を指します。つまり、$request_time には、クライアントのリクエスト データを受信した時間、バックエンド プログラムが応答した時間、およびクライアントに応答データを送信する時間が含まれます。
  • $upstream_response_time: アップストリームサーバーからの応答を受信するのにかかった時間

一般的な分析コマンド

1. アクセスIPに基づいてUVをカウントする

awk '{print $1}' paycenteraccess.log | sort -n | uniq | wc -l

2. 最も頻繁にアクセスされる IP (上位 10) を照会する

awk '{print $1}' /var/log/nginx/access.log | sort -n | uniq -c | sort -rn | head -n 10

3. 一定時間(1~8時)のIPアクセス量を確認する

awk '$4 >="[25/Mar/2020:01:00:00" && $4 <="[25/Mar/2020:08:00:00"' /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr |wc -l

4. 100回以上アクセスしたIPアドレスを表示する

awk '{print $1}' /var/log/nginx/access.log | sort -n |uniq -c |awk '{if($1 >100) print $0}'|sort -rn

5. 指定したIPアドレスからアクセスされたURLと訪問回数を表示する

grep "39.105.67.140" /var/log/nginx/access.log|awk '{print $7}' |sort |uniq -c |sort -n -k 1 -r

6. 訪問されたURLに基​​づいてPVをカウントする

cat /var/log/nginx/access.log |awk '{print $7}' |wc -l

7. 最も頻繁にアクセスされる URL (上位 10 件) を照会する

awk '{print $7}' /var/log/nginx/access.log | ソート | uniq -c | ソート -rn | ヘッド -n 10

8. 最も頻繁にアクセスされる URL を表示します ([/api/appid を除く]) (上位 10 件)

grep -v '/api/appid' /var/log/nginx/access.log|awk '{print $7}' | sort |uniq -c | sort -rn | head -n 10

9. 100回以上のページ訪問があるページを表示する

cat /var/log/nginx/access.log | cut -d ' ' -f 7 | sort |uniq -c | awk '{if ($1 > 100) print $0}' | less

10. 最新の1,000件のレコードと最もアクセスされたページを表示する

tail -1000 /var/log/nginx/access.log |awk '{print $7}'|sort|uniq -c|sort -nr|less

11. 1時間あたりのリクエスト数と上位10件の時点をカウントします(時間単位の精度)

awk '{print $4}' /var/log/nginx/access.log |cut -c 14-15|sort|uniq -c|sort -nr|head -n 10

12. 1分あたりのリクエスト数と上位10件の時点をカウントします(分単位の精度)

awk '{print $4}' /var/log/nginx/access.log |cut -c 14-18|sort|uniq -c|sort -nr|head -n 10

13. 1秒あたりのリクエスト数と上位10件の時点を数える(秒単位の精度)

awk '{print $4}' /var/log/nginx/access.log |cut -c 14-21|sort|uniq -c|sort -nr|head -n 10

14. 指定した期間のログを検索する

awk '$4 >="[2020/03/25:01:00:00" && $4 <="[2020/03/25:08:00:00"' /var/log/nginx/access.log

15. 送信時間が0.6秒を超えるURLをリストし、最初の10件を表示する。

cat /var/log/nginx/access.log |awk '(substr($NF,2,5) > 0.6){print $4,$7,substr($NF,2,5)}' | awk -F '"' '{print $1,$2,$3}' |sort -k3 -rn | head -10

16. /api/appid のリクエスト時間が 0.6 秒を超える時点をリストします。

cat /var/log/nginx/access.log |awk '(substr($NF,2,5) > 0.6 && $7~/\/api\/appid/){print $4,$7,substr($NF,2,5)}' |awk -F '"' '{print $1,$2,$3}' |sort -k3 -rn | head -10

17. 最も時間のかかるリクエスト時間、URL、期間のトップ10を取得する

cat /var/log/nginx/access.log |awk '{print $4,$7,substr($NF,2,5)}' | awk -F '"' '{print $1,$2,$3}' | sort -k3 -rn | head -10

要約する

Nginx ステータス監視とログ分析に関するこの記事はこれで終わりです。Nginx ステータス監視とログ分析に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • nginx ログ設定手順の詳細な説明
  • ELK を使用して Nginx サーバー ログを分析する方法の詳細な説明
  • nginx サーバーの access_log の詳細な分析と構成
  • nginx ログのアクセス時間と最も時間のかかるページ (遅いクエリ) のシェル スクリプト分析
  • PHP を Nginx サーバーに接続し、Nginx ログを解析する方法
  • Nginx ログ統計分析の一般的なコマンドの概要
  • Nginx サービスステータス監視方法
  • Nginx 構成検出サービスのステータスを実装する方法
  • Pythonはnginxのポートとプロセスの状態を監視します

<<:  MySQLのルートパスワードをリセットする最も簡単な方法

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

推薦する

マウスオーバーボタンアニメーションを実現する純粋な CSS3 パート 2

前の 2 つの章を終えて、ボタンのフローティング アニメーションについて新たな理解が得られましたか?...

JS WebSocketを使用して簡単なチャットを実装する方法

目次ショートポーリングロングポーリングウェブソケットコミュニケーションの原則シンプルな1対1チャット...

Vueカスタムコンポーネントは双方向バインディングを実装します

シナリオ:一般的に使用される親コンポーネントと子コンポーネント間の相互作用方法は次のとおりです。親コ...

MySQL の DDL と DML についての簡単な説明

目次序文1. DDL 1.1 データベース操作1.2 データテーブルの操作1.3 一般的なデータ型1...

VMware + Ubuntu18.04 による Hadoop クラスタ環境の構築に関するグラフィック チュートリアル

目次序文VMware クローン仮想マシン (準備、3 台の仮想マシンのクローン、1 台のマスター、2...

Vue でのルータービューコンポーネントの使用に関する詳細な説明

Vue プロジェクトを開発する場合、さまざまなコンポーネント ページを表示するために切り替えることが...

Ubuntuがネットワークに接続できない場合の解決策

仮想マシン内の Ubuntu がネットワークに接続できない場合の効果的な解決策: 1. Ubuntu...

トップに戻るボタンの例の JavaScript 実装

この記事では、トップに戻るボタンを実装するためのJavaScriptの具体的なコードを参考までに紹介...

MySQL の低速クエリの最適化: 理論と実践からの制限の利点

多くの場合、クエリの結果は最大で 1 つのデータ レコードになることが予想されます。この場合、制限 ...

IE8は優れたエクスペリエンスを提供します: アクティビティ

今日は IE8 ベータ 1 (以下、IE8 と略します) をチラ見しました。IE8 は素晴らしい体験...

MySQL 空間データストレージと関数

目次1. データ型1. MySQL空間データとは何か2. GeoJSONとは3. 空間データ型のフォ...

Javascript と Vue を組み合わせて、あらゆる迷路画像の自動パス検索を実現します。

目次序文2次元配列、一方向基本インターフェースのマッピング幅優先、包括的検索マップ編集経路探索アルゴ...

Vueリストレンダリングキーの原理と機能の詳細な説明

目次リストレンダリングキーの原理と機能主要原則の分析キーの役割要約するリストレンダリングキーの原理と...

JavaScript でピンボール ゲームの Web バージョンを実装する

参考までに、JavaScriptのオブジェクトとメソッドを使用して実装されたWebピンボールゲームを...

Nodejs プラグインと使用方法の概要

このチュートリアルの動作環境: Windows 7 システム、nodejs バージョン 12.19....