وحدة حالة حركة مضيف Nginx الظاهرية
شاهد إصدارات GitHub للحصول على أحدث الإصدار الموسومة.
Run sudo prove -rt بعد تثبيت هذه الوحدة. مطلوب sudo لأن الاختبار يتطلب من nginx الاستماع على المنفذ 80.
لا يتم اختبار الإصدارات السابقة.
shell> git clone git://github.com/vozlt/nginx-module-vts.git
أضف الوحدة النمطية إلى تكوين الإنشاء عن طريق --add-module=/path/to/nginx-module-vts
بناء nginx ثنائي.
تثبيت nginx ثنائي.
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}هذه وحدة NGINX توفر الوصول إلى معلومات حالة المضيف الظاهرية. أنه يحتوي على الوضع الحالي مثل الخوادم ، المنبع ، ذاكرة التخزين المؤقت. هذا يشبه مراقبة النشاط المباشر لـ Nginx Plus. HTML المدمج مأخوذ أيضًا من الصفحة التجريبية للإصدار القديم.
بادئ ذي بدء ، يتطلب التوجيه vhost_traffic_status_zone ، ثم إذا تم تعيين التوجيه vhost_traffic_status_display ، يمكن الوصول إليه على النحو التالي:
/status/format/json ، فستستجيب مع وثيقة JSON التي تحتوي على بيانات النشاط الحالية لاستخدامها في لوحات المعلومات الحية وأدوات مراقبة الطرف الثالث./status/format/html ، فستستجيب مع لوحة القيادة المباشرة المدمجة في HTML التي تطلب داخليًا إلى /status/format/json ./status/format/jsonp ، فستستجيب بوظيفة رد اتصال JSONP تحتوي على بيانات النشاط الحالية لاستخدامها في لوحات المعلومات الحية وأدوات مراقبة الطرف الثالث./status/format/prometheus ، فستستجيب مع وثيقة Prometheus التي تحتوي على بيانات النشاط الحالية./status/control ، فستستجيب باستخدام مستند JSON بعد إعادة تعيين المناطق أو حذفها من خلال سلسلة استعلام. انظر السيطرة.يحتوي وثيقة JSON على ما يلي:
{
"hostName" : ...,
"moduleVersion" : ...,
"nginxVersion" : ...,
"loadMsec" : ...,
"nowMsec" : ...,
"connections" : {
"active" : ...,
"reading" : ...,
"writing" : ...,
"waiting" : ...,
"accepted" : ...,
"handled" : ...,
"requests" : ...
},
"sharedZones" : {
"name" : ...,
"maxSize" : ...,
"usedSize" : ...,
"usedNode" : ...
},
"serverZones" : {
"..." :{
"requestCounter" : ...,
"inBytes" : ...,
"outBytes" : ...,
"responses" :{
"1xx" : ...,
"2xx" : ...,
"3xx" : ...,
"4xx" : ...,
"5xx" : ...,
"miss" : ...,
"bypass" : ...,
"expired" : ...,
"stale" : ...,
"updating" : ...,
"revalidated" : ...,
"hit" : ...,
"scarce" : ...
},
"requestMsecCounter" : ...,
"requestMsec" : ...,
"requestMsecs" :{
"times" :[ ... ],
"msecs" :[ ... ]
},
"requestBuckets" :{
"msecs" :[ ... ],
"counters" :[ ... ]
},
}
...
},
"filterZones" : {
"..." :{
"..." :{
"requestCounter" : ...,
"inBytes" : ...,
"outBytes" : ...,
"responses" :{
"1xx" : ...,
"2xx" : ...,
"3xx" : ...,
"4xx" : ...,
"5xx" : ...,
"miss" : ...,
"bypass" : ...,
"expired" : ...,
"stale" : ...,
"updating" : ...,
"revalidated" : ...,
"hit" : ...,
"scarce" : ...
},
"requestMsecCounter" : ...,
"requestMsec" : ...,
"requestMsecs" :{
"times" :[ ... ],
"msecs" :[ ... ]
},
"requestBuckets" :{
"msecs" :[ ... ],
"counters" :[ ... ]
},
},
...
},
...
},
"upstreamZones" : {
"..." :[
{
"server" : ...,
"requestCounter" : ...,
"inBytes" : ...,
"outBytes" : ...,
"responses" :{
"1xx" : ...,
"2xx" : ...,
"3xx" : ...,
"4xx" : ...,
"5xx" : ...
},
"requestMsecCounter" : ...,
"requestMsec" : ...,
"requestMsecs" :{
"times" :[ ... ],
"msecs" :[ ... ]
},
"requestBuckets" :{
"msecs" :[ ... ],
"counters" :[ ... ]
},
"responseMsecCounter" : ...,
"responseMsec" : ...,
"responseMsecs" :{
"times" :[ ... ],
"msecs" :[ ... ]
},
"responseBuckets" :{
"msecs" :[ ... ],
"counters" :[ ... ]
},
"weight" : ...,
"maxFails" : ...,
"failTimeout" : ...,
"backup" : ...,
"down" : ...
}
...
],
...
}
"cacheZones" : {
"..." :{
"maxSize" : ...,
"usedSize" : ...,
"inBytes" : ...,
"outBytes" : ...,
"responses" :{
"miss" : ...,
"bypass" : ...,
"expired" : ...,
"stale" : ...,
"updating" : ...,
"revalidated" : ...,
"hit" : ...,
"scarce" : ...
}
},
...
}
}* ) ونسبة ضربvhost_traffic_status_filter_by_set_key* ) وتصلب نسبة ترشيح من خلال vhost_traffic_status_filter_by_set_key التوجيه الكائنات overCounts في مستند JSON هي في الغالب لنظام 32 بت ، وسوف تكون الزيادة بمقدار 1 إذا كانت قيمتها تفيض. يقوم التوجيه vhost_traffic_status_display_format بتعيين تنسيق OUPUT الافتراضي الذي هو واحد من JSON و JSONP و HTML و Prometheus. (افتراضي: JSON)
حساب حركة المرور على النحو التالي:
جميع الحسابات تعمل في مرحلة معالجة السجل من NGINX. لا يتم حساب عمليات إعادة التوجيه الداخلية (X-ACCEL-REDIRECT أو ERROR_PAGE) في المنبع.
Caveats: تعتمد هذه الوحدة على نظام تسجيل NGINX (NGX_HTTP_LOG_PHASE: المرحلة الأخيرة من NGINX HTTP) ، وبالتالي قد تكون حركة المرور في بعض الوقت مختلفًا عن حركة النطاق الترددي الحقيقي. WebSocket ، قد يكون التنزيلات الملغاة سببًا للاضطرابات. لا يهم عمل الوحدة النمطية على الإطلاق ما إذا كان توجيه Access_Log "على" أو "OFF". مرة أخرى ، تعمل هذه الوحدة بشكل جيد على "Access_log Off". عند استخدام العديد من المجالات ، فإنه يعين ليكون أول مجال (يسار) لتوجيه Server_Name. إذا كنت لا تريد ذلك ، راجع VHOST_TRAFFIC_STATUS_FILTER_BY_HOST ، VHOST_TRAFFIC_STATUS_FILTER_BY_SET_KEY.
راجع الوحدات التالية لإحصائيات stream المرور:
يتم حساب جميع المتوسطات حاليًا على أنها AMM (متوسط الحساب) خلال آخر 64 قيمًا.
إنه قادر على إعادة تعيين أو حذف مناطق المرور من خلال سلسلة استعلام. يستجيب الطلب بوثيقة JSON.
{status_uri} / control؟ cmd = {command} & group = {group} & Zone = {name} http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $geoip_country_code country:: $server_name ;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
} إذا تم تعيينه على النحو الوارد أعلاه ، فإن التحكم URI يشبه example.org/status/control .
حجج الطلب المتاحة هي كما يلي:
status | reset | delete >status/format/json .server | filter | upstream@alone | upstream@group | cache | * > هذا مشابه status/format/json إلا أنه يمكن الحصول على كل مناطق.
status/format/json . قيم Mainzones هي قيم الحالة الافتراضية بما في ذلك hostName ، moduleVersion ، nginxVersion ، loadMsec ، nowMsec ، connections .
namefilter_group @ nameupstream_group @ namenamenameتقوم بإعادة ضبط قيم المناطق المحددة إلى 0.
namefilter_group @ nameupstream_group @ namenamenameيحذف المناطق المحددة في الذاكرة المشتركة.
namefilter_group @ nameupstream_group @ namenamename يمكن أن تحصل على قيم الحالة في تكوين NGINX بشكل منفصل باستخدام vhost_traffic_status_set_by_filter التوجيه. يمكن أن تحصل على جميع قيم الحالة تقريبًا ويتم تخزين القيمة التي تم الحصول عليها في المتغير المعرفة من قبل المستخدم والتي هي الوسيطة الأولى.
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
upstream backend {
10.10.10.11:80;
10.10.10.12:80;
}
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $geoip_country_code country:: $server_name ;
vhost_traffic_status_set_by_filter $requestCounter server/example.org/requestCounter;
vhost_traffic_status_set_by_filter $requestCounterKR filter/country::example.org@KR/requestCounter;
location /backend {
vhost_traffic_status_set_by_filter $requestCounterB1 upstream@group/[email protected]:80/requestCounter;
proxy_pass http://backend;
}
}
}الإعدادات أعلاه هي كما يلي:
يرجى الاطلاع على توجيه VHOST_TRAFFIC_STATUS_SET_BY_FILTER للاستخدام التفصيلي.
يتم توفير معلومات الحالة التالية بتنسيق JSON:
/ {status_uri} /format /json
/ {status_uri} / control؟ cmd = status & ...
{version}(|.dev.{commit}) .vhost_traffic_status )vhost_traffic_status_histogram_buckets التوجيه.serverZones إلا أنها تضمنت أسماء المجموعات.vhost_traffic_status_histogram_buckets التوجيه.vhost_traffic_status_histogram_buckets التوجيه.weight الحالي للخادم.max_fails الحالي للخادم.fail_timeout الحالي للخادم.backup الحالي للخادم.down للخادم. في الأساس ، هذا مجرد علامة على خادم NGX_HTTP_UPStream_Module server backend3.example.com down (على سبيل المثال سيتم تغييره إلى حالة فعلية إذا قمت بتمكين توجيه منطقة المنبع.max_size في توجيه proxy_cache_path ، يتم تعيين القيمة المعتمدة على النظام NGX_MAX_OFF_T_VALUE افتراضيًا. بمعنى آخر ، هذه القيمة هي من Nginx ، وليس ما حددته.maxSize أعلاه. / {status_uri} / control؟ cmd = reset & ...
/ {status_uri} / control؟ cmd = delete & ...
يتم توفير المتغيرات المدمجة التالية:
يمكنه الحد من إجمالي حركة المرور لكل مضيف باستخدام التوجيه vhost_traffic_status_limit_traffic . كما أنه قادر على الحد من جميع حركة المرور باستخدام التوجيه vhost_traffic_status_limit_traffic_by_set_key . عند تجاوز الحد ، سيعيد الخادم الخطأ 503 (الخدمة غير متوفرة مؤقتًا) في الرد على طلب. يمكن أن يكون رمز الإرجاع قابل للتغيير.
http {
vhost_traffic_status_zone;
...
server {
server_name *.example.org;
vhost_traffic_status_limit_traffic in:64G;
vhost_traffic_status_limit_traffic out:1024G;
...
}
}*.example.org إلى 64g و 1024g على التوالي. إنه يعمل بشكل فردي لكل مجال إذا تم تمكين vhost_traffic_status_filter_by_host . http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
...
server {
server_name example.org;
vhost_traffic_status_filter_by_set_key $geoip_country_code country:: $server_name ;
vhost_traffic_status_limit_traffic_by_set_key FG@country:: $server_name @US out:1024G;
vhost_traffic_status_limit_traffic_by_set_key FG@country:: $server_name @CN out:2048G;
...
}
}
example.org إلى 1024g و 2048g على التوالي. http {
vhost_traffic_status_zone;
...
upstream backend {
server 10.10.10.17:80;
server 10.10.10.18:80;
}
server {
server_name example.org;
location /backend {
vhost_traffic_status_limit_traffic_by_set_key UG@[email protected]:80 in:512G;
vhost_traffic_status_limit_traffic_by_set_key UG@[email protected]:80 in:1024G;
proxy_pass http://backend;
}
...
}
}
example.org إلى 512g و 1024g لكل نظير. Caveats: حركة المرور هي النقل التراكمي أو العداد ، وليس عرض النطاق الترددي.
إنه قادر على حساب الإحصائيات الفردية المحددة للمستخدم باستخدام التوجيه vhost_traffic_status_filter_by_set_key .
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
server {
...
vhost_traffic_status_filter_by_set_key $geoip_country_code country:: $server_name ;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
} في الأساس ، تم تضمين صورة أعلام البلد في HTML. يتم تمكين صورة أعلام البلد إذا تم تضمين سلسلة country في اسم المجموعة وهي الوسيطة الثانية لتوجيه vhost_traffic_status_filter_by_set_key .
http {
vhost_traffic_status_zone;
...
server {
...
location ~ ^/storage/(.+)/.*$ {
set $volume $1 ;
vhost_traffic_status_filter_by_set_key $volume storage:: $server_name ;
}
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
} http {
vhost_traffic_status_zone;
map $http_user_agent $filter_user_agent {
default 'unknown' ;
~ iPhone ios;
~ Android android;
~ (MSIE|Mozilla) windows;
}
vhost_traffic_status_filter_by_set_key $filter_user_agent agent::*;
...
server {
...
vhost_traffic_status_filter_by_set_key $filter_user_agent agent:: $server_name ;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}http_user_agent الفردية http {
vhost_traffic_status_zone;
server {
...
vhost_traffic_status_filter_by_set_key $status $server_name ;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}http status code التفصيلي Caveats: متغير الحالة $ متاح في NGINX- (1.3.2 ، 1.2.2).
إذا كان لدى المجال سجلات DNS متعددة ، فيمكنك حساب حركة المرور لـ IPS الفردية للمجال باستخدام ميزة Filter أو متغير في Proxy_Pass.
http {
vhost_traffic_status_zone;
upstream backend {
elb.example.org:80;
}
...
server {
...
location /backend {
vhost_traffic_status_filter_by_set_key $upstream_addr upstream::backend;
proxy_pass backend;
}
}
}elb.example.org . إذا كان elb.example.org يحتوي على سجلات متعددة A ، فسيتم عرض جميع IPs في filterZones . في الإعدادات المذكورة أعلاه ، عندما يبدأ Nginx أو يقوم بإعادة تحميل تكوينه ، يستفسر عن خادم DNS لحل المجال و DNS يتم تخزين السجلات في الذاكرة. لذلك ، لا يتم تغيير سجلات DNS A في الذاكرة حتى لو كان DNS ، يتم تشجيع السجلات بواسطة مسؤول DNS إلا إذا قام Nginx بإعادة تشغيل أو إعادة تحميل. http {
vhost_traffic_status_zone;
resolver 10.10.10.53 valid=10s
...
server {
...
location /backend {
set $backend_server elb.example.org;
proxy_pass http:// $backend_server ;
}
}
}elb.example.org . إذا تم تغيير سجل elb.example.org ، فسيتم عرض كل من IP القديم و IP الجديد في ::nogroups . على عكس أول إعداد لمجموعة المنبع ، يعمل الإعداد الثاني بشكل جيد حتى لو كان DNS سجلات من قبل مسؤول DNS. Caveats: يرجى مزيد من التفاصيل حول NGINX DNS انظر DNS-Service-Discovery-Nginx-Plus.
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_bypass_limit on;
vhost_traffic_status_bypass_stats on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}/status URI من حساب حركة مرور الحالة وميزة الحد. انظر التوجيهات التالية: http {
vhost_traffic_status_zone;
vhost_traffic_status_dump /var/log/nginx/vts.db;
...
server {
...
}
}vhost_traffic_status_dump على بيانات الإحصاء بشكل دائم حتى لو تم إعادة تشغيل النظام أو إعادة تشغيل NGINX. يرجى الاطلاع على التوجيه VHOST_TRAFFIC_STATUS_DUMP للاستخدام التفصيلي. {{uri}} إلى حالة uri في الحالة. shell> vi share/status.template.html
var vtsStatusURI = "yourStatusUri/format/json", vtsUpdateInterval = 1000;
shell> cp share/status.template.html /usr/share/nginx/html/status.html
nginx.conf server {
server_name example.org;
root /usr/share/nginx/html;
# Redirect requests for / to /status.html
location = / {
return 301 /status.html;
}
location = /status.html {}
# Everything beginning /status (except for /status.html) is
# processed by the status handler
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format json;
}
}
http://example.org/status.html
تعديل share/status.template.html (لا تتغير {{uri}} سلسلة)
إعادة إنشاء ngx_http_vhost_traffic_status_module_html.h كما يلي:
shell> cd util
shell> ./tplToDefine.sh ../share/status.template.html > ../src/ngx_http_vhost_traffic_status_module_html.h
أضف الوحدة النمطية إلى تكوين الإنشاء عن طريق --add-module=/path/to/nginx-module-vts
بناء nginx ثنائي.
تثبيت nginx ثنائي.

| - | - |
|---|---|
| بناء الجملة | VHOST_TRAFFIC_STATUS <ON | OFF> |
| تقصير | عن |
| سياق | HTTP ، الخادم ، الموقع |
Description: تمكين أو تعطيل الوحدة النمطية. إذا قمت بتعيين توجيه vhost_traffic_status_zone ، يتم تمكينه تلقائيًا.
| - | - |
|---|---|
| بناء الجملة | VHOST_TRAFFIC_STATUS_ZONE [مشترك: الاسم: الحجم ] |
| تقصير | مشترك: VHOST_TRAFFIC_STATUS: 1M |
| سياق | http |
Description: يحدد المعلمات لمنطقة الذاكرة المشتركة التي ستحافظ على الحالات لمختلف المفاتيح. تتم مشاركة ذاكرة التخزين المؤقت بين جميع عمليات العمال. في معظم الحالات ، لا يزيد حجم الذاكرة المشتركة المستخدمة من قبل Nginx-Module-VTS كثيرًا. يتم زيادة حجم الذاكرة المشتركة بشكل جميل عند استخدام vhost_traffic_status_filter_by_set_key THERDIVE ولكن إذا تم إصلاح مفاتيح المرشح ( على سبيل المثال ، فإن العدد الإجمالي لرمز البلد حوالي 240 ) لا يزيد بشكل مستمر.
إذا كنت تستخدم vhost_traffic_status_filter_by_set_key ، قم بتعيينه على النحو التالي:
vhost_traffic_status_zone shared:vhost_traffic_status:32m )"ngx_slab_alloc() failed: no memory in vhost_traffic_status_zone" ) المطبوعة في error_log ، تزيد إلى أكثر من (المستخدم * 2).| - | - |
|---|---|
| بناء الجملة | VHOST_TRAFFIC_STATUS_DUMP PATH [ الفترة ] |
| تقصير | - |
| سياق | http |
Description: يتيح تفريغ بيانات الإحصائيات واستعادته. المسار هو موقع لتفريغ بيانات الإحصائيات (على سبيل المثال /var/log/nginx/vts.db /vts.db) الفترة هي وقت دورة النسخ الاحتياطي. (الافتراضي: 60s) يتم نسخه احتياطيًا على الفور بغض النظر عن دورة النسخ الاحتياطي إذا تم الخروج من NGINX بواسطة إشارة ( SIGKILL ).
| - | - |
|---|---|
| بناء الجملة | VHOST_TRAFFIC_STATUS_DISPLAY |
| تقصير | - |
| سياق | HTTP ، الخادم ، الموقع |
Description: يمكّن أو تعطيل معالج عرض الوحدة النمطية.
| - | - |
|---|---|
| بناء الجملة | vhost_traffic_status_display_format <json | html | jsonp | prometheus> |
| تقصير | جيسون |
| سياق | HTTP ، الخادم ، الموقع |
Description: يعين تنسيق إخراج معالج العرض. إذا قمت بتعيين json ، فستجيب مع وثيقة JSON. إذا قمت بتعيين html ، فستستجيب مع لوحة القيادة المباشرة المدمجة في HTML. إذا قمت بتعيين jsonp ، فسيستجيب مع وظيفة رد الاتصال JSONP (افتراضي: ngx_http_vhost_traffic_status_jsonp_callback ). إذا قمت بتعيين prometheus ، فستجيب مع وثيقة Prometheus.
| - | - |
|---|---|
| بناء الجملة | VHOST_TRAFFIC_STATUS_DISPLAY_JSONP رد الاتصال |
| تقصير | ngx_http_vhost_traffic_status_jsonp_callback |
| سياق | HTTP ، الخادم ، الموقع |
Description: تعيين اسم رد الاتصال لـ JSONP.
| - | - |
|---|---|
| بناء الجملة | VHOST_TRAFFIC_STATUS_DISPLAY_SUM_KEY اسم |
| تقصير | * |
| سياق | HTTP ، الخادم ، الموقع |
Description: تعيين سلسلة مفاتيح SUM في JSON في حقل Serverzones. سلسلة مفاتيح SUM الافتراضية هي "*".
| - | - |
|---|---|
| بناء الجملة | VHOST_TRAFFIC_STATUS_FILTER <ON | OFF> |
| تقصير | على |
| سياق | HTTP ، الخادم ، الموقع |
Description: تمكين أو تعطيل ميزات المرشح.
| - | - |
|---|---|
| بناء الجملة | VHOST_TRAFFIC_STATUS_FILTER_BY_HOST <ON | OFF> |
| تقصير | عن |
| سياق | HTTP ، الخادم ، الموقع |
Description: يمكّن أو تعطيل مفاتيح حقل رأس المضيف. إذا قمت on وتوجيهات Server_Name من NGINX ، قم بتعيين عدة أو اسم Wildcard الذي يبدأ بـ ATERESSISK ، على سبيل المثال " *.example.org" وطلب من الخادم باسم المضيف مثل (A | B | C) .example.org أو *.example.org ثم طبعت json serverzones على النحو التالي:
server {
server_name *.example.org;
vhost_traffic_status_filter_by_host on;
...
} ...
"serverZones" : {
"a.example.org" : {
...
},
"b.example.org" : {
...
},
"c.example.org" : {
...
}
...
},
... يوفر نفس الوظيفة التي ضبط vhost_traffic_status_filter_by_set_key $host .
| - | - |
|---|---|
| بناء الجملة | VHOST_TRAFFIC_STATUS_FILTER_BY_SET_KEY KEY [ NAME ] |
| تقصير | - |
| سياق | HTTP ، الخادم ، الموقع |
Description: يمكّن المفاتيح بواسطة المتغير المحدد للمستخدم. المفتاح هو سلسلة مفاتيح لحساب حركة المرور. الاسم هو سلسلة مجموعة لحساب حركة المرور. يمكن أن يحتوي المفتاح والاسم على متغيرات مثل $ Host و $ server_name. تنتمي مجموعة الاسم إلى filterZones إذا تم تحديدها. تنتمي مجموعة المفتاح إلى serverZones إذا لم يتم تحديد اسم الوسيطة الثانية. المثال مع وحدة Geoip كما يلي:
server {
server_name example.org;
vhost_traffic_status_filter_by_set_key $geoip_country_code country:: $server_name ;
...
} ...
"serverZones" : {
...
},
"filterZones" : {
"country::example.org" : {
"KR" : {
"requestCounter" : ...,
"inBytes" : ...,
"outBytes" : ...,
"responses" :{
"1xx" : ...,
"2xx" : ...,
"3xx" : ...,
"4xx" : ...,
"5xx" : ...,
"miss" : ...,
"bypass" : ...,
"expired" : ...,
"stale" : ...,
"updating" : ...,
"revalidated" : ...,
"hit" : ...,
"scarce" : ...
},
"requestMsecCounter" : ...,
"requestMsec" : ...,
"requestMsecs" :{
"times" :[ ... ],
"msecs" :[ ... ]
},
},
"US" : {
...
},
...
},
...
},
...
| - | - |
|---|---|
| بناء الجملة | VHOST_TRAFFIC_STATUS_FILTER_CHECK_DUPLITICE <ON | OFF> |
| تقصير | على |
| سياق | HTTP ، الخادم ، الموقع |
Description: يمكّن أو يعطّل إلغاء التماثيل VHOST_TRAFFIC_STATUS_FILTER_BY_SET_KEY. تتم معالجتها واحدة فقط من القيم المكررة ( name key +) في كل توجيهات (HTTP ، الخادم ، الموقع) إذا تم تمكين هذا الخيار.
| - | - |
|---|---|
| بناء الجملة | VHOST_TRAFFIC_STATUS_FILTER_MAX_NODE رقم [ سلسلة ...] |
| تقصير | 0 |
| سياق | http |
Description: يتيح الحد من حجم المرشح باستخدام الرقم المحدد وقيم السلسلة . إذا تم تجاوز الرقم ، يتم حذف العقد الموجودة بواسطة خوارزمية LRU. وسيطة الرقم هي حجم العقدة التي ستكون محدودة. القيمة الافتراضية 0 لا تحد من المرشحات. العقدة الواحدة هي كائن في filterZones في مستند JSON. وسيطات السلسلة هي قيم سلسلة المطابقة لقيمة سلسلة المجموعة التي تم تعيينها بواسطة vhost_traffic_status_filter_by_set_key . حتى لو كان الجزء الأول فقط يتطابق ، فإن المطابقة ناجحة مثل التعبير العادي /^string.*/ . افتراضيًا ، إذا لم تقم بتعيين وسيطات سلسلة ، فسيتم تطبيقها على جميع المرشحات.
للحصول على أمثلة:
$ vi nginx.conf
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
# The all filters are limited to a total of 16 nodes.
# vhost_traffic_status_filter_max_node 16
# The `/^uris.*/` and `/^client::ports.*/` group string patterns are limited to a total of 64 nodes.
vhost_traffic_status_filter_max_node 16 uris client::ports;
...
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $uri uris:: $server_name ;
vhost_traffic_status_filter_by_set_key $remote_port client::ports:: $server_name ;
vhost_traffic_status_filter_by_set_key $geoip_country_code country:: $server_name ;
}
} $ for i in {0..1000}; do curl -H 'Host: example.org' -i "http://localhost:80/test$i"; done

في المثال أعلاه ، تقتصر /^uris.*/ و /^client::ports.*/ المرشحات الأخرى مثل country::.* ليست محدودة.
| - | - |
|---|---|
| بناء الجملة | VHOST_TRAFFIC_STATUS_LIMIT <ON | OFF> |
| تقصير | على |
| سياق | HTTP ، الخادم ، الموقع |
Description: تمكين أو تعطيل ميزات الحد.
| - | - |
|---|---|
| بناء الجملة | VHOST_TRAFFIC_STATUS_LIMIT_TRAFFIC عضو : الحجم [ رمز ] |
| تقصير | - |
| سياق | HTTP ، الخادم ، الموقع |
Description: يتيح الحد الأقصى لحركة المرور للعضو المحدد. العضو هو سلسلة عضو للحد من حركة المرور. الحجم هو الحجم (ك/م/غرام) للحد من حركة المرور. الرمز هو رمز لإرجاعه استجابة للطلبات المرفوضة. (الافتراضي: 503)
سلاسل member المتاحة هي كما يلي:
| - | - |
|---|---|
| بناء الجملة | VHOST_TRAFFIC_STATUS_LIMIT_TRAFFIC_BY_SET_KEY عضو المفتاح : الحجم [ رمز ] |
| تقصير | - |
| سياق | HTTP ، الخادم ، الموقع |
Description: يتيح حد حركة المرور للمفتاح والعضو المحدد. المفتاح هو سلسلة مفاتيح للحد من حركة المرور. العضو هو سلسلة عضو للحد من حركة المرور. الحجم هو الحجم (ك/م/غرام) للحد من حركة المرور. الرمز هو رمز لإرجاعه استجابة للطلبات المرفوضة. (الافتراضي: 503)
بناء الجملة key هو كما يلي:
group @[ subgroup @] name السلاسل group المتاحة هي كما يلي:
subgroup )subgroup ) سلاسل member المتاحة هي كما يلي:
العضو هو نفسه vhost_traffic_status_limit_traffic التوجيه.
| - | - |
|---|---|
| بناء الجملة | VHOST_TRAFFIC_STATUS_LIMIT_CHECK_DUPLICATE <ON | OFF> |
| تقصير | على |
| سياق | HTTP ، الخادم ، الموقع |
Description: يمكّن أو تعطيل التخفيف من VHOST_TRAFFIC_STATUS_LIMIT_BY_SET_KEY. تتم معالجتها واحدة فقط من القيم المكررة ( member | key + member ) في كل توجيهات (HTTP ، الخادم ، الموقع) إذا تم تمكين هذا الخيار.
| - | - |
|---|---|
| بناء الجملة | VHOST_TRAFFIC_STATUS_SET_BY_FILTER $ مجموعة / منطقة / اسم / اسم |
| تقصير | - |
| سياق | http ، الخادم ، الموقع ، إذا |
Description: احصل على قيمة الحالة المحددة المخزنة في الذاكرة المشتركة. يمكن أن تحصل على جميع قيم الحالة تقريبًا ويتم تخزين القيمة التي تم الحصول عليها في متغير $ وهو الوسيطة الأولى.
Caveats: الاسم حساس للحالة. جميع قيم الإرجاع تأخذ نوع عدد صحيح.
للحصول على أمثلة:
$requestCounter server/example.org/requestCounter$requestCounter filter/country::example.org@KR/requestCounter$requestCounter upstream@group/[email protected]:80/requestCounter$requestCounter upstream@alone/10.10.10.11:80/requestCounter$cacheHit cache/my_cache_name/cacheHit| - | - |
|---|---|
| بناء الجملة | vhost_traffic_status_average_method <AMM|WMA> [ period ] |
| تقصير | AMM 60s |
| سياق | http, server, location |
Description: Sets the method which is a formula that calculate the average of response processing times. The period is an effective time of the values used for the average calculation.(Default: 60s) If period set to 0, effective time is ignored. In this case, the last average value is displayed even if there is no requests and after the elapse of time. The corresponding values are requestMsec and responseMsec in JSON.
| - | - |
|---|---|
| بناء الجملة | vhost_traffic_status_histogram_buckets second ... |
| تقصير | - |
| سياق | http, server, location |
Description: Sets the observe buckets to be used in the histograms. By default, if you do not set this directive, it will not work. The second can be expressed in decimal places with a minimum value of 0.001(1ms). The maximum size of the buckets is 32. If this value is insufficient for you, change the NGX_HTTP_VHOST_TRAFFIC_STATUS_DEFAULT_BUCKET_LEN in the src/ngx_http_vhost_traffic_status_node.h
For examples:
0.005 0.01 0.05 0.1 0.5 1 5 100.005 0.01 0.05 0.1 Caveats: By default, if you do not set this directive, the histogram statistics does not work. The restored histograms by vhost_traffic_status_dump directive have no affected by changes to the buckets by vhost_traffic_status_histogram_buckets directive. So you must first delete the zone or the dump file before changing the buckets by vhost_traffic_status_histogram_buckets directive. Similar to the above, delete the dump file when using the histogram for the first time.
| - | - |
|---|---|
| بناء الجملة | vhost_traffic_status_bypass_limit <on|off> |
| تقصير | عن |
| سياق | http, server, location |
Description: Enables or disables to bypass vhost_traffic_status_limit directives. The limit features is bypassed if this option is enabled. This is mostly useful if you want to connect the status web page like /status regardless of vhost_traffic_status_limit directives as follows:
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_bypass_limit on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}| - | - |
|---|---|
| بناء الجملة | vhost_traffic_status_bypass_stats <on|off> |
| تقصير | عن |
| سياق | http, server, location |
Description: Enables or disables to bypass vhost_traffic_status . The traffic status stats features is bypassed if this option is enabled. In other words, it is excluded from the traffic status stats. This is mostly useful if you want to ignore your request in status web page like /status as follows:
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_bypass_stats on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}To cut a release, create a changelog entry PR with git-chglog
version="v0.2.0"
git checkout -b "cut-${version}"
git-chglog -o CHANGELOG.md --next-tag "${version}"
git add CHANGELOG.md
sed -i "s/NGX_HTTP_VTS_MODULE_VERSION ".*/NGX_HTTP_VTS_MODULE_VERSION "${version}"/" src/ngx_http_vhost_traffic_status_module.h
git add src/ngx_http_vhost_traffic_status_module.h
git-chglog -t .chglog/RELNOTES.tmpl --next-tag "${version}" "${version}" | git commit -F-
After the PR is merged, create the new tag and release on the GitHub Releases.
Stream traffic status
Prometheus
System protection
YoungJoo.Kim(김영주) [[email protected]]