بالنسبة للشركات التي تحتاج إلى إدارة البيانات والتطبيقات على أكثر من خادم ، فإن البنية التحتية لها أهمية قصوى.
بالنسبة لكل شركة ، يتمثل جزء كبير من سير العمل في مراقبة عُقد البنية التحتية ، خاصة في حالة عدم وجود وصول مباشر لحل المشكلات الناشئة. علاوة على ذلك ، يمكن أن يكون الاستخدام المكثف لبعض الموارد مؤشرًا على فشل البنية التحتية والحمل الزائد. ومع ذلك ، يمكن استخدام المراقبة ليس فقط للوقاية ، ولكن أيضًا لتقييم النتائج المحتملة لاستخدام البرامج الجديدة في الإنتاج. هناك العديد من الحلول الجاهزة للاستخدام في السوق حاليًا لتتبع استهلاك الموارد ، لكنها مع ذلك تطرح مشكلتين رئيسيتين: التكلفة العالية للتثبيت والتكوين ومشكلات الأمان المرتبطة ببرامج الطرف الثالث.
المسألة الأولى هي مسألة السعر: يمكن أن تتراوح التكلفة من عشرة يورو (أسعار المستهلك) إلى عدة آلاف (أسعار الشركات) شهريًا ، اعتمادًا على عدد المضيفين المراد رصدهم. على سبيل المثال ، لنفترض أنني أريد مراقبة ثلاث عقد لمدة عام واحد. بسعر 10 يورو شهريًا ، سأقوم بإنفاق 120 يورو ، بينما سيتعين على شركة صغيرة أن تتخلى عن عشرة إلى عشرين ألفًا ، وهو قرار سيتحول إلى قرار لا يمكن الدفاع عنه ماليًا وسيؤدي ببساطة إلى تقويض الميزانية بأكملها.
المشكلة الثانية هي برامج الطرف الثالث. بالنظر إلى أنه من أجل التحليل ، يجب معالجة بيانات المستخدم - سواء كان فردًا أو شركة - بواسطة طرف ثالث ، فإن السؤال الذي يطرح نفسه هو: كيف يقوم الطرف الثالث بجمع البيانات وتقديمها إلى المستخدم؟ عادة ، لهذا الغرض ، يتم تثبيت تطبيق خاص على العقدة ، يتم من خلاله إجراء المراقبة ، ولكن غالبًا ما يكون لهذه التطبيقات وقت لتصبح قديمة أو يتضح أنها غير متوافقة مع نظام تشغيل العميل. تلقي خبرة الباحثين في مجال أمن المعلومات الضوء على مشاكل العمل مع " البرمجيات الاحتكارية ". هل تثق في مثل هذه البرامج؟ أنا لا.
لدي العقد الخاصة بي لكل من Tor وبعض العملات المشفرةلذلك أفضل البدائل المجانية والمفتوحة المصدر والقابلة للتخصيص بسهولة للمراقبة. في هذا المنشور ، سنلقي نظرة على ثلاث أدوات من هذا القبيل: Grafana و InfluxBD و CollectD.
المراقبة
لتحليل كل مقياس من بنيتنا التحتية بشكل فعال ، نحتاج إلى تطبيق يمكنه التقاط الإحصائيات من الأجهزة التي تهمنا. في هذا الصدد ، يأتي برنامج CollectD للإنقاذ : يقوم هذا البرنامج الخفي بتجميع ("يجمع" ، وبالتالي هذا الاسم) جميع المعلمات التي يمكن تخزينها على القرص أو نقلها عبر الشبكة.
سيتم بعد ذلك نقل البيانات إلى مثيل InfluxDB : هذه قاعدة بيانات سلاسل زمنية (TSBD) تربط البيانات بالوقت (الطابع الزمني المشفر بنظام UNIX) الذي استقبله الخادم عنده. وبالتالي ، فإن البيانات المرسلة بواسطة CollectD ستصل على شكل تسلسل للأحداث.
أخيرًا ، سنستخدم Grafana: سيتصل هذا البرنامج بـ InfluxDB ويعرض البيانات على لوحات معلومات ملونة سهلة الاستخدام. بفضل جميع أنواع الرسوم البيانية والرسوم البيانية ، سنتمكن من تتبع بيانات وحدة المعالجة المركزية وذاكرة الوصول العشوائي وما إلى ذلك في الوقت الفعلي.
InfluxDB
لنبدأ بـ InfluxDB ، TSBD مجاني لتخزين البيانات كسلسلة من الأحداث. ستكون قاعدة البيانات التي تم تطويرها من قبل Go في قلب "نظام" المراقبة لدينا.
عندما تصل البيانات ، يتم ربط تسمية UNIX بها افتراضيًا . مرونة هذا النهج تحرر المستخدم من الاضطرار إلى تخزين "الوقت" المتغير ، والذي يكون معقدًا إلى حد ما. لنتخيل أن لدينا عدة أجهزة موجودة في قارات مختلفة. كيف نتعامل مع متغير "الوقت"؟ هل سنقوم بربط جميع البيانات بتوقيت غرينتش، أم نعطي كل عقدة منطقتها الزمنية الخاصة؟ إذا تم تخزين البيانات في مناطق زمنية مختلفة ، كيف يمكننا عرضها بشكل صحيح على الرسوم البيانية؟ كما ترى ، تظهر المشاكل واحدة تلو الأخرى.
نظرًا لأن InfluxDB يتتبع الوقت ويقوم تلقائيًا بوضع علامات على كل وصول للبيانات ، يمكنه كتابة البيانات بشكل متزامن إلى قاعدة بيانات محددة. هذا هو السبب في تقديم InfluxDB كجدول زمني: كتابة البيانات لا تؤثر على أداء قاعدة البيانات (والتي تحدث أحيانًا مع MySQL) ، لأن الكتابة هي مجرد إضافة حدث معين إلى الجدول الزمني. لذلك ، يأتي اسم البرنامج من تصور الوقت على أنه "تيار" لا نهاية له وغير محدود.
التثبيت والتكوين
ميزة أخرى لـ InfluxDB هي سهولة التثبيت والتوثيق الشامل المقدم من مجتمع المشروع ، والذي يدعمه على نطاق واسع . يحتوي InfluxDB على نوعين من الواجهة: سطر الأوامر (أداة مفيدة للمطورين ، ولكن معدة بشكل سيئ للعمل مع كميات كبيرة من البيانات) وواجهة برمجة تطبيقات HTTP للتفاعل المباشر مع قاعدة البيانات.
يمكنك تنزيل InfluxDB ليس فقط من الموقع الرسمي ، ولكن أيضًا من خلال نظام إدارة الحزم (سنشرح ذلك من خلال دبيان). بالإضافة إلى ذلك ، يوصى بالتحقق من الحزم عبر GPG قبل التثبيت ، لذلك أدناه نقوم باستيراد مفاتيح حزمة InfluxDB:
root@node#~: curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
root@node#~: source /etc/os-release
root@node#~: echo "deb https://repos.influxdata.com/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
أخيرًا ، سنقوم بتحديث وتثبيت InfluxDB:
root@node#~: apt-get update
root@node#~: apt-get install influxdb
للتشغيل سوف نستخدم
systemctl:
root@node#~: service start influxdb
لمنع أي شخص لديه نوايا شائنة من تسجيل الدخول إلينا ، سننشئ مستخدمًا يسمى "المسؤول". يمكنك التفاعل مع قاعدة البيانات من خلال لغة الاستعلام مثل InfluxDB SQL " InfluxQL ". لإنشاء مستخدم جديد ، سنقوم بتشغيل طلب
create user.
root@node#~: influx
Connected to http://localhost:8086
InfluxDB shell version: x.y.z
>
> CREATE USER admin WITH PASSWORD 'MYPASSISCOOL' WITH ALL PRIVILEGES
في نفس واجهة CLI ، سننشئ "مقاييس" قاعدة بيانات ، حيث سنخزن مقاييسنا.
> CREATE DATABASE metrics
بعد ذلك ، سنقوم بتكوين InfluxBD (
/etc/influxdb/influxdb.conf) لفتح الواجهة على المنفذ 24589 (UDP) مع اتصال مباشر بقاعدة بيانات "المقاييس" لدعم CollectD. سنحتاج أيضًا إلى تنزيل الملف types.dbووضعه في العنوان /usr/share/collectd/(أو في أي مجلد آخر) لتحديد البيانات التي ترسلها CollectD بتنسيقها الأصلي بشكل صحيح .
root@node#~: nano /etc/influxdb/influxdb.conf
[Collectd]
enabled = true
bind-address = ":24589"
database = "metrics"
typesdb = "/usr/share/collectd/types.db"
يمكنك قراءة المزيد عن CollectD في التكوين في الوثائق .
اجمع د
ستعمل CollectD في البنية التحتية للمراقبة لدينا كمجمع بيانات يعمل على تبسيط نقل البيانات إلى InfluxDB. بحكم التعريف ، تجمع CollectD المقاييس من وحدة المعالجة المركزية وذاكرة الوصول العشوائي ومحركات الأقراص الثابتة وواجهات الشبكة والعمليات ... إن إمكانات هذا البرنامج لا حدود لها ، خاصةً عندما تفكر في مجموعة كبيرة من المكونات الإضافية المتاحة بالفعل ، بالإضافة إلى مجموعة من المكونات المخططة .
كما ترى ، يعد تثبيت CollectD أمرًا سهلاً:
root@node#~: apt-get install collectd collectd-utils
دعنا نوضح كيف تعمل CollectD بمثال مبسط. لنفترض أنني أريد معرفة عدد العمليات على عقدي. للتحقق من ذلك ، سيقوم CollectD بإجراء استدعاء API لمعرفة عدد العمليات لكل وحدة زمنية (5000 مللي ثانية حسب التعريف) ولا شيء أكثر من ذلك. بمجرد أن يتلقى المجمّع البيانات ، سينقلها إلى InfluxDB للتهيئة من خلال وحدة نمطية (تسمى "الشبكة") ، والتي سنحتاج إلى تكوينها.
افتح الملف باستخدام محررنا
/etc/collectd.conf، وانتقل إلى القسم Networkوقم بتحريره كما هو موضح أدناه. تأكد من تحديد عنوان IP حيث توجد واجهة InfluxDB ( INFLUXDB_IP).
root@node#~: nano /etc/collectd.conf
...
<Plugin network>
<Server "INFLUXDB_IP" "24589">
</Server>
ReportStats true
</Plugin>
...
أقترح تغيير اسم المضيف في ملف التكوين الذي تمت إعادة توجيهه إلى InfluxDB (في بنيتنا التحتية ، هذه قاعدة بيانات "مركزية" لأنها تقع على نفس العقدة). وبالتالي ، لن نتلقى بيانات غير ضرورية وسيختفي خطر استبدال البيانات من قبل العقد الأخرى.
جرافانا
رسم بياني واحد يساوي ألف صورة
بالنظر إلى الاقتباس المعاد صياغته ، فإن مراقبة مقاييس البنية التحتية في الوقت الفعلي من خلال الرسوم البيانية والجداول تسمح لنا بالتصرف بكفاءة وفي الوقت المناسب. سنستخدم Grafana لإنشاء وتخصيص لوحة القيادة للرسوم البيانية والجداول الخاصة بنا.
Grafana هي أداة مقاييس رسومية مجانية ، متوافقة مع مجموعة واسعة من قواعد البيانات (بما في ذلك InfluxDB) ، حيث يمكن للمستخدم إنشاء تنبيهات عندما تفي قطعة من البيانات بشرط معين. على سبيل المثال ، إذا كانت وحدة المعالجة المركزية لديك تبلغ ذروتها ، فقد تتلقى تنبيهًا في Slack و Mattermost والبريد الإلكتروني وما إلى ذلك. علاوة على ذلك ، قمت بتكوين تنبيهاتي لمراقبة كل حالة بنشاط عندما "يدخل" شخص ما بنيتي التحتية.
لا يتطلب Grafana أي إعدادات خاصة: كما أشرنا سابقًا ، يقوم InfluxDB "بمسح" متغير "الوقت". التكامل بحد ذاته بسيط للغاية: سنبدأ باستيراد المفتاح العام لإضافة الحزمة من موقع Grafana الرسمي (يعتمد ذلك على نظام التشغيل الخاص بك):
root@node#~: wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
root@node#~: echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
root@node#~: apt-get update && apt-get install grafana
ثم دعونا نجريها عبر systemctl:
root@node#~: systemctl start grafana-web
الآن عندما ننتقل إلى localhost: 3000 صفحة في المتصفح ، يجب أن نرى واجهة تسجيل الدخول إلى Grafana. بحكم التعريف، يمكن أن تذهب من خلال تسجيل الدخول المشرف وكلمة المرور المشرف (بعد اعتماد تسجيل الدخول الأولى ينصح لتغيير).
دعنا نذهب إلى قسم المصادر ونضيف قاعدة بيانات Influx الخاصة بنا هناك:
يمكنك الآن رؤية مستطيل أخضر صغير تحت تسمية لوحة معلومات جديدة. قم بتمرير المؤشر فوقها وحدد إضافة لوحة ثم رسم بياني:
يمكنك الآن رؤية رسم بياني ببيانات الاختبار. انقر فوق عنوان هذا الرسم البياني وانقر فوق تحرير. باستخدام Grafana ، يمكنك إنشاء استعلامات ذكية: لست بحاجة إلى معرفة كل حقل في قاعدة البيانات ، فستقدمها لك Grafana من قائمة المعلمات المناسبة للتحليل.
لم تكن كتابة الاستعلامات أسهل من أي وقت مضى: ما عليك سوى تحديد المقياس الذي تهتم به وانقر فوق "تحديث". أوصي أيضًا بفصل المقاييس حسب المضيف للمساعدة في عزل المشكلات. إذا كنت مهتمًا بأفكار أخرى للوحة المعلومات ، فيمكنك الاطلاع على موقع Grafana على الويب للحصول على جميع أنواع الأمثلة للإلهام.
لقد لاحظنا أن Grafana هي أداة قابلة للتوسيع للغاية ، وتتيح لنا مقارنة البيانات المختلفة جدًا مقارنة ببعضها البعض. لا يوجد مقياس واحد لا يمكن الحصول عليه ، لذا فإن إبداعك فقط يحدك. تتبع أجهزتك واحصل على نظرة عامة كاملة عن بنيتك التحتية في الوقت الفعلي!
