Nginx sysguard モジュール
このドキュメントでは、2017 年 2 月 23 日にリリースされた nginx-module-sysguard v0.1.0
について説明します。
以前のバージョンはテストされていません。
shell> git clone git://github.com/vozlt/nginx-module-sysguard.git
--add-module=/path/to/nginx-module-sysguard
nginx バイナリをビルドします。
nginx バイナリをインストールします。
http {
...
server {
...
sysguard on;
sysguard_mode or;
sysguard_load load=10.5 action=/loadlimit;
sysguard_mem swapratio=20% action=/swaplimit;
sysguard_mem free=100M action=/freelimit;
sysguard_rt rt=0.01 period=5s method=AMM:10 action=/rtlimit;
location /loadlimit {
return 503 ;
}
location /swaplimit {
return 503 ;
}
location /freelimit {
return 503 ;
}
location /rtlimit {
return 503 ;
}
}
...
server {
...
location /api {
sysguard on;
sysguard_mode or;
sysguard_load load=20 action=/limit;
sysguard_mem swapratio=10% action=/limit;
sysguard_rt rt=2.01 period=5s method=WMA:10 action=/limit;
...
}
location /images {
sysguard on;
sysguard_mode and;
sysguard_load load=20 action=/limit;
sysguard_mem swapratio=10% action=/limit;
sysguard_rt rt=2.01 period=5s method=WMA:10 action=/limit;
...
}
location /limit {
return 503 ;
}
}
}
このモジュールは、システム負荷、メモリ使用量が高すぎる場合、またはリクエストの応答が遅すぎる場合にサーバーを保護するために使用できます。これは、同じ機能をサポートするために、tengine の sysguard を純粋な NGINX に移植したバージョンです。
Caveats:
このモジュールには、sysinfo(2) システムコール、または glibc の getloadavg(3) 関数が必要であることに注意してください。また、メモリ情報を取得するには /proc ファイル システムも必要です。
次の埋め込み変数が提供されます。
$sysguard_load
の値が 100 の場合、負荷は 0.1(100/1000) になります。 (/ミリ秒)$sysguard_rt
の値が 100 の場合、応答時間は 0.1 秒 (100/1000) です。 (/ミリ秒)- | - |
---|---|
構文 | sysguard <オン|オフ> |
デフォルト | オフ |
コンテクスト | http、サーバー、場所 |
Description:
モジュールの動作を有効または無効にします。
- | - |
---|---|
構文 | sysguard_loadロード=数値[アクション= /url ] |
デフォルト | - |
コンテクスト | http、サーバー、場所 |
Description:
負荷のしきい値を指定します。システム負荷がこのしきい値を超えると、後続のすべてのリクエストは「action」パラメータで指定された URL にリダイレクトされます。 「アクション」URL が定義されていない場合は、503 が返されます。このディレクティブは、固定しきい値の代わりに ncpuratio を使用することもサポートしています。「ncpu」は CPU のコアの数を意味します。このディレクティブは次のように使用できます。load=ncpu1.5
- | - |
---|---|
構文 | sysguard_mem swapratio=比率% free=サイズ[action= /url ] |
デフォルト | - |
コンテクスト | http、サーバー、場所 |
Description:
使用済みスワップ メモリまたは空きメモリのしきい値を指定します。スワップ メモリの使用率がこのしきい値を超えるか、空きメモリがこのサイズを下回ると、後続のすべてのリクエストは 'action' パラメータで指定された URL にリダイレクトされます。 「アクション」URL がない場合は 503 が返されます。 Sysguard は、次の戦略を使用してメモリ空き容量を計算します: 「memfree = フリー + バッファ + キャッシュ」
- | - |
---|---|
構文 | sysguard_rt rt=秒期間=時間[メソッド= |
デフォルト | - |
コンテクスト | http、サーバー、場所 |
Description:
応答時間のしきい値を指定します。パラメータ rt は、平均応答時間のしきい値を秒単位で設定するために使用されます。パラメータ period は、統計サイクルの期間を指定するために使用されます。システムの平均応答時間がユーザーが指定したしきい値を超えた場合、受信リクエストはパラメーター「action」で定義された指定の URL にリダイレクトされます。 「アクション」が提示されない場合、リクエストは 503 エラーで直接応答されます。このmethod
応答処理時間の平均を計算する式です。メソッド内のnumber
は、平均を計算するサンプルの数です。デフォルトのメソッドはmethod=AMM:period
に設定されます。
- | - |
---|---|
構文 | sysguard_mode <および|または> |
デフォルト | または |
コンテクスト | http、サーバー、場所 |
Description:
複数のタイプのモニターがある場合、このディレクティブは、すべてのモニター間の関係 (すべての一致には「and」、任意の一致には「or」) を指定するために使用されます。
- | - |
---|---|
構文 | sysguard_interval時間 |
デフォルト | 1秒 |
コンテクスト | http、サーバー、場所 |
Description:
システム情報を更新する時間間隔を指定します。デフォルト値は 1 秒です。これは、sysguard がサーバーのステータスを 1 秒に 1 回更新することを意味します。
- | - |
---|---|
構文 | sysguard_log_level <情報|通知|警告|エラー> |
デフォルト | エラー |
コンテクスト | http、サーバー、場所 |
Description:
sysguard のログ レベルを指定します。