私は現在APIを構築しており、(GUIで)使用量とレート制限の使用状況を監視できるツールを探しています。私は以下を含むいくつかのエンタープライズソリューションに出くわしました:
Apigeeエンタープライズプランはまさに私が探しているものですが、プランstartは月額$ 3000で、私の価格範囲外です。他のソリューションはすべて高すぎるか、私が探しているソリューションを提供していません。
これにより、次のようないくつかのオープンソースオプションを検討することになりました。
ワニスはかなり完全な解決策のようです。ただし、データを視覚化するためのGUIを構築する必要があります。
私の最後のオプションは、EventMachineとRubyを使用して最初からソリューションを構築することです。
何かアドバイス?
これがどれほど難しいかを過大評価していると思います。
コードには、redis/memcached/mongodbのあるカウンター(必要に応じて1/24時間カウンターまたは時間/日カウンター)を用意し、制限に達したときに適切なエラーを返します。カウントをその場でインクリメントするか、ログを処理するときに非同期でインクリメントすることができます。
データを表示するには、必要に応じてカウントを要約した簡単なWebページを作成します。
私たちが使用する場合、物事を正確に制限する必要はないので、通常はログインフラストラクチャを介してログを記録するだけで、(リアルタイムっぽいスクライブを介して)ログプロセッサの1つがこの種のことを要約します。出力は、ビジーなIP /クライアント、nagiosが監視できるページ、およびmuninがグラフを作成するためにデータを取得するURLを含む単純なHTMLページです。
naxsi をnginxで使用できます。/requestDeniedの場所を、必要な制限ルールで上書きするだけです。
naxsiリダイレクトパラメータを対応する制限にマップします。
map $arg_uri $limit_uri {
123.php limit_zone1;
234.php limit_zone2;
default limit_default;
}
場所での使用制限:
location /RequestDenied {
proxy_pass http://127.0.0.1:4242;
limit_req $limit_uri;
}