دخول
يوم جيد. منذ نصف عام الآن ، نقوم بتشغيل برنامج نصي (بشكل أكثر دقة ، مجموعة من النصوص) التي تنشئ تقارير عن حالة الأجهزة الظاهرية (وليس فقط). قررت مشاركة تجربة الخلق والرمز نفسه. أنا أعول على النقد وحقيقة أن هذه المواد قد تكون مفيدة لشخص ما.
لدينا الكثير من الأجهزة الافتراضية (حوالي 1500 VMs موزعة على 3rd vCenter). يتم إنشاء أخرى جديدة ويتم حذف القديمة منها في كثير من الأحيان. للاحتفاظ بالترتيب ، تمت إضافة العديد من الحقول المخصصة إلى vCenter لتقسيم VMs إلى أنظمة فرعية ، أشر إلى ما إذا كانت اختبارًا ، وكذلك من قبل من ومتى. أدى العامل البشري إلى حقيقة أن أكثر من نصف السيارات تركت مع حقول فارغة ، مما أدى إلى تعقيد العمل. مرة واحدة كل ستة أشهر ، بدأ شخص ما مفزعًا في العمل على تحديث هذه البيانات ، لكن النتيجة لم تعد ذات صلة لمدة أسبوع ونصف.
سأوضح على الفور أن الجميع يدرك أنه يجب أن تكون هناك تطبيقات لإنشاء آلات ، وعملية لإنشاءها ، إلخ. إلخ وبينما يتم اتباع كل هذه العملية بدقة وبالترتيب. لسوء الحظ ، هذا ليس هو الحال معنا ، ولكن هذا ليس موضوع المقال :)
بشكل عام ، تقرر أتمتة التحقق من صحة ملء الحقول.
قررنا أن تكون الرسالة اليومية مع قائمة بالآلات المملوءة بشكل غير صحيح لجميع المهندسين المسؤولين ورؤسائهم بداية جيدة.
في هذه المرحلة ، كان أحد الزملاء قد قام بالفعل بتنفيذ برنامج نصي PowerShell ، يقوم كل يوم وفقًا لجدول زمني بجمع معلومات على جميع الأجهزة من جميع vCenter-s وشكلوا 3 مستندات بتنسيق csv (كل منها في vCenter خاص به) ، والتي وضعت على قرص مشترك. تقرر اتخاذ هذا البرنامج النصي كأساس وإكماله بشيكات باستخدام لغة البحث ، والتي كانت لدي بعض الخبرة فيها.
في عملية وضع اللمسات الأخيرة ، غمر الحل بالإبلاغ عن طريق البريد وقاعدة بيانات تحتوي على الجداول الرئيسية والتاريخية (المزيد حول هذا لاحقًا) ، بالإضافة إلى تحليل سجلات vSphere للعثور على منشئي vm الفعلي والوقت الذي تم إنشائها.
لأغراض التطوير ، تم استخدام IDE RStudio Desktop و PowerShell ISE.
يتم تشغيل البرنامج النصي من جهاز ظاهري منتظم في Windows.
وصف المنطق العام.
المنطق العام للنصوص هو على النحو التالي.
- نقوم بجمع البيانات على الأجهزة الافتراضية باستخدام برنامج PowerShell النصي ، والذي يسمى عبر R ، يتم دمج النتيجة في ملف CSV واحد. التفاعل العكسي بين اللغات يتم بالمثل. (كان من الممكن نقل البيانات مباشرةً من R إلى PowerShell في شكل متغيرات ، ولكن من الصعب ، وحتى مع csv الوسيط ، من السهل تصحيح الأخطاء ومشاركة النتائج الوسيطة مع شخص ما).
- باستخدام R ، نقوم بتكوين معلمات صالحة للحقول التي نتحقق من قيمها. - نقوم بتكوين مستند كلمة يحتوي على قيم هذه الحقول لإدراجها في خطاب معلومات سيكون إجابة على أسئلة الزملاء "ليس جيدًا ، ولكن كيف ينبغي أن أقوم بملء هذا؟"
- نقوم بتحميل البيانات على جميع VMs من ملف CSV باستخدام R ، ونشكل إطار بيانات ، ونزيل الحقول غير الضرورية ونشكل وثيقة معلومات xlsx تحتوي على معلومات موجزة عن جميع VMs التي نقوم بتحميلها إلى مورد مشترك.
- بالنسبة إلى dataframe لجميع VM ، نطبق جميع عمليات التحقق من صحة ملء الحقول ونشكل جدولًا يحتوي على VMs فقط مع الحقول التي تم ملؤها بشكل غير صحيح (وهذه الحقول فقط).
- يتم إرسال قائمة VMs الناتجة إلى برنامج نصي PowerShell آخر ، والذي سيبحث في سجلات vCenter لأحداث إنشاء VM ، مما سيتيح لك تحديد الوقت المقدر لإنشاء VM والمنشئ المقصود. هذا هو الحال عندما لا يعترف أحد بسيارته. لا يعمل هذا البرنامج النصي بسرعة ، خاصةً إذا كان هناك الكثير من السجلات ، لذلك نحن ننظر فقط في الأسبوعين الأخيرين ، ونستخدم أيضًا سير العمل ، والذي يسمح لك بالبحث عن المعلومات على العديد من VMs في نفس الوقت. في البرنامج النصي المثال ، هناك تعليقات مفصلة على هذه الآلية. تتم إضافة النتيجة إلى ملف CSV ، والذي يتم تحميله مرة أخرى في R.
- نقوم بتكوين مستند xlsx منسق بشكل جميل يتم فيه تمييز الحقول المملوءة بشكل غير صحيح باللون الأحمر ، وسيتم تطبيق المرشحات على بعض الأعمدة ، وستتم الإشارة إلى أعمدة إضافية تحتوي على منشئي المزعوم وسيتم الإشارة إلى وقت إنشاء VM.
- نحن نشكل بريدًا إلكترونيًا ، حيث نضع مستندًا يصف قيم الحقول الصالحة ، بالإضافة إلى جدول معبأ بشكل غير صحيح. في النص ، نشير إلى العدد الإجمالي لأجهزة VM التي تم إنشاؤها بشكل غير صحيح ، ورابط لمورد مشترك وصورة تحفيزية. إذا لم تكن هناك أجهزة VM مكتظة بالسكان بشكل غير صحيح ، فنحن نرسل خطابًا آخر به صورة تحفيزية أكثر متعة.
- نقوم بتسجيل البيانات على جميع VMs في قاعدة بيانات SQL Server ، مع الأخذ في الاعتبار الآلية المنفذة للجداول التاريخية (آلية مثيرة للاهتمام للغاية - حولها بمزيد من التفصيل)
في الواقع مخطوطات
النصي للحصول على قائمة vm على PowerShell البرنامج النصي PowerShell يسحب سجلات منشئي الأجهزة الظاهرية وتواريخ إنشائهم تستحق مكتبة xlsx اهتمامًا خاصًا ، مما مكّن من جعل المرفق بالحرف منسقًا بوضوح (كما يحب الدليل) ، وليس فقط جدول csv.
إنشاء مستند xlsx جميل مع قائمة الأجهزة المملوءة بشكل غير صحيح الإخراج هو شيء مثل هذا:

كان هناك أيضا فارق بسيط للاهتمام في إعداد جدولة ويندوز. لم ينجح الأمر في التقاط المعلمات الصحيحة للحقوق والإعدادات حتى يبدأ كل شيء كما يجب. نتيجة لذلك ، تم العثور على مكتبة R ، والتي تنشئ نفسها مهمة لتشغيل البرنامج النصي R ولا تنسى حتى ملف السجل. ثم يمكنك تصحيح المهمة مع الأقلام.
جزء من رمز R مع مثالين يقوم بإنشاء مهمة في Windows Scheduler library(taskscheduleR) myscript <- file.path(getwd(), "all_vm.R")
بشكل منفصل ، حول قاعدة البيانات
بعد إعداد البرنامج النصي ، بدأت أسئلة أخرى في الظهور. على سبيل المثال ، أردت أن أجد التاريخ الذي تم فيه حذف VM ، وكانت السجلات في vCenter قد تم ارتداؤها بالفعل. نظرًا لأن البرنامج النصي يضع الملفات في المجلد يوميًا ولا يقوم بتنظيفها (نقوم بتنظيفها بأيدينا عندما نتذكر) ، يمكنك إلقاء نظرة على الملفات القديمة والعثور على الملف الأول الذي لا يوجد فيه جهاز VM هذا. لكن هذا ليس باردا.
كنت أرغب في إنشاء قاعدة بيانات تاريخية.
جاءت وظيفة MS SQL SERVER للمساعدة - جدول زمني تم إصداره بواسطة النظام. تتم ترجمته عادةً كجداول مؤقتة (غير مؤقتة).
يمكنك قراءة التفاصيل في وثائق Microsoft الرسمية .
باختصار ، نقوم بإنشاء جدول ، ونقول إننا سنوفره مع الإصدار وأن SQL Server ينشئ عمودين إضافيين في هذا الجدول (تاريخ إنشاء السجل وتاريخ انتهاء صلاحية السجل) وجدولًا إضافيًا سيتم كتابة التغييرات به. نتيجة لذلك ، نحصل على المعلومات ذات الصلة ، ومن خلال الاستعلامات البسيطة ، التي ترد أمثلة عنها في الوثائق ، يمكننا أن نرى إما دورة حياة جهاز ظاهري معين أو حالة جميع أجهزة VM في وقت معين.
فيما يتعلق بالأداء ، لن تكتمل معاملة الكتابة إلى الجدول الرئيسي حتى يتم إكمال معاملة الكتابة إلى الجدول المؤقت. أي في الجداول التي تحتوي على عدد كبير من عمليات الكتابة ، يجب تنفيذ هذه الوظيفة بحذر ، ولكن في حالتنا ، هذا شيء رائع للغاية.
لكي تعمل الآلية بشكل صحيح ، كان من الضروري إضافة جزء صغير من التعليمات البرمجية على R من شأنه مقارنة الجدول الجديد بالبيانات الخاصة بجميع أجهزة VM بالجهاز المخزن في قاعدة البيانات وكتابة الصفوف التي تم تغييرها إليها فقط. الرمز ليس صعبًا جدًا ، فهو يستخدم مكتبة comparDF ، لكنني سأعطيه أيضًا أدناه.
رمز R لكتابة البيانات إلى قاعدة البيانات في المجموع
نتيجة لإدخال البرنامج النصي ، تم الحفاظ على النظام والحفاظ عليه لعدة أشهر. في بعض الأحيان تظهر VMs المكتظة بشكل غير صحيح ، ولكن البرنامج النصي بمثابة تذكير جيد ويتم إدخال VM نادر في القائمة لمدة يومين على التوالي.
تم إجراء احتياطي أيضًا لتحليل البيانات التاريخية.
من الواضح أن الكثير من هذا لا يمكن تحقيقه "على الركب" ، ولكن مع البرامج المتخصصة ، ولكن المهمة كانت مثيرة للاهتمام ، وقد يقول المرء أنها اختيارية.
أثبتت R مرة أخرى أنها لغة عالمية رائعة ، وهي مثالية ليس فقط لحل المشكلات الإحصائية ، ولكن أيضًا بمثابة "وضع" ممتاز بين مصادر البيانات الأخرى.