تسعى مجموعة الوثائق لهذا المنتج جاهدة لاستخدام لغة خالية من التحيز. لأغراض مجموعة الوثائق هذه، يتم تعريف "خالية من التحيز" على أنها لغة لا تعني التمييز على أساس العمر، والإعاقة، والجنس، والهوية العرقية، والهوية الإثنية، والتوجه الجنسي، والحالة الاجتماعية والاقتصادية، والتمييز متعدد الجوانب. قد تكون الاستثناءات موجودة في الوثائق بسبب اللغة التي يتم تشفيرها بشكل ثابت في واجهات المستخدم الخاصة ببرنامج المنتج، أو اللغة المستخدمة بناءً على وثائق RFP، أو اللغة التي يستخدمها منتج الجهة الخارجية المُشار إليه. تعرّف على المزيد حول كيفية استخدام Cisco للغة الشاملة.
ترجمت Cisco هذا المستند باستخدام مجموعة من التقنيات الآلية والبشرية لتقديم محتوى دعم للمستخدمين في جميع أنحاء العالم بلغتهم الخاصة. يُرجى ملاحظة أن أفضل ترجمة آلية لن تكون دقيقة كما هو الحال مع الترجمة الاحترافية التي يقدمها مترجم محترف. تخلي Cisco Systems مسئوليتها عن دقة هذه الترجمات وتُوصي بالرجوع دائمًا إلى المستند الإنجليزي الأصلي (الرابط متوفر).
يصف هذا المستند المنهجية العامة لاستكشاف أخطاء تجربة واجهة المستخدم الرسومية (GUI) ل APIC البطيئة وإصلاحها.
غالبا ما يتم العثور على أن مشاكل واجهة المستخدم الرسومية (GUI) ل APIC البطيئة هي نتيجة لمعدل مرتفع من طلبات API التي تم الحصول عليها من برنامج نصي أو تكامل أو تطبيق. يقوم Access.log الخاص ب APIC بتسجيل كل طلب من طلبات API التي تمت معالجتها. يمكن تحليل Access.log for APIC بسرعة باستخدام البرنامج النصي Access Log Analyzer ضمن مشروع ACI-TAC-Scripts الخاص بمجموعة Github DataCenter.
NGINX هو DME المسؤول عن نقاط نهاية API المتوفرة على كل APIC. إذا كان NGINX معطلا، فلا يمكن معالجة طلبات واجهة برمجة التطبيقات (API). إذا كان NGINX محتقنا، فإن واجهة برمجة التطبيقات (API) تكون مزدحمة. تقوم كل واجهة برمجة تطبيقات بتشغيل عملية NGINX الخاصة بها، لذلك من الممكن أن يكون هناك فقط واجهة برمجة تطبيقات فردية واحدة يمكن أن تواجه مشاكل NGINX إذا كانت واجهة برمجة التطبيقات هذه مستهدفة من قبل أي مستعلم عدواني.
تقوم واجهة برمجة تطبيقات APIC بتنفيذ طلبات API متعددة لملء كل صفحة. وبالمثل، فإن جميع أوامر "show" لواجهة سطر الأوامر (CLI) الخاصة بواجهة سطر الأوامر (NXOS Style) هي برامج تضمين للبرامج النصية ل Python التي تنفذ طلبات واجهة برمجة تطبيقات متعددة، وتعالج الاستجابة، ثم تخدمها للمستخدم.
اسم ملف السجل |
الموقع |
أي دعم فني هو في |
التعليقات |
access.log |
/var/log/dme/log |
APIC 3of3 |
ACI لا أعلم، تعطي سطر واحد لكل طلب API |
خطأ.log |
/var/log/dme/log |
APIC 3of3 |
عدم تطابق ACI، يعرض أخطاء NGINX (متضمنا التقييد) |
nginx.bin.log |
/var/log/dme/log |
APIC 3of3 |
محدد لواجهة التحكم في الوصول (ACI)، يقوم بتسجيل حركات DME |
nginx.bin.warnplus.log |
/var/log/dme/log |
APIC 3of3 |
يحتوي "محدد قائمة التحكم في الوصول (ACI)" على سجلات تشكل تحذيرا+ خطورة |
ما الذي يؤثر؟
كيف يجري إختبار البطء؟
متى لاحظنا البطء اولا؟
access.log هو ميزة ل NGINX، وبالتالي، فهو لا أعلم APIC. يمثل كل سطر طلب HTTP واحد الذي تلقته APIC. راجع هذا السجل لفهم إستخدام NGINX لواجهة برمجة تطبيقات (APIC).
تنسيق access.log الافتراضي على ACI الإصدار 5.2+:
log_format proxy_ip '$remote_addr ($http_x_real_ip) - $remote_user [$time_local]'
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
يمثل هذا السطر إدخال access.log عند تنفيذ moquery -c fvTenant:
127.0.0.1 (-) - - [07/Apr/2022:20:10:59 +0000]"GET /api/class/fvTenant.xml HTTP/1.1" 200 15863 "-" "Python-urllib"
خريطة مثال access.log entry to log_format:
حقل log_format |
محتوى من مثال |
التعليقات |
$remote_addr |
127.0.0.1 |
IP الخاص بالمضيف الذي أرسل هذا الطلب |
$http_x_real_ip |
- |
IP لآخر طالب إذا كانت الوكلاء قيد الاستخدام |
$remote_user |
- |
غير مستخدم بشكل عام. تحقق من nginx.bin.log لتعقب المستخدم الذي سجل الدخول لتنفيذ الطلبات |
$time_local |
07/APR/2022:20:10:59 +000 |
عند معالجة الطلب |
طلب $ |
احصل على /api/class/fvTenant.xml http/1.1 |
أسلوب HTTP (GET، POST، DELETE) و URI |
حالة $ |
200 |
|
$body_bytes_sent |
1586 |
حجم حمولة الاستجابة |
$http_reference |
- |
- |
$http_user_agent |
بايثون أورليب |
نوع العميل الذي أرسل الطلب |
إرتفاع معدل الطلبات يشتعل على مدى فترة زمنية طويلة:
استجابات متناسقة بمعدل 4xx أو 5xx:
يمكن التحقق من وحدة المعالجة المركزية (CPU) الخاصة ب NGINX واستخدام الذاكرة باستخدام الأمر top من APIC:
top - 13:19:47 up 29 days, 2:08, 11 users, load average: 12.24, 11.79, 12.72
Tasks: 785 total, 1 running, 383 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.5 us, 2.0 sy, 0.0 ni, 94.2 id, 0.1 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem : 13141363+total, 50360320 free, 31109680 used, 49943636 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 98279904 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21495 root 20 0 4393916 3.5g 217624 S 2.6 2.8 759:05.78 nginx.bin
يمكن أن يرتبط الاستخدام المرتفع لموارد NGINX مباشرة بارتفاع معدل الطلبات التي تمت معالجتها.
لا يعد عطل NGINX نموذجيا للمشكلات الخاصة بواجهة المستخدم الرسومية (GUI) ل APIC البطيئة. ومع ذلك، إذا تم العثور على مراكز NGINX، فقم بإرفاقها ب TAC SR للتحليل. ارجع إلى دليل الدعم الفني لقائمة التحكم في الوصول (ACI) للحصول على خطوات للتحقق من المراكز.
إذا لم يتم العثور على طلبات سريعة ولكن يستمر المستخدم في عرض بطء واجهة المستخدم، فإن المشكلة يمكن أن تكون زمن انتقال العميل (المتصفح) إلى الخادم (APIC).
في هذه السيناريوهات، تحقق من مسار البيانات من المستعرض إلى APIC (المسافة الجغرافية والشبكة الخاصة الظاهرية (VPN)، وما إلى ذلك). إذا أمكن، قم بنشر واختبار الوصول من خادم الانتقال السريع الموجود في نفس المنطقة الجغرافية أو مركز البيانات مثل APICs لعزل. التحقق من الصحة إذا قام المستخدمون الآخرون بعرض قدر مماثل من زمن الوصول.
يمكن لجميع المستعرضات التحقق من صحة طلبات HTTP واستجاباتها من خلال مجموعة أدوات تطوير المستعرض الخاصة بها، وعادة ما تكون ضمن علامة تبويب الشبكة.
يمكن إستخدام هذه الأداة للتحقق من مقدار الوقت المستغرق لكل مرحلة من الطلبات المستمدة من المستعرض كما هو موضح في الصورة.
مثال على المستعرض الذي ينتظر 1.1 دقيقة لكي يستجيب APIC
صفحة مجموعة النهج:
معرف تصحيح الأخطاء من Cisco CSCvx14621 - يتم تحميل واجهة المستخدم الرسومية (GUI) ل APIC ببطء على سياسات IPG في علامة التبويب "البنية".
الواجهة الموجودة ضمن صفحة المخزون:
معرف تصحيح الأخطاء من Cisco CSCvx90048 - الحمل الأولي من "الطبقة 1 تشكيل الواجهة المادية" علامة التبويب التشغيلية طويل/يحفز على "تجميد".
تتيح بعض المستعرضات، مثل Firefox، المزيد من إتصالات الويب لكل مضيف بشكل افتراضي.
تعمل الشبكة الخاصة الظاهرية (VPN) والمسافة التي تصل إلى APIC على زيادة بطء واجهة المستخدم الإجمالي نظرا لطلبات مستعرض العميل ووقت سفر إستجابة APIC. يقلل مربع الانتقال المحلي جغرافيا إلى APICs بشكل كبير المتصفح إلى أوقات السفر APIC.
إذا كان خادم ويب (NGINX على APIC) يعالج كمية كبيرة من طلبات الويب الطويلة، فقد يؤثر ذلك على أداء الطلبات الأخرى المتلقاة بالتوازي.
ويصدق هذا بوجه خاص على النظم التي لديها قواعد بيانات موزعة، مثل APICs. قد يتطلب طلب واجهة برمجة تطبيقات (API) واحدة طلبات وعمليات بحث إضافية يتم إرسالها إلى عقد أخرى في البنية مما قد يؤدي إلى أوقات إستجابة أطول بشكل متوقع. يمكن أن يؤدي اندفاع طلبات الويب الطويلة هذه في إطار زمني صغير إلى مضاعفة مقدار الموارد المطلوبة وإلى أوقات إستجابة أطول بشكل غير متوقع. علاوة على ذلك، يمكن للطلبات المتلقاة بعد ذلك انقضاء المهلة (90 ثانية) مما يؤدي إلى سلوك غير متوقع للنظام من منظور المستخدم.
في 4.2(1)+، يمكن للمستخدم تمكين "حساب أداء النظام" الذي يتتبع طلبات واجهة برمجة التطبيقات (API) التي استغرقت وقتا طويلا لمعالجتها ويسلط الضوء عليها.
يمكن تمكين الحساب من النظام - إعدادات النظام - أداء النظام
بمجرد تمكين "الحساب"، يمكن للمستخدم الانتقال إلى عناوين APIC معينة ضمن وحدات التحكم لعرض أبطأ طلبات API خلال آخر 300 ثانية.
النظام - وحدات التحكم - مجلد وحدات التحكم - APIC X - وقت إستجابة الخادم
إذا كان لديك سيناريو حيث تبطئ إستجابة واجهة المستخدم بشكل عشوائي، ولكن لا توجد مراقبة نشطة لمعرفة عدد المرات التي تحدث فيها، عندئذ يمكنك إستخدام أحد النهجين
الخيار 1: نهج الاشتراك للحصول على وقت الاستجابة من البنية على أساس ثابت. تتطلب هذه الخطوة خادما خارجيا لتشغيل البرنامج النصي الذي سيقوم بإرسال طلب الاشتراك وإجراء التحديثات.
الخيار 2: يتم تشغيل البرنامج النصي حسب الطلب على APIC نفسه وتم تدليك المخرجات على LV. قد يكون هذا الخيار أسهل نظرا لتبعيات أقل
الخطوة 1: (المذكورة أعلاه أيضا) حدوث تغير عالمي لمرة واحدة في منطقة آسيا والمحيط الهادئ. يتميز هذا الطراز بأنه غير تطفلي ولكنه مثالي دائما لاتباع ممارسات التغيير القياسية.
انتقل إلى النظام—>إعدادات النظام—>أداء النظام
تمكين الحسابات
تعيين حد الاستجابة إلى 50000 مللي ثانية
عدم تغيير المعلمات الأخرى
بمجرد تمكين "الحساب"، يمكن للمستخدم الانتقال إلى عناوين APIC معينة ضمن وحدات التحكم لعرض أبطأ طلبات API خلال آخر 300 ثانية.
الخطوة 2:
موقع Git ل apic_query_subscription_slowUI —> https://wwwin-github.cisco.com/CX-ACI/lv_accloganalyzer
python apic_query_subscription_slowUI.py -a <anyapicip> -u <username>
تحميل سجل جلسة عمل المحطة الطرفية مرة كل 24 ساعة إلى حالة TAC
الخطوة 3: قم بجمع مخرجات مركز المساعدة الفنية وسجلات الوصول لسجلات الأحداث واستعلامات واجهة برمجة التطبيقات الكاملة التي تصل إلى 24 ساعة في اليوم في وقت معين.
بالنسبة لقنوات التحكم في الوصول (ACI) التي تشغل الإصدار قبل 5.3/6.0(3d)، يوجد برنامج نصي Collection TACoutput متوفر داخل المستودع aci-TAC-Scripts الذي يخدم واجهة مماثلة كأمر تشغيل الإخراج:
apic# /tmp/collectTacOutputs.sh Select corresponding numbers of objects to collect. Separate numbers with commas. *Note, topSystem, fabricNode, and firmwareARunning are automatically included. Ex: 1,2,3,4,5 1. faultInfo *collected unfiltered 2. faultRecord 3. eventRecord 4. aaaModLR 5. polDeploymentRecord 6. epRecord 7. healthRecord 8. healthInst *collected unfiltered Enter selections: 3 Enter record start date (format: 2019-12-15T00:00:00) *default is one month prior to current date: 2019-12-25T00:00:00 Enter record end date (format: 2019-12-15T00:00:00) *default is current date: 2020-01-05T00:00:00 ...script collection runs...
إستخراج ملف tacoutputXX.tgz وتحميله إلى الحالة
ملاحظة: بالنسبة لقنوات البنية الأساسية المرتكزة على التطبيقات (ACI) التي تشغل الإصدار 5.3/6.0(3d) والإصدارات الأحدث، يوفر إخراج واجهة تجميع مبسطة للأحداث والأخطاء والتدقيق ومخرجات أستكشاف الأخطاء وإصلاحها الأخرى). لا تحتاج لاستخدام النص.
## من أي ملف APIC، .
mkdir /data/techsupport/apicname_srnumber
cd /var/log/dme/log
cp access* /data/techsupport/apicname_srnumber
cd /data/techsupport/
tar -zcvfapicname_srnumber.tgz /data/techsupport/apicname_srnumber
uploadapicname_srnumber.tgz إلى الحالة
مثال Lab لتنفيذ البرنامج النصي من مضيف خارجي:
(my-virtual-env-3.7.13) root@aci-fab1-esxi2-oob:~# python apic_query_subscription_slowui.py -a 10.122.141.98 -u rgatti
Logging into APIC 10.122.141.98
rgatti password:
********** WebSocket Subscription URIS and IDs **********
WebSocket Subscription Status Code: 101
https://10.122.141.98/api/class/commRequestData.json?subscription=yes
- Subscription ID: 72059449487065089
********** WebSocket Subscription Messages **********
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","clientHostname":"10.122.141.126","dn":"topology/pod-1/node-1/web/apiAvgResp/reqData-1","method":"GET","modTs":"2024-08-06T13:15:07.857-04:00","responseSize":"2313","responseTime":"1017","rn":"","startTime":"2024-08-06T13:12:38.334-04:00","status":"modified","url":"/api/node/class/firmwareOSource.json"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","clientHostname":"10.26.164.186","dn":"topology/pod-1/node-1/web/apiAvgResp/reqData-2","method":"GET","modTs":"2024-08-06T13:15:07.857-04:00","responseSize":"252","responseTime":"1007","rn":"","startTime":"2024-08-06T13:13:39.145-04:00","status":"modified","url":"/api/node/mo/uni/infra/nodecfgcont/node-103.json"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","clientHostname":"10.26.161.138","dn":"topology/pod-1/node-1/web/apiAvgResp/reqData-3","modTs":"2024-08-06T13:15:07.857-04:00","responseTime":"788","rn":"","startTime":"2024-08-06T13:14:24.351-04:00","status":"modified"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","clientHostname":"10.24.131.101","dn":"topology/pod-1/node-1/web/apiAvgResp/reqData-4","modTs":"2024-08-06T13:15:07.857-04:00","responseTime":"784","rn":"","startTime":"2024-08-06T13:14:41.169-04:00","status":"modified"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","clientHostname":"10.25.130.136","dn":"topology/pod-1/node-1/web/apiAvgResp/reqData-5","modTs":"2024-08-06T13:15:07.857-04:00","responseTime":"783","rn":"","startTime":"2024-08-06T13:12:29.028-04:00","status":"modified"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","dn":"topology/pod-1/node-2/web/apiAvgResp/reqData-1","modTs":"2024-08-06T13:15:51.533-04:00","responseSize":"3926","responseTime":"1013","rn":"","startTime":"2024-08-06T13:12:22.387-04:00","status":"modified","url":"/api/node/class/topSystem.json"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","dn":"topology/pod-1/node-2/web/apiAvgResp/reqData-2","modTs":"2024-08-06T13:15:51.533-04:00","responseSize":"905","responseTime":"208","rn":"","startTime":"2024-08-06T13:12:59.783-04:00","status":"modified","url":"/api/node/class/dnsProv.json"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","dn":"topology/pod-1/node-2/web/apiAvgResp/reqData-3","modTs":"2024-08-06T13:15:51.533-04:00","responseSize":"905","responseTime":"114","rn":"","startTime":"2024-08-06T13:10:59.781-04:00","status":"modified","url":"/api/node/class/dnsProv.json"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","dn":"topology/pod-1/node-2/web/apiAvgResp/reqData-4","modTs":"2024-08-06T13:15:51.533-04:00","responseSize":"905","responseTime":"98","rn":"","startTime":"2024-08-06T13:14:59.782-04:00","status":"modified","url":"/api/node/class/dnsProv.json"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","dn":"topology/pod-1/node-2/web/apiAvgResp/reqData-5","modTs":"2024-08-06T13:15:51.533-04:00","responseSize":"1075","responseTime":"46","rn":"","startTime":"2024-08-06T13:14:26.565-04:00","status":"modified"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","dn":"topology/pod-2/node-3/web/apiAvgResp/reqData-1","modTs":"2024-08-06T13:16:19.490-04:00","responseTime":"2392","rn":"","startTime":"2024-08-06T13:11:44.143-04:00","status":"modified"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","dn":"topology/pod-2/node-3/web/apiAvgResp/reqData-2","modTs":"2024-08-06T13:16:19.490-04:00","responseTime":"2389","rn":"","startTime":"2024-08-06T13:15:24.604-04:00","status":"modified"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","dn":"topology/pod-2/node-3/web/apiAvgResp/reqData-3","modTs":"2024-08-06T13:16:19.490-04:00","responseTime":"2384","rn":"","startTime":"2024-08-06T13:13:38.231-04:00","status":"modified"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","dn":"topology/pod-2/node-3/web/apiAvgResp/reqData-4","modTs":"2024-08-06T13:16:19.490-04:00","responseTime":"2384","rn":"","startTime":"2024-08-06T13:13:14.402-04:00","status":"modified"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","dn":"topology/pod-2/node-3/web/apiAvgResp/reqData-5","modTs":"2024-08-06T13:16:19.490-04:00","responseTime":"2383","rn":"","startTime":"2024-08-06T13:14:24.584-04:00","status":"modified"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","clientHostname":"10.26.161.138","dn":"topology/pod-1/node-1/web/apiAvgResp/reqData-1","method":"POST","modTs":"2024-08-06T13:20:07.951-04:00","responseSize":"0","responseTime":"784","rn":"","startTime":"2024-08-06T13:19:24.361-04:00","status":"modified","url":"/uitelemetry/clicks"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","clientHostname":"10.25.130.136","dn":"topology/pod-1/node-1/web/apiAvgResp/reqData-2","method":"POST","modTs":"2024-08-06T13:20:07.951-04:00","responseSize":"0","responseTime":"783","rn":"","startTime":"2024-08-06T13:18:34.821-04:00","status":"modified","url":"/uitelemetry/clicks"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","clientHostname":"10.25.130.136","dn":"topology/pod-1/node-1/web/apiAvgResp/reqData-3","modTs":"2024-08-06T13:20:07.951-04:00","responseTime":"781","rn":"","startTime":"2024-08-06T13:17:03.705-04:00","status":"modified"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","clientHostname":"10.25.130.136","dn":"topology/pod-1/node-1/web/apiAvgResp/reqData-4","modTs":"2024-08-06T13:20:07.951-04:00","responseTime":"781","rn":"","startTime":"2024-08-06T13:18:04.530-04:00","status":"modified"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","clientHostname":"10.26.161.138","dn":"topology/pod-1/node-1/web/apiAvgResp/reqData-5","modTs":"2024-08-06T13:20:07.951-04:00","responseTime":"781","rn":"","startTime":"2024-08-06T13:18:24.354-04:00","status":"modified"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","dn":"topology/pod-1/node-2/web/apiAvgResp/reqData-1","modTs":"2024-08-06T13:20:51.568-04:00","responseSize":"905","responseTime":"1018","rn":"","startTime":"2024-08-06T13:16:59.784-04:00","status":"modified","url":"/api/node/class/dnsProv.json"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","dn":"topology/pod-1/node-2/web/apiAvgResp/reqData-2","modTs":"2024-08-06T13:20:51.568-04:00","responseSize":"405","responseTime":"148","rn":"","startTime":"2024-08-06T13:18:01.471-04:00","status":"modified","url":"/api/node/class/proxyServer.json"}}}]}
{"subscriptionId":["72059449487065089"],"imdata":[{"commRequestData":{"attributes":{"childAction":"","clientHostname":"192.168.1.1","dn":"topology/pod-1/node-2/web/apiAvgResp/reqData-3","modTs":"2024-08-06T13:20:51.568-04:00","responseSize":"3390","responseTime":"112","rn":"","startTime":"2024-08-06T13:17:29.488-04:00","status":"modified","url":"/api/node/class/pkiFabricSelfCAEp.json"}}}]}
على واجهة سطر أوامر APIC
bash
<paste the below directly on the APIC cli - modify the filename. The script will run for 1 hr>
let i=1
while [ $i -lt 60 ]
do
date
date >> /data/techsupport/commRequestData.txt
moquery -c commRequestData >> /data/techsupport/commRequestData_<date_time>.txt
sleep 60
let i=i+1
done
ليس من السهل قراءة ما يمكن تدليله باستخدام النص التنفيذي الموجود أدناه على LV.
موقع Git ل commrequests_processing.py —> https://wwwin-github.cisco.com/CX-ACI/lv_accloganalyzer
انسخ البرنامج النصي إلى مجلد البرامج النصية المحلي (مثال /users/rgatti/scripts).
كيفية التنفيذ:
users/rgatti/dnld_695998256/cv1/jul14_2025/commrequestdata --> This is where we saved the commRequestData_<date_time>.txt file
python3 /users/rgatti/scripts/commrequests_processing.py -f commRequestData_jul14_4pm.txt > commRequestData_jul14_4pm.txt.formatted
المثال التالي: يستخدم وقت الاستجابة للفرز مع عرض وقت الاستجابة الأعلى في الأعلى
rgatti@aci-logviewer2:~/dnld_695998256/cv1/jul14_2025/commrequestdata$ less commRequestData_jul14_4pm.txt.formatted
Processing file: commRequestData_jul14_4pm.txt
clientHostname | dn | method | responseCode | responseSize | responseTime | startTime | url
---------------+-------------------------------------------------+--------+--------------+--------------+--------------+-------------------------------+------------------------------------------------------------------------------------
127.0.0.1 | topology/pod-2/node-5/web/apiAvgResp/reqData-1 | GET | 200 | 14255310 | 31123 | 2025-07-14T15:08:38.598-05:00 | /api/class/fvRInfoHolder.json
127.0.0.1 | topology/pod-2/node-5/web/apiAvgResp/reqData-1 | GET | 200 | 14255310 | 31123 | 2025-07-14T15:08:38.598-05:00 | /api/class/fvRInfoHolder.json
127.0.0.1 | topology/pod-2/node-1/web/apiAvgResp/reqData-1 | GET | 200 | 17050 | 29660 | 2025-07-14T15:08:39.262-05:00 | /api/node/class/fabricPathEp.json
127.0.0.1 | topology/pod-2/node-1/web/apiAvgResp/reqData-2 | GET | 200 | 111529 | 29658 | 2025-07-14T15:08:39.261-05:00 | /api/class/mgmtRsInBStNode.json
127.0.0.1 | topology/pod-2/node-1/web/apiAvgResp/reqData-3 | GET | 200 | 474 | 29631 | 2025-07-14T15:08:39.258-05:00 | /api/class/mgmtInstP.json
127.0.0.1 | topology/pod-2/node-4/web/apiAvgResp/reqData-1 | GET | 200 | 13637 | 28933 | 2025-07-14T15:08:38.597-05:00 | /api/class/faultDelegate.json
127.0.0.1 | topology/pod-2/node-2/web/apiAvgResp/reqData-2 | GET | 200 | 530 | 28243 | 2025-07-14T15:08:39.274-05:00 | /api/class/vzRsDenyRule.json
127.0.0.1 | topology/pod-2/node-2/web/apiAvgResp/reqData-1 | GET | 200 | 30 | 28243 | 2025-07-14T15:08:39.273-05:00 | /api/class/fvRsProtBy.json
127.0.0.1 | topology/pod-2/node-2/web/apiAvgResp/reqData-2 | GET | 200 | 530 | 28243 | 2025-07-14T15:08:39.274-05:00 | /api/class/vzRsDenyRule.json
127.0.0.1 | topology/pod-2/node-2/web/apiAvgResp/reqData-1 | GET | 200 | 30 | 28243 | 2025-07-14T15:08:39.273-05:00 | /api/class/fvRsProtBy.json
127.0.0.1 | topology/pod-2/node-1/web/apiAvgResp/reqData-1 | GET | 200 | 18426168 | 27107 | 2025-07-14T15:40:33.874-05:00 | /api/mo/uni.xml
127.0.0.1 | topology/pod-2/node-1/web/apiAvgResp/reqData-1 | GET | 200 | 18426168 | 27107 | 2025-07-14T15:40:33.874-05:00 | /api/mo/uni.xml
127.0.0.1 | topology/pod-2/node-1/web/apiAvgResp/reqData-4 | GET | 200 | 18429959 | 25516 | 2025-07-14T15:08:46.841-05:00 | /api/mo/uni.xml
127.0.0.1 | topology/pod-2/node-1/web/apiAvgResp/reqData-2 | GET | 200 | 719780 | 24794 | 2025-07-14T15:40:35.346-05:00 | /api/class/fabricPathEp.json
127.0.0.1 | topology/pod-2/node-1/web/apiAvgResp/reqData-2 | GET | 200 | 719780 | 24794 | 2025-07-14T15:40:35.346-05:00 | /api/class/fabricPathEp.json
127.0.0.1 | topology/pod-2/node-1/web/apiAvgResp/reqData-5 | GET | 200 | 18431710 | 24604 | 2025-07-14T15:08:56.167-05:00 | /api/mo/uni.xml
127.0.0.1 | topology/pod-2/node-1/web/apiAvgResp/reqData-3 | GET | 200 | 452 | 23720 | 2025-07-14T15:40:36.395-05:00 | /api/class/mgmtOoB.json
127.0.0.1 | topology/pod-2/node-1/web/apiAvgResp/reqData-3 | GET | 200 | 452 | 23720 | 2025-07-14T15:40:36.395-05:00 | /api/class/mgmtOoB.json
127.0.0.1 | topology/pod-2/node-1/web/apiAvgResp/reqData-6 | GET | 200 | 18430138 | 23578 | 2025-07-14T15:08:49.945-05:00 | /api/mo/uni.xml
127.0.0.1 | topology/pod-2/node-1/web/apiAvgResp/reqData-1 | GET | 200 | 14255310 | 21159 | 2025-07-14T15:38:59.233-05:00 | /api/class/fvRInfoHolder.json
127.0.0.1 | topology/pod-2/node-1/web/apiAvgResp/reqData-1 | GET | 200 | 14255310 | 21159 | 2025-07-14T15:38:59.233-05:00 | /api/class/fvRInfoHolder.json
يستطيع المستخدم، المتوفر في 4.2(1)+، تمكين تقييد الطلب مقابل HTTP و HTTPS بشكل مستقل.
ملاحظة: بدءا من الإصدار 6.1(2) من واجهة برمجة التطبيقات، تم تخفيض المعدل الأقصى المدعوم لهذه الميزة إلى 40 طلبا في الثانية (r/s) أو 2400 طلب في الدقيقة (r/m) من 10000 r/m.
Fabric - سياسات البنية - مجلد السياسات - مجلد الوصول إلى الإدارة - الافتراضي
عند التمكين:
apic# less /var/log/dme/log/error.log
...
2023/04/17 20:19:14 [error] ... limiting requests, excess: 40.292 by zone "httpsClientTagZone", client: h.o.s.t, ... request: "GET /api/class/...", host: "a.p.i.c"
2023/04/17 20:19:14 [error] ... limiting requests, excess: 40.292 by zone "httpsClientTagZone", client: h.o.s.t, ... request: "GET /api/node/...", host: "a.p.i.c"
كقاعدة عامة، يعمل "خانق الطلب" فقط على حماية الخادم (APIC) من الأعراض الشبيهة بأعراض DDoS التي تحدث من قبل العملاء المهتمين بالاستعلام. فهم العميل الذي يدعم الطلب وعزل الحلول النهائية في منطق التطبيق/البرنامج النصي.
المراجعة | تاريخ النشر | التعليقات |
---|---|---|
3.0 |
20-Aug-2025
|
حدود خانقة NGINX للوسيلة الشرحية 6.1(2) |
2.0 |
04-Jan-2023
|
مقطع وقت إستجابة النظام المضاف وقسم تقييد طلب NGINX |
1.0 |
17-May-2022
|
الإصدار الأولي |