جدول المحتويات:

البرنامج النصي لمراقبة الخدمة لخوادم Linux: 4 خطوات
البرنامج النصي لمراقبة الخدمة لخوادم Linux: 4 خطوات

فيديو: البرنامج النصي لمراقبة الخدمة لخوادم Linux: 4 خطوات

فيديو: البرنامج النصي لمراقبة الخدمة لخوادم Linux: 4 خطوات
فيديو: كيف يمكن للهاكرز التحكم في أي جهاز كمبيوتر؟ 2024, شهر نوفمبر
Anonim
البرنامج النصي لمراقبة الخدمة لخوادم Linux
البرنامج النصي لمراقبة الخدمة لخوادم Linux

قد يكون امتلاك نظام ثابت يعمل دائمًا ، حتى لو كنت تستخدم Linux مهمة صعبة.

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

الخطوة 1: استخدام الأساليب التي يوفرها Systemd

كما تعلم بالفعل ، فإن معظم أنظمة تشغيل Linux الحديثة تستخدم systemd.

إذا لم تكن معتادًا على نظام systemd ، فهذا بحسب ويكيبيديا:

"… نظام init مستخدم في توزيعات Linux لإقلاع مساحة المستخدم وإدارة جميع العمليات لاحقًا ، بدلاً من أنظمة بدء UNIX System V أو Berkeley Software Distribution (BSD). …"

لا يزال الكثير من الناس يتجادلون حول سبب ضرورة استبدال نظام init القديم الجيد بنظام إدارة العمليات الأكثر تعقيدًا ، ولكن على الرابط التالي قد يجد المرء تفسيرًا جيدًا:

www.tecmint.com/systemd-replaces-init-in-l…

سيكون التحسين الأكثر أهمية هو أنه قادر على إحضار النظام بشكل أسرع من init ، بسبب المعالجة المتزامنة والمتوازية عند التمهيد بدلاً من النهج التسلسلي لـ init.

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

[الوحدة] الوصف = وصف applicationDocumentation = https://wikipedia.org/ After = local-fs.target network.target [الخدمة] النوع = simpleExecStart = / usr / sbin / applicationExecReload = / usr / sbin / application reloadExecStop = / usr / sbin / application stopRestart = دائمًا [تثبيت] WantedBy = multi-user.target

ضعها في ملف application.service في مجلد / lib / systemd / system.

يتم توضيح ما يفعله كل خيار من هذه الخيارات في الرابط التالي:

access.redhat.com/documentation/en-US/Red_…

لبدء تشغيل التطبيق الخاص بك ، قم بإصدار الأمر التالي:

sudo systemctl بدء application.service

ملاحظة: يمكن حذف ملحق الخدمة.

لإيقاف التطبيق:

sudo systemctl توقف application.service

إذا تم تغيير ملف التكوين وتريد إعادة تحميل الإعدادات:

sudo systemctl إعادة تحميل application.service

لإعادة تشغيل التطبيق:

sudo systemctl إعادة تشغيل application.service

لتمكين البدء التلقائي عند التمهيد:

يتيح sudo systemctl application.service

إذا تم تمكين هذا ، فسيحاول مدير عملية systemd بدء تشغيل التطبيق بناءً على الإعدادات التي تم توفيرها بواسطة ملف النظام.

لتعطيله ، استخدم نفس الأمر على النحو الوارد أعلاه ، ولكن مع معلمة "تعطيل".

إذا قمت بوضع Restart = دائمًا في ملف الخدمة ، فسيقوم systemd بمراقبة العملية وإذا تعذر العثور عليها في قائمة العمليات ، فسيحاول إعادة تشغيلها تلقائيًا.

إذا قمت بوضع

RestartSec = 30

بعد توجيه إعادة التشغيل ، سينتظر لمدة 30 ثانية قبل محاولة إعادة تشغيل العملية. قد يكون هذا مفيدًا ، لأن محاولة إعادة التشغيل المستمرة لخدمة / تطبيق فاشل يمكن أن تؤدي إلى ارتفاع الطلب على النظام (كتابة سجلات الأخطاء ، إلخ)

كما ترى ، يوفر systemd بالفعل بعض الوسائل لمراقبة العمليات. ومع ذلك ، قد لا يكون هذا كافيًا في بعض الحالات. ماذا لو لم تخرج العملية (ستظل في قائمة العمليات) ، لكنها تتوقف عن الاستجابة. في هذه الحالة ، للتأكد من أن العملية تعمل بالفعل ، قد تحتاج إلى إجراء فحوصات إضافية.

هذا هو المكان الذي ستكون فيه البرامج النصية من هذا الدليل مفيدة.

الخطوة 2: تكوين واستخدام البرامج النصية لمدقق الخدمة

إذا كنت بحاجة إلى مزيد من التحكم في عملياتك / خدماتك الجارية ، فستكون هذه البرامج النصية مفيدة بالتأكيد.

نظرًا لأن الشفرة كبيرة بعض الشيء ، يتم تحميلها على github ويمكن العثور عليها ضمن المستودع التالي:

github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh

"قلب" الحزمة بأكملها هو

checkService.sh

قبل استخدامه ، يجب استبدال المسار الكامل لمجلد الخدمة. يمكن العثور على هذا في بداية البرنامج النصي.

يمكن للبرنامج النصي مراقبة العديد من العمليات وتنفيذ مهام إضافية ، كما هو موضح أدناه:

يمر عبر كل ملفات من المجلد الفرعي / services الذي يحتوي على.serv أو.check الامتدادات وسيتحقق مما إذا كانت هناك عملية نشطة تسمى "التطبيق".

إذا لم يكن هناك ملف ".check" لأحد التطبيقات ، فإن ملف application.serv فقط:

إذا كانت العملية نشطة ، فسوف تعتبر العملية نشطة

إذا كانت العملية غير نشطة ، فستتم إعادة تشغيل الخدمة عن طريق إصدار الأمر التالي:

إعادة تشغيل تطبيق systemctl

إذا كان ملف.serv فارغًا!

إذا لم يكن ملف.serv فارغًا ولديه حقوق قابلة للتنفيذ ، فسيحاول تشغيله كبرنامج نصي عادي BASH.

يكون هذا مفيدًا إذا كان لابد من القيام بشيء ما بالإضافة إلى إعادة تشغيل الخدمة فقط.

على سبيل المثال ، في ملف spamd.serv ، من الريبو أعلاه ، في حالة تعطل خدمة البريد العشوائي ، يجب إعادة تشغيل خدمة البريد العشوائي بدلاً من ذلك ، مما يؤدي أيضًا إلى إعادة تشغيل البريد العشوائي. إعادة تشغيل الرسائل غير المرغوب فيها فقط لن تكون كافية.

يمكن للمرء تحرير محتوى ملف serv مثل هذا وفقا للاحتياجات.

مثال آخر هو ملف pcscd.serv. في هذه الحالة ، تم أيضًا إعادة تشغيل / قتل العديد من العمليات الأخرى.

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

على سبيل المثال ، بالنسبة لخدمة oscam ، قمنا بإنشاء ملف تحقق يحاول الاتصال بواجهة الويب الخاصة به لمعرفة ما إذا كان ناجحًا أم لا. إذا لم يكن الأمر كذلك ، فبالرغم من تنشيط العملية ، فإن الخدمة لا تستجيب وتحتاج إلى إعادة التشغيل. يجب إجراء / استدعاء إعادة تشغيل الخدمة بواسطة ملف.check نفسه.

مثال آخر هو خدمة DLNA ميدياتومب.

هذا خادم صغير يوفر محتوى فيديو / صوتي لعملاء DLNA ويبث نفسه على الشبكة. في بعض الأحيان تتوقف الخدمة ولا يمكن اكتشافها بعد الآن ، ولكن العملية ستظل نشطة. للتحقق مما إذا كانت الخدمة قابلة للاكتشاف ، تم استخدام الأداة المساعدة CLI المسماة gssdp-Discover. تم وضع الكود الكامل الذي يتحقق من خادم DLNA داخل برنامج نصي mediatomb.check.

هذه مجرد أمثلة قليلة حول كيفية استخدام ملفات.serv و.check.

من أجل مراقبة خدمة جديدة ، يجب عليك إنشاء ملف.serv ، وإذا لزم الأمر أيضًا ملف فحص وكتابة البرنامج النصي المقابل بداخلهما.

إذا كان التحقق من وجود العملية كافيًا فقط ، فسيكون ملف.serv فارغًا كافيًا. إذا كان لا بد من إجراء فحوصات إضافية ، فيجب إنشاء ملف فحص وكتابة نص صغير للقيام بالمهمة.

من Cource ، يجب تشغيل البرنامج النصي.sh بشكل دوري ، لذلك يجب أيضًا إنشاء وظيفة cron له:

# تحقق من تشغيل الخدمات كل 5 دقائق * / 5 * * * * /var/bin/ServiceCheck/checkService.sh> / dev / null

الخطوة الثالثة: الأفكار النهائية

آمل أن تجد هذه الحزمة مفيدة حيث يمكنها ببساطة مراقبة عمليات Linux ونأمل أن تقلل من وقت تعطل خدماتك.

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

موصى به: