Nginx ログ出力のリクエスト後パラメータを設定する方法

Nginx ログ出力のリクエスト後パラメータを設定する方法

【序文】

当プロジェクトの SMS 機能は、第三者に接続することです。第三者からの元の受信確認要求は get 要求でした。トラブルシューティング中、nginx ログを通じて相手からの要求のパラメータを取得できました。最近、別の第三者に変更しました。新しい第三者からの確認要求は post でした。トラブルシューティング中、nginx が特定のパラメータを出力しないことがわかりました。そこで、いくつかの情報を参照し、運用と保守で実験とオンライン調整を行いました。調整後、要求パラメータを取得できるようになり、問題のトラブルシューティングがより便利になりました。

[Nginx は印刷ポストリクエストパラメータを設定します]

1. Nginx 構成ファイル (nginx.conf) を設定して、POST リクエスト パラメータを出力します。中国語の文字化けを防ぐために、http モジュールの log_format に "dm":$request_body を追加し、escape=json を追加します。

 log_format メイン escape=json '{ "@timestamp": "$time_iso8601", '
            '"remote_addr": "$remote_addr",'
            '"costime": "$request_time",'
            '"リアルタイム": "$upstream_response_time",'
            '"ステータス": $status,'
            '"x_forwarded": "$http_x_forwarded_for",'
            '"リファラー": "$http_referer",'
            '"リクエスト": "$リクエスト",'
            '"upstr_addr": "$upstream_addr",'
            '"バイト":$body_bytes_sent,'
            '"dm":$request_body,'
            '"エージェント": "$http_user_agent" }';

   access_log /var/log/nginx/access.log メイン;

2. 設定前後の効果の比較

1. 送信リクエストのJSON形式

{
  "結果":[
    {
   "価格":{
        "メッセージあたりの価格":0.01,
        "通貨":"aaa"
      },
      "メッセージID":"ff4804ef-6ab6-4abd-984d-ab3b1387e852",
      "宛先":"385981178",
      "送信日時":"2015-02-12T09:58:20.323+0100",
      "完了日時":"2015-02-12T09:58:20.337+0100",
      "SMS数":1,
      "状態":{
        "id":5,
        "グループID":3,
        "groupName":"配信済み",
        "name":"DELIVERED_TO_HANDSET",
        "description":"メッセージが端末に配信されました"
      },
      "エラー":{
        "グループID":0,
        "グループ名":"OK",
        "id":0,
        "名前":"NO_ERROR",
        "説明":"エラーなし",
        "永続的":false
      }
    }
  ]
}

2. postリクエストを設定する前のnginxのプリントアウトの結果は明らかにパラメータをプリントアウトしません

3. postリクエストを設定した後、nginxはパラメータを出力し、パラメータは出力されているが文字化けしていることを発見する

4. 文字化けしたコードを解読する

(1) log_format mainの後にescape=jsonを追加する必要があります

(2)nginxのバージョンは1.15.1以上である必要があります

(3)上記の最終印刷結果を満たす

3. nginxログを表示する必要性

1. より包括的: Java リクエスト ログよりも包括的に、訪問者の IP ブラウザやリクエスト パラメータなどの情報を記録できます。

2. リクエスト数が多い場合、Java プログラムでは処理できません。このとき、Java ログには冗長なアクセス リクエストはありませんが、nginx には冗長なアクセス リクエストがあるため、トラブルシューティングやシステム パフォーマンスの最適化に役立ちます。

【まとめ】

1. ログを通じて問題を素早く特定できます。

2. 問題のトラブルシューティングを行うときは、包括的かつ多面的に検討する必要があります。

Nginx ログ印刷の post リクエスト パラメータを設定する方法についてはこれで終わりです。より関連性の高い Nginx ログ印刷の post リクエスト パラメータについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • nginx ログ設定手順の詳細な説明
  • Nginx でアクセスログをリアルタイムで表示できるようにする詳細な手順
  • Nginx ログの日付別カット(日別カット)の詳しい説明
  • nginx サーバーの access_log の詳細な分析と構成
  • nginx で JSON 形式でログを記録する設定例
  • nginx ログにリクエスト応答ログを追加する (推奨)
  • Nginx は favicon.ico と robots.txt のログ設定をオフにします

<<:  MySQL B-Tree インデックスの簡単な分析

>>:  要素テーブルの行と列のドラッグを実装する例

推薦する

Linuxのsortコマンドの複数のパラメータを理解するための1つの質問

sort コマンドは非常によく使用されますが、-o、-n、-u、-r などの多くのパラメーターがあり...

MySQL 8.0.15 winx64 のインストールと設定方法のグラフィックチュートリアル (Windows の場合)

この記事では、MySQL 8.0.15 winx64のインストールと設定方法を参考までに紹介します。...

MySQL の連結で複数の一重引用符と三重引用符を使用する際の問題

文字列を動的に連結する場合、文字連結を使用することが多いです。次のような連結の引用符の意味がわかりま...

CSS を使用して複数の方法で等幅レイアウトを実装するサンプルコード

この記事で説明する等幅レイアウトでは、純粋な CSS を使用して、要素の幅を手動で設定することなく、...

HTML フォームタグチュートリアル (2):

このチュートリアルでは、ウェブデザインにおけるFORMフォームタグのさまざまな属性の応用を紹介します...

HTML ページでコンテンツの選択、コピー、右クリックを防止する方法の詳細な説明

時には、Web ページに掲載されているコンテンツが悪意のある人物に盗用されるのを望まないため、Web...

MacでのMySQL初期化パスワード操作

Macでデータベースを操作する際に個人が遭遇するデータベース起動の問題の簡単な記録1. Apple-...

MySQL で GTID モードをオンラインで有効または無効にする

目次基本的な概要GTIDをオンラインで有効にする1. GTID検証ENFORCE_GTID_CONS...

1 つの記事で Vuex を理解する

目次概要Vuex の 4 つの主要オブジェクト状態の使用突然変異の使用ゲッターの使用アクションの使用...

JSブラウザイベントモデルの詳細な説明

目次イベントとは簡単な例イベントをバインドする方法フレームワーク内のイベントイベントオブジェクトイベ...

JavaScriptでよく使われる配列重複排除実戦ソースコード

アレイの重複排除は、通常、就職面接中に遭遇し、アレイの重複排除方法のコードを手動で記述することが求め...

マウス追従ゲームを実現するjs

この記事では、マウス追従ゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な内...

Docker CPU 制限の実装

1. --cpu=<値> 1) コンテナが使用できるCPUリソースの量を指定しますが、コ...

mysql 実行プラン ID が空である (UNION キーワード) の詳細な説明

導入作業プロセス中に、遅いクエリが調整されることがあります。 MySQL SQL ステートメントのチ...

Linux sftp コマンドの使用法

SFTPの概念sftp は、安全なファイル転送プロトコルである Secure File Transf...