ホームページ  >  記事  >  バックエンド開発  >  golang gin リクエスト統計

golang gin リクエスト統計

WBOY
WBOYオリジナル
2023-05-14 17:20:07976ブラウズ

Web アプリケーションの開発に伴い、パフォーマンスとコードの最適化に対する要求がますます高まっています。この場合、リクエストの監視と統計が特に重要になります。この記事では、GolangとGinフレームワークを使用してリクエスト統計機能を実装する方法を紹介します。

背景

Web アプリケーションでは、次のような状況が発生すると、パフォーマンスの問題が発生する可能性があります。

  • 頻繁なデータベース クエリ
  • ネットワーク遅延が長すぎる
  • リクエスト タイムアウト
  • 同時リクエストが多すぎます

この場合、リクエストの統計と視覚的な表示は、問題を迅速に発見し、適切な措置を講じるのに役立ちます。

リクエストのカウント方法

まず、サーバーを通過するすべてのリクエスト情報を記録するミドルウェアを定義する必要があります。リクエストごとに、次の情報を記録する必要があります:

  • リクエスト パス
  • HTTP メソッド
  • リクエスト開始時間
  • リクエスト終了時間
  • リクエスト期間
  • リクエスト ステータス コード

Gin フレームワークを使用して、このミドルウェアを実行する関数を定義できます。まず、受信ハンドラーを実行してから、リクエスト情報をログに記録する必要があります。

func RequestStats() gin.HandlerFunc {
    return func(c *gin.Context) {
        t := time.Now()

        c.Next()

        latency := time.Since(t)

        status := c.Writer.Status()
        path := c.Request.URL.Path
        method := c.Request.Method

        log.Printf("[GIN] %s %s %d %v", method, path, status, latency)
    }
}

この関数では、log.Printf() 関数を使用してリクエスト情報を出力します。ここで、このミドルウェアを Jin エンジンに追加できます。

router := gin.Default()
router.Use(RequestStats())

このようにして、各リクエスト ミドルウェアが実行されるときにすべてのリクエスト情報を記録します。

視覚的なリクエスト統計

リクエスト統計をユーザーに表示するには、Web インターフェイスを使用できます。この場合、MVC (Model-View-Controller) デザイン パターンの使用が特に適しています。この場合、コントローラーはすべての Web リクエストを処理し、モデルからどのデータを取得するか、およびそれをどのように表示するかを決定する責任を負います。ビューはデータを表示する責任があります。

最初のステップは、コントローラーを定義することです。コントローラーは、ファイルに保存されているリクエスト統計を読み取り、レンダリングのためにビューに渡します。

func GetStats(c *gin.Context) {
    data, err := ioutil.ReadFile("stats.txt")
    if err != nil {
        c.String(http.StatusInternalServerError, fmt.Sprintf("Error reading file: %v", err))
        return
    }

    c.HTML(http.StatusOK, "stats.html", gin.H{
        "title": "Request Statistics",
        "data":  string(data),
    })
}

このコントローラー メソッドでは、最初にファイルからリクエスト統計を読み取ります。次に、データはレンダリングのために文字列としてテンプレート エンジンに渡されます。

次のステップはビューを定義することです。 HTML と CSS を使用して、美しいユーザー インターフェイスを作成できます。

<!DOCTYPE html>
<html>
    <head>
        <title>{{.title}}</title>
        <style>
            table {
                border-collapse: collapse;
                width: 100%;
            }

            th, td {
                text-align: left;
                padding: 8px;
            }

            th {
                background-color: #4CAF50;
                color: white;
            }

            tr:nth-child(even){background-color: #f2f2f2}
        </style>
    </head>
    <body>
        <h2>{{.title}}</h2>
        <table>
            <tr>
                <th>HTTP Method</th>
                <th>Request Path</th>
                <th>Status Code</th>
                <th>Latency</th>
            </tr>
            {{range split .data "
"}}
            {{with split . " "}}
            <tr>
                <td>{{index . 0}}</td>
                <td>{{index . 1}}</td>
                <td>{{index . 2}}</td>
                <td>{{index . 3}}</td>
            </tr>
            {{end}}
            {{end}}
        </table>
    </body>
</html>

このテンプレートでは、HTML と CSS を使用して、リクエスト データを表示するテーブルを作成します。

最後に、コントローラーをルートに関連付け、Gin エンジンに登録する必要があります。

router.GET("/stats", GetStats)

これで、リクエスト統計システムが完成し、Web ページを使用して表示できるようになりました。ユーザーに表示される統計結果。

結論

リクエスト統計は、HTTP メソッド、リクエスト パス、リクエスト ステータス コード、リクエスト期間などの情報を記録することで、Web アプリケーションを識別するのに役立つ重要な Web アプリケーション機能です。 一般的なパフォーマンスの問題。この記事では、Golang 言語と Jin フレームワークを使用してリクエスト統計を実装し、HTML と CSS を使用してデータを表示します。この実装は比較的シンプルで保守が容易で、Web アプリケーションの問題を迅速に特定するのに役立ちます。

以上がgolang gin リクエスト統計の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。