العينات. فائدة وحدة التحكم لتصور نتيجة أي أوامر قذيفة

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


العينات


يتم تكوين مراقبة تغير الحالة في قاعدة البيانات ، ومراقبة حجم قوائم الانتظار ، والقياس عن بعد من الخوادم البعيدة ، وتشغيل نشر النصوص وتلقي الإخطارات عند الانتهاء في دقيقة واحدة مع ملف YAML بسيط.


الرمز متاح على جيثب . تعليمات التثبيت - لنظام التشغيل Linux و macOS و (التجريبية) لنظام Windows.


لماذا أحتاج هذا عندما يكون هناك أنظمة مراقبة كاملة؟


يجب أن أقول على الفور أن هذا ليس بأي حال من الأحوال بديلاً للوحات القيادة الشاملة والمراقبة. مقارنة Sampler مع Prometheus + Grafana هو نفس مقارنة tail less مع Elastic Stack أو Splunk .


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


لذلك يجب أن توضع على جميع الخوادم؟


لا ، يمكن تشغيل Sampler محليًا ، ولكن يمكن أخذ المقاييس من العديد من الأجهزة البعيدة. يحتوي كل مكون على لوحة القيادة على قسم init حيث يمكنك الدخول عبر ssh (أو القيام بأي إجراء آخر للدخول إلى الواجهة interactive shell - إنشاء اتصال بقاعدة البيانات ، والاتصال عبر JMX ، وتسجيل الدخول إلى واجهة برمجة التطبيقات ، وما إلى ذلك)


طرق عرض المكون وأمثلة التكوين


تُظهر أمثلة التكوين أوامر لـ macOS. سيعمل الكثيرون دون تغيير في نظام Linux ، لكن البعض يحتاج إلى تكييف.


Runchart




ترتيب
 runcharts: - title: Search engine response time rate-ms: 500 # sampling rate, default = 1000 scale: 2 # number of digits after sample decimal point, default = 1 legend: enabled: true # enables item labels, default = true details: false # enables item statistics: cur/min/max/dlt, default = true items: - label: GOOGLE sample: curl -o /dev/null -s -w '%{time_total}' https://www.google.com - label: YAHOO sample: curl -o /dev/null -s -w '%{time_total}' https://search.yahoo.com - label: BING sample: curl -o /dev/null -s -w '%{time_total}' https://www.bing.com 

خط المؤشر




ترتيب
 sparklines: - title: CPU usage rate-ms: 200 scale: 0 sample: ps -A -o %cpu | awk '{s+=$1} END {print s}' - title: Free memory pages rate-ms: 200 scale: 0 sample: memory_pressure | grep 'Pages free' | awk '{print $3}' 

المخطط الشريطي




ترتيب
 barcharts: - title: Local network activity rate-ms: 500 # sampling rate, default = 1000 scale: 0 # number of digits after sample decimal point, default = 1 items: - label: UDP bytes in sample: nettop -J bytes_in -l 1 -m udp | awk '{sum += $4} END {print sum}' - label: UDP bytes out sample: nettop -J bytes_out -l 1 -m udp | awk '{sum += $4} END {print sum}' - label: TCP bytes in sample: nettop -J bytes_in -l 1 -m tcp | awk '{sum += $4} END {print sum}' - label: TCP bytes out sample: nettop -J bytes_out -l 1 -m tcp | awk '{sum += $4} END {print sum}' 

مقياس




ترتيب
 gauges: - title: Minute progress rate-ms: 500 # sampling rate, default = 1000 scale: 2 # number of digits after sample decimal point, default = 1 percent-only: false # toggle display of the current value, default = false color: 178 # 8-bit color number, default one is chosen from a pre-defined palette cur: sample: date +%S # sample script for current value max: sample: echo 60 # sample script for max value min: sample: echo 0 # sample script for min value - title: Year progress cur: sample: date +%j max: sample: echo 365 min: sample: echo 0 

النص




ترتيب
 textboxes: - title: Local weather rate-ms: 10000 # sampling rate, default = 1000 sample: curl wttr.in?0ATQF border: false # border around the item, default = true color: 178 # 8-bit color number, default is white - title: Docker containers stats rate-ms: 500 sample: docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.PIDs}}" 

Asciibox




ترتيب
 asciiboxes: - title: UTC time rate-ms: 500 # sampling rate, default = 1000 font: 3d # font type, default = 2d border: false # border around the item, default = true color: 43 # 8-bit color number, default is white sample: env TZ=UTC date +%r 

وظائف إضافية


مشغلات


تسمح لك المشغلات بتشغيل بعض الإجراءات الإضافية إذا كانت القيمة المقاسة مطابقة للشرط المحدد. كل من الشرط ورد الفعل هما أيضًا أوامر shell يتم فيها توفير متغيرات $label و $cur و $prev . بادئ ذي بدء ، تم تصميم المشغلات للتنبيه (يتم تضمين الإشعارات الصوتية والمرئية) ، ولكن باستخدام خيار البرنامج النصي الخاص بك للرد على إطلاق المشغل ، يمكنك تخصيص إجراءه كما تريد (على سبيل المثال ، إرسال إشعار إلى هاتفك باستخدام Pushover )


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


 runcharts: - title: SEARCH ENGINE RESPONSE TIME (sec) rate-ms: 200 items: - label: GOOGLE sample: curl -o /dev/null -s -w '%{time_total}' https://www.google.com - label: YAHOO sample: curl -o /dev/null -s -w '%{time_total}' https://search.yahoo.com triggers: - title: Latency threshold exceeded condition: echo "$prev < 0.3 && $cur > 0.3" |bc -l #  "1"  TRUE actions: terminal-bell: true # default = false sound: true # NASA quindar tone, default = false visual: true # default = false script: 'say alert: ${label} latency exceeded ${cur} second' 

قذيفة التفاعلية


إذا كنت بحاجة إلى إدخال shell shell التفاعلي قبل البدء في أخذ العينات (للاتصال لمرة واحدة بقاعدة البيانات ، وتسجيل الدخول إلى SSH ، والاتصال بـ JMX ، وما إلى ذلك) ، يمكنك تحديد برنامج init script سيتم تنفيذه مرة واحدة عند بدء التشغيل. مثال على الاتصال والاستقصاء mongoDB:


 textboxes: - title: MongoDB polling rate-ms: 500 init: mongo --quiet --host=localhost test #    sample: Date.now(); #    mongo shell transform: echo result = $sample #         

بالإضافة إلى ذلك ، هناك دعم لوضع PTY والبرامج النصية متعددة الخطوات .


المتغيرات


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


في الممارسة العملية


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


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




على كل ما أستخدمه بنفسي ، قمت بإعداد مجموعة من "الوصفات" - قم بتكوين تكوينات يمكنك نسخها وبدء التخصيص على الفور لمهامك


  • اتصالات قاعدة البيانات: MySQL ، PostgreSQL ، MongoDB ، Neo4J
  • كافكا
  • عامل ميناء
  • SSH
  • JMX

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


هذا كل شيء ، هابر. سأكون سعيدا إذا كان شخص ما سيكون مفيدا.

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


All Articles