تسعى مجموعة الوثائق لهذا المنتج جاهدة لاستخدام لغة خالية من التحيز. لأغراض مجموعة الوثائق هذه، يتم تعريف "خالية من التحيز" على أنها لغة لا تعني التمييز على أساس العمر، والإعاقة، والجنس، والهوية العرقية، والهوية الإثنية، والتوجه الجنسي، والحالة الاجتماعية والاقتصادية، والتمييز متعدد الجوانب. قد تكون الاستثناءات موجودة في الوثائق بسبب اللغة التي يتم تشفيرها بشكل ثابت في واجهات المستخدم الخاصة ببرنامج المنتج، أو اللغة المستخدمة بناءً على وثائق 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 متعددة لملء كل صفحة. بالمثل، فإن كل أوامر عرض APIC (CLI نمط NXOS) هي مغلفات للبرامج النصية ل Python التي تقوم بالعديد من طلبات API، وتعالج الاستجابة، ثم تخدمها للمستخدم.
|
اسم ملف السجل |
الموقع |
أي دعم فني هو في |
التعليقات |
|
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:
يمكن تحليل Access.log for APIC بسرعة باستخدام البرنامج النصي Access Log Analyzer ضمن مشروع ACI-TAC-Scripts الخاص بمجموعة Github DataCenter.
يمكن التحقق من وحدة المعالجة المركزية (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 - وقت إستجابة الخادم
يستطيع المستخدم، المتوفر في 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 التي تحدث من قبل العملاء الذين لا يتورعون عن الاستعلام. فهم العميل الذي يدعم الطلب وعزل الحلول النهائية في منطق التطبيق/البرنامج النصي.
وصممت هذه التوصيات للمساعدة على تقليل الحمل والتوتر التشغيلي على API، ولا سيما في السيناريوهات التي لا يكون فيها مصدر واحد مسؤولا عن عدد كبير من مكالمات API. من خلال تنفيذ أفضل الممارسات هذه، يمكنك تقليل العمليات غير الضرورية للمعالجة والتسجيل وإنشاء الأحداث عبر البنية الخاصة بك إلى الحد الأدنى، مما يؤدي إلى تحسين إستقرار النظام والأداء. وتكتسي هذه الاقتراحات أهمية خاصة في البيئات التي تساهم فيها السلوكيات الكلية بدلا من الحوادث المعزولة في حدوث إجهاد خاص بالجهاز.
تأكد من إيقاف تشغيل تسجيل قائمة التحكم في الوصول أثناء العمليات العادية. قم بتمكينها فقط أثناء إطارات الصيانة المجدولة لاستكشاف الأخطاء وإصلاحها أو تصحيح الأخطاء. يمكن أن يؤدي التسجيل المستمر إلى توليد رسائل إعلامية مفرطة، خاصة مع حالات هبوط حركة مرور البيانات كبيرة الحجم عبر محولات متعددة، مما يزيد من حمل عمل APIC.
لمزيد من التفاصيل، راجع دليل تكوين أمان واجهة برمجة التطبيقات من Cisco (إرتباط دليل 5.2.x):
https://www.cisco.com/c/en/us/td/docs/dcn/aci/apic/5x/security-configuration/cisco-apic-security-configuration-guide-release-52x/security-policies-52x.html
قم بتكوين النظام حتى يتم تحويل رسائل syslog فقط التي تحتوي على تنبيه الخطورة إلى EventRecords. تجنب تحويل مستوى المعلومات (والذي يتضمن ACL.Logging) لمنع الأحداث المزعجة من تجاوز APIC:
1. انتقل إلى سياسات البنية → الليفية → السياسات → المراقبة → السياسة المشتركة → نهج رسائل Syslog → الافتراضي.
2. قم بضبط عامل تصفية التسهيلات لتعيين خطورة syslog للتنبيه.
منع رموز الأحداث (Squelch) غير ذات الصلة باحتياجات المراقبة الخاصة بك لتقليل الضوضاء.
لإسكات رمز حدث E4204939، أستخدم هذا الأمر على أي CLI لواجهة سطر الأوامر:
bash
icurl -k -sX POST -d '<fabricInst><monCommonPol><eventSevAsnP code="E4204939" sev="squelched"/></monCommonPol></fabricInst>' 'https://localhost/api/node/mo/uni/.xml’
للتحقق من:
bash
icurl -k -sX GET 'https://localhost/api/node/class/eventSevAsnP.xml' | xmllint --format -
بدلا من ذلك، تحقق عبر واجهة المستخدم:
نسيج > سياسات بنيوية > سياسات > مراقبة > سياسة عامة > سياسة تعيين خطورة الحدث
بالنسبة للقنوات الليفية التي تتم إدارتها بواسطة إصدارات ND التي تسبق الإصدار 3.2.2 متر أو 4.1.1g، قم بالترقية إلى أحد هذه الإصدارات أو إصدار أحدث لتحسين فواصل تحديث الاشتراك. يتم تحديث الإصدارات السابقة كل 45 ثانية لكل عملية نقل بيانات، مما يمكن أن ينتج عنه، على نطاق واسع، أكثر من 300000 طلب APIC في اليوم. تزيد الإصدارات المحدثة مهلة الاشتراك إلى 3600 ثانية (ساعة واحدة)، مما يقلل من عمليات التحديث إلى حوالي 5000 في اليوم.
تقوم البنى التي تم تمكين ميزة Intersight بإنشاء استعلامات نظام أساسي دورية من موصل DC (كل 15 ثانية)، مما يضيف إلى حمل APIC.
في الإصدار 6.1.2 والإصدارات الأحدث، تم تحسين هذا الاستعلام لتقليل التكاليف.
تعيين نهج الاستبقاء ل eventRecord و faultRecord و healthRecord إلى 1000 لمنع التراكم المفرط للسجلات. يكون هذا مفيدا بشكل خاص عندما تستخرج هذه السجلات بشكل منتظم لأي نشاط تشغيلي معين. قم دائما بتقييم تأثير تقليل دقة المراقبة مقابل متطلباتك التشغيلية ومتطلبات أستكشاف المشكلات وحلها.
| المراجعة | تاريخ النشر | التعليقات |
|---|---|---|
1.0 |
16-Dec-2025
|
الإصدار الأولي |
التعليقات