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の動作原理を理解しましょう

推薦する

マウスをホバーすると画像が折りたたまれる効果を実現する CSS

マウスをホバーすると画像が折りたたまれる効果を実現する CSS 1. 実施のポイント折り畳みは複数の...

ウェブ開発におけるクロスドメインの理由に対する複数のソリューション

目次クロスドメインの理由JSONP Nginxソリューションバックエンドソリューションクロスドメイン...

レスポンシブ原則をシミュレートするための基礎コードの Vue 実装の例

目次1.Vue.js の機能: 2.Observer.js 関数 (データハイジャック): 3. C...

Dockerをクリーンアンインストールする方法の詳細な説明

まず、サーバー環境情報: アンインストールの理由:しばらくするとホストマシンのディスクが100%にな...

docker cp ファイルをコピーしてコンテナに入る

実行中のコンテナに入る # コンテナに入り、新しいターミナルを開きます# docker exec -...

htmlダウンロード機能の詳しい説明

新しいプロジェクトは基本的に終了しました。フロントエンドとバックエンドを分離して統合を完了したのは初...

Vue3ナビゲーションバーコンポーネントのカプセル化実装方法

参考までに、Vue3でナビゲーションバーコンポーネントをカプセル化し、スクロールバーのスクロールに合...

mysql スケジュールタスク (イベント イベント) の詳細な説明

1. イベントの簡単な紹介イベントは、MySQL が特定の時間に呼び出す手続き型データベース オブジ...

Link と @import の違いを詳しく見る

ページで CSS を使用する主な方法は、スタイル属性値をインラインで追加する方法、ページ ヘッダーで...

ファイル書き込みを使用して Linux アプリケーションをデバッグする方法

Linux ではすべてがファイルなので、Android システム自体は Linux + Java だ...

JavaScript関数の詳細な説明これを指す問題

目次1.関数内のこの方向1. 通常の機能2. コンストラクター3. オブジェクトメソッド4. イベン...

Linux システムで Code Cloud にプロジェクトをアップロードする方法

Code Cloudで新しいプロジェクトtest1を作成します。 公開鍵を取得するには次のコマンドを...

Linuxで相対パスを表現する方法

たとえば、現在のパスが /var/log で、/usr ディレクトリに移動する場合は、次のコマンドを...