كما كتبت مراقبتي

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

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

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

ساعدني Atop و atop log reader atop كثيرًا في مراقبة وحدة التحكم. تم ذكرها بالفعل على هابر ، حتى على قمة تفكيكها ، لكن لم يقال شيء تقريبًا عن أتوبسار.

تركيب


تركيب بسيط جدا ، ثلاثة فرق فقط.

#Centos

yum install atop 

# ديبيان / أوبونتو

 apt-get install atop 


بعد ذلك ، يمكنك تكوين عملية المراقبة لنفسك أو استخدام الإعدادات الافتراضية.

# ديبيان / أوبونتو / سنتوس

 /etc/default/atop 

الملف القياسي:

  #cat /etc/default/atop INTERVAL=60 #,       ,    10  LOGPATH="/var/log/atop" #     OUTFILE="$LOGPATH/daily.log" #      

إضافة إلى التشغيل التلقائي
# ديبيان / أوبونتو / سنتوس

 systemctl enable atop 

تشغيل على قمة باعتبارها الخفي
# ديبيان / أوبونتو / سنتوس

 systemctl start atop 

للكسول تجمعوا في فريق واحد
#Centos

 yum install atop && systemctl enable atop && systemctl start atop 

# ديبيان / أوبونتو

 apt-get install atop && systemctl enable atop && systemctl start atop 

Atopsar


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

برنامج تعليمي صغير عن أعمال atopsar.

عندما يبدأ atopsar بدون مفاتيح ، يفتح السجل لهذا اليوم ويعرض الحمل على كل نواة بشكل فردي وسلسلة idl لجميع النواة.

المفاتيح التي أستخدمها هي:

-A = طباعة جميع المعلومات من السجل
-c = عرض معلومات حول التحميل على قلب المعالج ، المفتاح الافتراضي
-m = RAM وتحميل المبادلة
-d = نشاط القرص
-O = أعلى 3 عمليات تحميل وحدة المعالجة المركزية
-G = أعلى 3 عمليات تحميل RAM
مد = أعلى 3 عمليات تحميل القرص
-N = أعلى 3 عمليات تحميل الشبكة
-r = حدد المسار إلى السجل الذي تريد قراءته ، إذا كنت بحاجة إلى مشاهدة الحمل في الأيام الماضية
-b = وقت لبدء الإخراج
= الوقت لإنهاء الإخراج
-M = ينشئ عمودًا إضافيًا في النهاية ، يتم فيه تمييز درجة الأهمية للصف (+ هناك حمل ، * - حمل حرج)

بفضل المراقبة ، يمكننا فهم سبب سلوك الخادم غير الصحيح في أي وقت.

إشعار


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

أنا الوحيد الذي يتبع الخوادم ، لذلك أحتاج إلى إخطار أين يمكنني رؤيته دائمًا وعلى الأقل الرد عليه.

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

نتيجة للبحث ، تم اختيار Telegram messenger بسبب بساطته وتطبيقه المريح على الهاتف وسطح المكتب.

خلق روبوته باستخدام botfather .
بعد أن وضعت العديد من البرامج النصية على الخادم الذي يتتبع الحمل على الخادم (IDL ، smartct ، إلخ.) ، وجود أخطاء مثل "oom killer" ، والأخطاء عند إنشاء نسخة احتياطية ، وغيرها من العمليات التي تحتاج إلى السيطرة عليها.

البرامج النصية بسيطة إلى حد ما في bash ، على سبيل المثال ، التحقق من LA وإشعار أن Load Averadge قد تجاوز عدد النوى على الخادم.

 if [ ${LA[0]} -gt 2000 ] || [ ${LA[1]} -gt 3000 ] || [ ${LA[2]} -gt 4000 ] then wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text=  $ip LA $LAd" wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text=`top -b -n 1 | grep Cpu`" wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text= 5  `top -b -n 1 | grep -A 5 'PID USER' | tail -5`" fi 

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

التحذير الوحيد - إذا كان الخادم موجودًا في روسيا (ولم يكن لديك IPv6 على الخادم) ، فأنت بحاجة إلى استخدام وكيل. للقيام بذلك ، في بداية البرنامج النصي ، يجب عليك تسجيل سلسلة الاتصال إلى الوكيل:

 export https_proxy=http://:@IP.: 

هذه ليست النهاية


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

كان من الضروري التوصل إلى طريقة ما لحل المشكلات بسرعة ودون توفر الإنترنت الجيد. هنا تم حفظها مرة أخرى بواسطة الرسول (# telegrammivi). لقد علمت روبوتي أن أتواصل معي فقط ، متجاهلاً أي شخص آخر. الآن ، جنبًا إلى جنب مع إشعار المشكلة ، أحصل على بيانات أكثر بقليل ، وفقًا لفهم من هو مصدر المشكلة ، ويمكنني محاولة حلها عن بُعد. يكفي فقط كتابة رسالة إلى الروبوت ، وإلقاء الهاتف أعلى بحيث تختفي هذه الرسالة ، وفويلا - ذهب الروبوت للقيام بعملك. وبالتالي ، يمكنني ، على سبيل المثال ، قتل بعض العمليات غير المرغوب فيها ، وإعادة تشغيل البرنامج الخفي ، وحجب عنوان IP وما إلى ذلك.

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

هناك أيضًا إصدار لـ VK ، لكنه بطريقة ما لم يتجذر.

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

Source: https://habr.com/ru/post/ar453430/


All Articles