في الآونة الأخيرة ، كان علينا مهمة مراقبة فترة صلاحية الشهادات على الخوادم التي تعمل بنظام Windows. حسنًا ، كيف استيقظت ، بعد أن تحولت الشهادات إلى قرع عدة مرات ، في نفس الوقت الذي كان فيه الزميل الملتحي المسؤول عن التجديد في إجازة. بعد ذلك ،
شكنا في شيء وقررنا التفكير فيه. نظرًا لأننا نقدم ببطء نظام مراقبة NetXMS ، فقد أصبح هو المرشح الرئيسي ، ومن حيث المبدأ ، المرشح الوحيد لهذه المهمة.
تم الحصول على النتيجة في النهاية على النحو التالي:

والعملية نفسها هي أبعد من ذلك.
دعنا نذهب. لا يوجد عداد مضمن لشهادات انتهاء الصلاحية في NetXMS ، لذلك تحتاج إلى إنشاء برامج نصية خاصة بك واستخدامها لتزويدها بالبيانات. بالطبع ، على Powershell ، إنه Windows. يجب أن يقرأ البرنامج النصي جميع الشهادات في نظام التشغيل ، ويستغرق تاريخ انتهاء الصلاحية بالأيام من هناك ، وينقل هذا الرقم إلى NetXMS. من خلال وكيله. لنبدأ معه.
الخيار الأول ، الأسهل. فقط احصل على عدد الأيام قبل انتهاء صلاحية الشهادة مع أقرب تاريخ.
لكي يتعرف خادم NetXMS على وجود المعلمة المخصصة الخاصة بنا ، يجب أن يستلمها من الوكيل. خلاف ذلك ، لا يمكن إضافة هذه المعلمة بسبب غيابها. لذلك ، في ملف تكوين عامل
nxagentd.conf ، نضيف سطر معلمة خارجي باسم
HTTPS.CertificateExpireDateSimple ، نكتب فيه البرنامج النصي لتشغيله:
ExternalParameter = HTTPS.CertificateExpireDateSimple: powershell.exe -File "\\server\share\NetXMS_CertExpireDateSimple.ps1"
نظرًا لأن البرنامج النصي يعمل عبر الشبكة ، يجب ألا تنسى
"سياسة التنفيذ" ، وكذلك لا تنسى الآخر "-NoLogo -NoProfile -NonInteractive" ، والذي حذفته من أجل تحسين قراءة التعليمات البرمجية.
نتيجة لذلك ، يبدو تكوين الوكيل كما يلي:
# # NetXMS agent configuration file # Created by agent installer at Thu Jun 13 11:24:43 2019 # MasterServers = netxms.corp.testcompany.ru ConfigIncludeDir = C:\NetXMS\etc\nxagentd.conf.d LogFile = {syslog} FileStore = C:\NetXMS\var SubAgent = ecs.nsm SubAgent = filemgr.nsm SubAgent = ping.nsm SubAgent = logwatch.nsm SubAgent = portcheck.nsm SubAgent = winperf.nsm SubAgent = wmi.nsm ExternalParameter = HTTPS.CertificateExpireDateSimple: powershell.exe -File "\\server\share\NetXMS_CertExpireDateSimple.ps1"
بعد ذلك ، تحتاج إلى حفظ التكوين وإعادة تشغيل الوكيل. يمكنك القيام بذلك من وحدة التحكم NetXMS: افتح config (ملف تشويش وكيل التعديل) ، وقم بتحرير وتنفيذ حفظ وتطبيق ، ونتيجة لذلك ، سيحدث نفس الشيء في الواقع. ثم أعد قراءة التكوين (Poll> Configuration) ، إذا لم تكن هناك قوة مطلقة للانتظار. بعد هذه الخطوات ، يجب أن تكون قادرًا على إضافة المعلمة المخصصة الخاصة بنا.
في وحدة التحكم NetXMS ، ننتقل إلى "
تكوين مجموعة البيانات" للخادم التجريبي الذي سنقوم بمراقبة الشهادات عليه وإنشاء معلمة جديدة هناك (في المستقبل ، بعد الإعداد ، يكون من المنطقي نقله إلى القوالب). نختار HTTPS.CertificateExpireDateSimple من القائمة ، وأدخل الوصف مع اسم مألوف ، واضبط النوع على عدد صحيح وقم بتعيين الفاصل الزمني للاستقصاء. ليس من المنطقي أن نجعلها قصيرة جدًا حتى لا تسد قاعدة البيانات بمعلومات غير ضرورية ، سيكون من غير المناسب الانتظار لفترة طويلة عند التحقق. بالنسبة للشهادات ، أقوم عادةً بتعيين 600 ثانية. في وقت تصحيح الأخطاء ، يكون من المنطقي جعله أقصر ، 30 ثانية ، على سبيل المثال:

كل شيء جاهز ، طالما يكفي. يمكنك التحقق ... لا ، إنه من المبكر جدًا. الآن ، بالطبع ، لن نحصل على أي شيء. فقط لأن البرنامج النصي لم يكتب بعد. نحن تصحيح هذا الإغفال. سيعطي البرنامج النصي رقمًا فقط ، وهو عدد الأيام المتبقية حتى انتهاء صلاحية الشهادة. أصغر من كل ما هو متاح. مثال البرنامج النصي:
try {
اتضح مثل هذا:

723 يومًا ، قبل انتهاء صلاحية الشهادة لمدة عامين تقريبًا. هذا منطقي ، لأنني قمت مؤخرًا بتوقيع الشهادات على موقع test Exchange.
كان خيارًا سهلاً. ربما يكون شخص ما سعيدًا بذلك ، لكننا أردنا المزيد. لقد حددنا لأنفسنا مهمة الحصول على قائمة بجميع الشهادات على الخادم ، بالاسم ، ولكل واحد أن نرى عدد الأيام المتبقية حتى انتهاء صلاحية الشهادة.
الخيار الثاني ، أكثر تعقيدا قليلا.
مرة أخرى ، نقوم بتحرير تهيئة agent وهناك بدلاً من السطر مع ExternalParameter نكتب اثنين آخرين:
ExternalList = HTTPS.CertificateNames: powershell.exe -File "\\server\share\netxms_CertExternalNames.ps1" ExternalParameter = HTTPS.CertificateExpireDate(*): powershell.exe -File "\\server\share\netxms_CertExternalParameter.ps1" -CertificateId "$1"
في
ExternalList ، نحصل على قائمة من السلاسل. في حالتنا ، قائمة سلاسل مع أسماء الشهادة. قائمة بهذه السطور نحصل عليها. اسم القائمة هو
HTTPS.CertificateNames .
البرنامج النصي NetXMS_CertNames.ps1:
وبالفعل في
ExternalParameter ، نقوم بتغذية الأسطر من قائمة ExternalList ، وفي الناتج نحصل على نفس عدد الأيام لكل منها. المعرف هو شهادة بصمة الإبهام. يرجى ملاحظة أن HTTPS.CertificateExpireDate في هذا الخيار يحتوي على علامة نجمية (*). هذا ضروري حتى يقبل المتغيرات الخارجية ، فقط CertificateId لدينا.
البرنامج النصي NetXMS_CertExpireDate.ps1:
في تكوين خادم تجميع البيانات ، قم بإنشاء معلمة جديدة. في المعلمة ، حدد
HTTPS.CertificateExpireDate (*) من القائمة ، و (انتباه!) قم بتغيير العلامة النجمية إلى
{مثيل} . تتيح لك هذه النقطة المهمة إنشاء عداد منفصل لكل مثيل (الشهادة). يتم ملء الباقي ، كما في الإصدار السابق:

لكي تصبح العدادات شيئًا من إنشاء ، في علامة التبويب اكتشاف مثيل ، حدد قائمة الوكلاء من القائمة وفي حقل اسم القائمة ، أدخل اسم قائمة خارجية من البرنامج النصي - HTTPS.CertificateNames.
جاهز تقريبًا ، انتظر قليلاً أو اضغط على Poll> Configuration and Poll> Instance Discovery ، إذا كان الانتظار مستحيلًا تمامًا. نتيجة لذلك ، نحصل على جميع شهاداتنا مع تواريخ انتهاء الصلاحية:

ما هو المطلوب؟ حسنًا ، نعم ، فقط دودة من الكمال تنظر إلى بصمة الإبهام غير الضرورية هذه باسم الكاونتر بأعين حزينة ولا تسمح بإنهاء المقالة. لإطعامه ، افتح خصائص العداد مرة أخرى وعلى علامة التبويب "اكتشاف مثيل" في حقل "البرنامج النصي لتصفية اكتشاف مثيل" أضف البرنامج النصي المكتوب بلغة
NXSL (لغة
NetXMS الداخلية):
instance = $1; if (instance ~= "^(.*)\s\-\s\[T\:[a-zA-Z0-9]+\]$") { return %(true, instance, $1); } return true;
والتي سوف تصفية بصمة الإبهام:

ولعرضها التي تمت تصفيتها ، في علامة التبويب عام في حقل الوصف ، قم بتغيير CertificateExpireDate: {مثيل} إلى
CertificateExpireDate: {مثيل-الاسم} :

كل شيء ، وأخيرا الانتهاء من
KDPV :

جمال ذلك؟
يبقى تكوين التنبيهات بحيث تصل عن طريق البريد عند انتهاء صلاحية الشهادة في نهايتها المنطقية.
1. أولاً ، تحتاج إلى إنشاء "قالب حدث" لتنشيطه عند خفض قيمة العداد إلى حد معين معين من قبلنا. في "
تكوين الأحداث" ، قم بإنشاء اثنين من القوالب الجديدة بأسماء ، على سبيل المثال
CertificateExpireDate_Threshold_Activate مع حالة التحذير:

و
CertificateExpireDate_Threshold_Deactivate مماثلة مع الحالة العادية.
2. بعد ذلك ، انتقل إلى خصائص العداد وقم بتعيين العتبة في علامة التبويب Tresholds:

حيث نختار الأحداث التي تم إنشاؤها لدينا CertificateExpireDate_Threshold_Activate و CertificateExpireDate_Threshold_Deactivate ، قم بتعيين عدد القياسات (العينات) 1 (على وجه التحديد ، ليست هناك نقطة في تعيين عداد محدد) ، القيمة هي 30 (أيام) ، على سبيل المثال ، نحن نقوم بإعداد وقت تكرار الحدث. بالنسبة لشهادات الإنتاج ، قمت بتعيينها مرة واحدة يوميًا (86400 ثانية) ، وإلا يمكنك الغرق في التنبيهات (التي ، بالمناسبة ، حدثت مرة واحدة ، علاوة على ذلك ، كان صندوق البريد ممتلئًا خلال عطلة نهاية الأسبوع). بالنسبة للتصحيح ، من المنطقي ضبط أقل ، 60 ثانية ، على سبيل المثال.
3. في
"تكوين الإجراء" ، قم بإنشاء قالب رسالة تنبيه ، مثل هذا:

كل هذه٪ m ،٪ S ، إلخ. - وحدات الماكرو التي سيتم استبدال القيم من المعلمة لدينا. يتم وصفها بمزيد من التفاصيل في
دليل NetXMS.
4. أخيرًا ، عند دمج النقاط السابقة ، في "
سياسة معالجة الأحداث" ، يمكنك إنشاء قاعدة يتم من خلالها إنشاء "إنذار" وسيتم إرسال رسالة:

نحافظ على السياسة ، كل شيء يمكن اختباره. قم بتعيين الحد الأعلى للتحقق. تنتهي صلاحية أقرب شهادة لي في 723 يومًا ، وحددت 724 للتحقق منها ، ونتيجة لذلك ، حصلنا على التنبيه التالي:

ومثل هذا التنبيه الإلكتروني:

الآن هذا كل شيء. يمكنك ، بالطبع ، إعداد لوحة معلومات ، وإنشاء رسوم بيانية ، ولكن بالنسبة للشهادات ، ستكون الخطوط المستقيمة مملة إلى حد ما ومملة ، على عكس الرسوم البيانية لوحدة المعالجة المركزية أو تحميل الذاكرة ، على سبيل المثال. ولكن ، حول هذا الموضوع بطريقة أو بأخرى وقت آخر.