المحتويات

المقدمة

المتطلبات الأساسية

المتطلبات

المكونات المستخدمة

أدوات سطر الأوامر

أدوات قاعدة البيانات

المقدمة

يوضح هذا المستند كيفية إستخدام أدوات أستكشاف الأخطاء وإصلاحها المتوفرة كجزء من نشر مدير الشبكة الميدانية (FND).حل "الصندوق" واسع النطاق ويشتمل على العديد من التقنيات والتخصصات المتنوعة. ولهذا السبب، هناك العديد من البرامج النصية وأدوات سطر الأوامر التي يمكنها المساعدة في التحقق من السلوك في حالة معينة أو تشخيص مشكلة معقدة.

تمت المساهمة بواسطة راين بومان، مهندس TAC من Cisco.

المتطلبات الأساسية

المتطلبات

توصي Cisco بأن يكون لديك بيئة إنتاج أو بيئة معملية تعمل بشكل كامل مع موجه نهاية رأس مسجل (HER) وموجه المنطقة الميدانية ونقطة نهاية الشبكة المتصلة (CGE). للتحقق من إحصائيات بروتوكول الإدارة البسيط ل CoAP (CSMP) باستخدام GetStats.sh يجب أن يكون لديك على الأقل CGE واحد يقوم بإنشاء حركة مرور CSMP.

لاستخدام الملفات الموجودة في الدليل /opt/cgms-tools/، يجب تثبيت حزمة CGMS-tools RPM على خادم التطبيق الخاص بك.

المكونات المستخدمة

تم تجميع المعلومات الواردة في هذا المستند باستخدام الإصدار 3.0.1-36 من FND مع تثبيت جميع خوادم Linux على الأجهزة الافتراضية التي تعمل بنظام التشغيل RHEL 6.5.

تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك مباشرة، فتأكد من فهمك للتأثير المحتمل لأي أمر.

أدوات سطر الأوامر

يغطي هذا القسم أدوات مساعدة واجهة سطر الأوامر (CLI) المتوفرة كجزء من كل من حزم CGMS وCGMS-tools. مسار التثبيت الافتراضي ل CGMS RPM /opt/cgms/ومسار التثبيت الافتراضي ل CGMS-tools هو /opt/cgms-tools/.

setupCgms.sh (/opt/cgms/bin/setupCgms.sh):

بعد التثبيت لأول مرة في FND يجب تشغيل هذا البرنامج النصي لتكوين متغيرات التطبيق الضرورية. وبمجرد بدء الإنتاج، لا يزال بإمكانك إستخدام هذه الأداة المساعدة لتغيير معلمات التكوين الهامة. قبل تنفيذ هذا البرنامج النصي، يجب عليك إيقاف خدمة CGMS والتنقل إلى الدليل /opt/cgms/bin/ وتنفيذ الأمر ./setupCgms.

[root@fnd bin]#./setupCgms.sh

Are you sure you want to setup IoT-FND (y/n)? n

Do you wish to configure another database server for this IoT-FND ? (y/n)? n

Do you want to change the database password (y/n)? n

Do you want to change the keystore password (y/n)? n

Do you want to change the web application 'root' user password (y/n)? n

Do you want to change the FTP settings (y/n)? n

Do you want to change router CGDM protocol settings (y/n)? n

Do you want to change log file settings)? (y/n)? n

getStats.sh (/opt/cgms/bin/getstats.sh):

هذا البرنامج النصي معد للتنفيذ أثناء تشغيل التطبيق. ومن المفيد للغاية عند تحليل الأداء باستخدام المجموعات المتوازنة للأحمال وأزواج قواعد البيانات (DB) النشطة/الاحتياطية. كل قياس أداء خارج نطاق هذا المقال ولكن هنا عينة مخرجات عندما نشغل النص.

عند أستكشاف أخطاء عمليات نشر FND وإصلاحها في نظام مجموعة، قم بتنفيذ هذا البرنامج النصي على كل خادم للتحقق من عمل موازنة الأحمال بشكل صحيح. إذا كان أحد خوادم التطبيقات به معدل معالجة CSMP أعلى بكثير من غيره، فمن المحتمل ألا يتم تكوين موازنة الأحمال بشكل غير صحيح. علاوة على ذلك، عند تحليل هذا الإخراج، إذا رأيت زيادة في أحجام قوائم الانتظار الخاصة بك، فأنت تعلم أن هناك عملية معقدة في مكان ما.

[root@fnd bin]# ./getstats.sh

Current Time: 2017-03-08 01:06

============ events statistics ==============

ElapsedTimePrepareForRules (ms):...........................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimeBatchCommit (ms):...............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Events request rate:.......................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimeSendToSyslog (ms):..............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Batch Commit Size :........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

==============================================

============ metric statistics ==============

ElapsedTimePersistBatch (ms):..............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimePersistNetElementMetrics (ms):..................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimeBatchCommit (ms):...............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Incoming message rate to Metric Server:....................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimeFindCurrentMetric (ms):.........................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimefindCurrentMetricsForNetObject (ms):............................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

sendMetricEvents:..........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimePersistNetElementMetric (ms):...................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimeAddMetricWithoutPropagation (ms):...............................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Rate of message drop at the metric server:.................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Batch Commit Size :........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimeAddMetricsInBulkWithoutPropagation (ms):........................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

==============================================

============ issues statistics ==============

Issues Incoming Rate:......................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

UpdateEventAndIssues (ms):.................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimeBatchCommit (ms):...............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Batch Commit Size :........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Issues Processing Rate:....................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

==============================================

============ label statistics ==============

Label drop rate:...........................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimePersistBatch (ms):..............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Label processing rate:.....................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimeBatchCommit (ms):...............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Label request rate:........................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Batch Commit Size :........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

==============================================

============ csmp statistics ==============

csmpConNotificationRate:...................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

csmpNonNotificationRate:...................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

csmpNonQueueSize:..........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

csmpNotificationRate:......................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

csmpDropRate:..............................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

csmpProcessingRate:........................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

csmpConQueueSize:..........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

==============================================

============ database connection pool statistics ==============

dbConFlushCount:...........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ActiveCount:...............................................................[ val: 13 ]

InUseCount:................................................................[ val: 7 ]

AvailableCount:............................................................[ val: 243 ]

CreatedCount:..............................................................[ val: 13 ]

DestroyedCount:............................................................[ val: 0 ]

الأداة الرئيسية (/opt/cgms/jre/bin/keytool):

من المهم أن تعرف أن تركيب الصندوق يأتي مع Java. يجب إستخدام الأداة المساعدة keyTool من أجل إنشاء وإدارة cgms_keystore الذي يجب تكوينه بشكل مناسب على كل من FND وخادم إمداد النفق (TPS).

في بعض البيئات، تم تثبيت Java على الخادم بالفعل وسيتم توفير أمر أداة المفتاح لأي مستخدم من خلال إستخدام متغير $PATH Environment. إذا كنت تستخدم الأمر key tool" ووجدت هذا الخطأ، فهناك حل آخر لك:

[root@fnd]# keytool

-bash: keytool: command not found

يمكنك الانتقال إلى الدليل/opt/cgms/jre/bin/directory واستدعاء أداة المفتاح المساعدة في هذا الدليل على سبيل المثال:

[root@fnd ~]# keytool -v -list -keystore /opt/cgms/server/cgms/conf/cgms_keystore

-bash: keytool: command not found

[root@fnd ~]# cd /opt/cgms/jre/bin/

[root@fnd bin]# ./keytool -v -list -keystore /opt/cgms/server/cgms/conf/cgms_keystore

Enter keystore password:

cgdm-client.sh (/opt/cgms-tools/bin/cgdm-client.sh):

ملاحظة: يتم تجميع هذا البرنامج النصي والبرامج النصية الأخرى في دليل /opt/cgms-tools/ في حزمة CGMS-tools RPM.

يستخدم FND NetConf عبر HTTPS للوصول إلى موجه المنطقة الميدانية (FAR) والاتصال به. يستخدم NetConf رسائل بتنسيق XML لتوفير خدمة لا يمكن الاعتماد عليها واعتمادها فحسب، بل يمكن أيضا تقسيمها وإرسالها إلى قاعدة بيانات بسهولة. هناك أداة واجهة سطر الأوامر (CLI) تسمى CGDM-client ستقوم بفتح جلسة عمل مدير أجهزة الشبكة المتصلة (CGDM) يدويا إلى أبعد ما يكون عن إختيارك، وتنفيذ أمر بعيد وإرسال XML الذي تم إستلامه إستجابة من FAR to Stdout في BASH.

إذا قمت بتنفيذ البرنامج النصي بدون خيارات، سيتم تقديم إرشادات الاستخدام لك:

[root@fnd bin]# ./cgdm-client

ERROR: Please specify an IP address and a command

usage: cgdm-client <cgr ip address> <cgdm CLI command>

-c <arg> Conf and keystore directory path, default =

/opt/cgms/server/cgms/conf

-v Verbose mode

على سبيل المثال، دعنا نقل أنك تريد التحقق من مزامنة الوقت بشكل كامل على أحد الموجهات لديك حيث تكون قيمة IP الخاص بالإدارة (قيمة "IP" في ملف csv الخاص بك) هي 192.0.2.1. من جلسة طرفية على خادم تطبيق FND، يمكنك الاستعلام عن الوقت على CGR باستخدام الأمر show clock:

[root@fnd bin]# ./cgdm-client 192.0.2.1 show clock

<?xml version="1.0" encoding="ISO-8859-1"?>

<nf:rpc-reply xmlns:nf="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns="http://www.cisco.com/nxos:1.0" message-id="1">

<nf:data>15:44:58.092 CST Mon Mar 13 2017

</nf:data>

</nf:rpc-reply>

إختياريا، يمكنك تحديد مخرجات الجملة باستخدام علامة 'v' في الأمر الخاص بك. لاحظ أن مخرج السرعة يأتي من عمليات برامج Java و Cisco وبنائها. لن ترى أي معلومات إضافية عن الشبكة أو الجهاز في هذا الإخراج:

[root@fnd bin]# ./cgdm-client -v 192.0.2.1 show clock

< output omitted >

csmp-request.sh (/opt/cgms-tools/bin/csmp-request.sh):

بالإضافة إلى أداة CGDM-client FAR، هناك أداة لنقاط النهاية تسمى CSMP-request. مثل البرنامج النصي cgdm-client، سيسمح لك هذا البرنامج النصي بالاستعلام عن معلومات من CGEs باستخدام CSMP. ما عليك سوى تحديد عنوان IPv6 لنقطة نهاية الشبكة و TLV (قيمة طول النوع) التي تقوم بالاستعلام عنها على الجهاز. والقائمة الكاملة لرموز TLV خارجة عن النطاق في هذه المقالة ولكن سيتم عرض بعض الأمثلة المعروفة أدناه. صياغة البرنامج النصي هي:

./csmp-request -r [] TLV-Value

1. الاستعلام عن إصدار البرنامج الثابت CGE على مقياس باستخدام IP 2001:db8::1/32

[root@fnd bin]# ./csmp-request -r [2001:db8:0:0:0:0:0:1] 75

2. الاستعلام عن وقت التشغيل على المتر باستخدام IP 2001:db8::1/32

[root@fnd bin]# ./csmp-request -r [2001:db8:0:0:0:0:0:1] 22

أداة التوقيع (/opt/cgms-tools/bin/signature-tool):

أداة التوقيع هي أداة جافا المساعدة التي ستسمح لك بتشفير كلمات المرور ذات الاختبار الواضح، وفك تشفير كلمات المرور المشفرة أو السلاسل وطباعة شهادات SSM_CSMP في نص واضح. يجب إستخدام هذه الأداة لإنشاء سلاسل كلمات مرور مشفرة لملفات csv الخاصة بك حتى لا تحتوي على كلمات مرور المسؤول في النصوص غير المشفرة.

لعرض صياغة الأمر، قم بتنفيذ الأمر بدون خيارات:

[root@fnd bin]# ./signature-tool

usage:

signature-tool print

signature-tool export <binary|base64> <filename>

signature-tool decrypt <keystore> <filename>

signature-tool encrypt <keystore> <filename>

لطباعة إستخدام شهادة SSM_CSMP:

[root@fnd bin]# ./signature-tool print

لتشفير كلمة مرور مسؤول نص واضح:

1. انتقل إلى دليل /opt/cgms-tools/bin:

[root@fnd ~]# cd /opt/cgms-tools/bin

[root@fnd bin]# pwd

/opt/cgms-tools/bin

2. إنشاء ملف نص جديد يحتوي على السلسلة/كلمة المرور ذات الصلة فقط في نص واضح:

1. [root@fnd bin]# echo AdminPassword > clear-text-password.txt

[root@fnd bin]# cat clear-text-password.txt

AdminPassword

2. قم بتنفيذ النص التنفيذي لأداة التوقيع باستخدام خيار 'التشفير'، وحدد المسار الدقيق لملف cgms_keystore واسم الملف الذي قمت بإنشائه والذي يحتوي على كلمة مرور نص واضح. عندما يطلب منك الاسم المستعار، أستخدم 'cgms' كالشهادة الموجودة في ملف cgms_keystore التي تحتوي على الاسم المستعار 'cgms' فقط التي يستخدمها تطبيق FND للمصادقة مع المرجع المصدق الخاص بك:

[root@fnd bin]# ./signature-tool encrypt /opt/cgms/server/cgms/conf/cgms_keystore clear-text-password.txt

Enter alias: cgms

Enter password:

pXHcF+YxyoJarz4YAqvFVMrLT2I//caHLddiJfrb7k65RmceIJUNlDd2dUPhGyGZTeEfz8beh8tWSGZ4lc66rhAQ9mYNaw2XSPaL8psoK+U0wzHgY068tnc7q17t05CZ5HQh8tWSGZ4lc66rhAQ9mOivj1B3XRKFmkpSXo4ZubeKRJ4NNaGAKFV8cjBJQDWsh7NAXL3x5D62/7w4Mhmftf2XiGlqeWlc66rhAQF+YxyoJarz4YAqvFVMrLT2I//caHLIDYoKoeTVB2SLQXtSZR+dwxYjQsE0hCmBpHv0lDD/l4gg==

لفك تشفير سلسلة مشفرة:

1. خلقت جديد .txt مبرد في ال /opt/cgms-tools/bin/ دليل يستعمل ال يشفر خيط:

[root@fnd bin]# echo pXHcF+YxyoJarz4YAqvFVMrLT2I//caHLddiJfrb7k65RmceIJUNlDd2dUPhGyGZTeEfz8beh8tWSGZ4lc66rhAQ9mYNaw2XSPaL8psoK+U0wzHgY068tnc7q17t05CZ5HQh8tWSGZ4lc66rhAQ9mOivj1B3XRKFmkpSXo4ZubeKRJ4NNaGAKFV8cjBJQDWsh7NAXL3x5D62/7w4Mhmftf2XiGlqeWlc66rhAQF+YxyoJarz4YAqvFVMrLT2I//caHLIDYoKoeTVB2SLQXtSZR+dwxYjQsE0hCmBpHv0lDD/l4gg== > encrypted-password.txt

2.قم بتنفيذ أداة التوقيع باستخدام خيار فك التشفير، ومرة أخرى قم بتحديد المسار الصحيح لملف المخزن الرئيسي وكذلك اسم ملف .txt الذي يحتوي على كلمة المرور المشفرة المخزنة فيه.

[root@fnd bin]# ./signature-tool decrypt /opt/cgms/server/cgms/conf/cgms_keystore encrypted-password.txt

Enter alias: cgms

Enter password:

AdminPassword

أدوات قاعدة البيانات

ومثل المجموعة الفعالة من أدوات/أدوات سطر الأوامر، فإن الصندوق الوطني للتنمية الوطنية يحتوي على مجموعة رائعة من الأدوات القائمة على واجهة المستخدم الرسومية (GUI) والتي يمكنها مساعدتك في تحليل وتشخيص المشكلات في قاعدة البيانات. للوصول إلى أدوات DB، قم بتسجيل الدخول إلى لوحة المعلومات الرئيسية لنشر FND، ثم لصق /pages/diag/db.seam بعد جزء .com من عنوان URL الخاص بك.

تحتوي هذه المنطقة على ثلاث علامات تبويب: استعلام قاعدة البيانات ومعلومات قاعدة البيانات وعارض السجلات. تتيح لك علامة التبويب "استعلام قاعدة البيانات" تشغيل استعلامات مخصصة وستوفر قائمة بكافة الجداول إذا قمت بالنقر فوق إظهار كافة الجداول على يمين الزر استعلام. على سبيل المثال، لعرض حالة الطبقة 1 و 2 لجميع واجهات الأجهزة، اكتب SELECT * من NET_INTERFACES في مربع استعلام SQL ثم انقر على زر الاستعلام. سيتم تزويدك بقائمة من جميع الواجهات HER و FAR وعناوين MAC الخاصة بها وحالة الطبقة الإدارية 1 وحالة إرتباط الطبقة 2 لكل واجهة.

إذا كنت ترغب في التحقق من إعدادات اتصال قاعدة البيانات، انقر فوق علامة التبويب معلومات قاعدة البيانات في الصفحة db.seam. هنا، سيكون لديك وصول للقراءة فقط إلى العديد من متغيرات قاعدة البيانات مثل URL الاتصال، اسم مستخدم قاعدة البيانات، إصدار Oracle، رقم المنفذ، SID وحجم كل جدول. كما تسرد في هذه الصفحة معلومات عن منطقة إسترداد Flash (FRA) مثل المساحة التي يستخدمها كل نوع من الملفات المخزنة على FRA ومدى المساحة التي يمكن استعادتها.