وضع NetFlow رخيصة وغاضب

TL ؛ DR : قام المؤلف بتجميع جامع NetFlow / sFlow من GoFlow و Kafka و ClickHouse و Grafana وعكاز على Go.


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


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


هنا ليست سوى أمثلة قليلة من هذه المزح:


  • النسخ الاحتياطي خارج النافذة الموصوفة في 40 تيارات ؛
  • أخطاء التكوين إرسال تطبيق في أحد DC إلى ذاكرة التخزين المؤقت من DC آخر ؛
  • أسئلة التطبيق في الرف التالي على نفس ذاكرة التخزين المؤقت "أعطني هذا الكائن نصف ميغا بايت من ذاكرة التخزين المؤقت" مائتي مرة في الثانية.

ستعطي عدادات SNMP من منافذ التبديل أو VMs فقط فهمًا تقريبيًا لما يحدث ، لكني أريد الدقة وسرعة تحليل المشكلة. تأتي بروتوكولات NetFlow / IPFIX و sFlow لإنقاذها ، والتي تولد معلومات مرورية غنية مباشرة من معدات الشبكة. يبقى وضعها في مكان ما ومعالجتها بطريقة أو بأخرى.


من بين جامعي NetFlow المتاحين ، تم النظر في ما يلي:


  • أدوات التدفق - لم يعجبني التخزين في الملفات (استغرق الأمر وقتًا طويلاً لإجراء التحديدات ، وخاصة تلك التشغيلية أثناء رد الفعل على الحادث) أو MySQL (وجود مليارات الصفوف في الجدول يبدو وكأنه فكرة قاتمة جدًا) ؛
  • Elasticsearch + Logstash + Kibana هي مجموعة كثيفة الاستخدام للموارد ، تصل إلى 6 نوى من وحدة المعالجة المركزية القديمة 2.2 غيغاهرتز لتلقي 5000 تدفق في الثانية. ومع ذلك ، يتيح لك Kibana لصق أي نوع من الفلاتر في المتصفح ، وهو أمر قيّم ؛
  • vflow - لم يعجبه تنسيق الإخراج (JSON ، الذي لا يمكن إضافته إلى نفس Elasticsearch بدون تعديل) ؛
  • الحلول المعبأة - لم يعجبها السعر المرتفع أو الفرق الصغير عن السعر المحدد.

وقد تم اختياره ووصفه في عرض Louis Poinsignon على RIPE 75 . المخطط العام لمجمع بسيط هو كما يلي:



GoFlow يوزع حزم NetFlow / sFlow ويضعها في كافكا محلية بتنسيق protobuf. يأخذ goflow2ch "المجرفة" المكتوبة ذاتياً رسائل من كافكا وينقلها إلى Clickhouse على دفعات لزيادة الإنتاجية. لا يعالج المخطط على الإطلاق قضية التوفر العالي ، ولكن لكل مكون هناك إما طرق خارجية منتظمة أو أكثر أو أقل بسيطة لتوفيره.


أظهرت الاختبارات أن تكاليف وحدة المعالجة المركزية للتحليل والحفاظ على نفس 5000 سلسلة في الثانية تشكل حوالي ربع نواة وحدة المعالجة المركزية ، ومساحة القرص المستهلكة في المتوسط ​​11-14 بايت لكل دفق مقطوع قليلاً.


لعرض المعلومات ، يتم استخدام واجهة مستخدم الويب لـ ClickHouse تسمى Tabix أو المكون الإضافي لـ Grafana .


مزايا المخطط:


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

السلبيات لائقة أيضًا:


  • لطرح الأسئلة ، تحتاج إلى معرفة SQL جيدًا ولهجة ClickHouse ؛ لا توجد تقارير ورسوم بيانية جاهزة ؛
  • العديد من الأجزاء المتحركة الجديدة في شكل كافكا ، Zookeeper و ClickHouse. الأولين في جاوة ، والتي يمكن أن تسبب الرفض الديني. بالنسبة لي شخصياً ، لم تكن هذه مشكلة ، حيث تم استخدام كل هذا بالفعل بطريقة ما في المنظمة ؛
  • يجب أن تكتب رمز. إما "مجرفة" تنقل البيانات من Kafka إلى ClickHouse ، أو محول للتسجيل مباشرة من GoFlow.

التقى الميزات:


  • تأكد من ضبط التدوير وفقًا لحجم البيانات في Kafka و ClickHouse ، ثم تحقق من أنه يعمل حقًا. في Kafka هناك حد لحجم قسم السجل ، وفي ClickHouse - التقسيم بواسطة مفتاح عشوائي. قسم جديد كل ساعة وإزالة الأقسام غير الضرورية كل 10 دقائق يعمل بشكل جيد للمراقبة التشغيلية ويتم عمل برنامج نصي من بضعة أسطر فقط ؛
  • تستفيد "المجرفة" من استخدام مجموعات المستهلكين ، مما يسمح لك بإضافة المزيد من "المجارف" لتحمل الحجم والخطأ ؛
  • تسمح لك Kafka بعدم فقدان البيانات عند تعطل "المجرفة" أو ClickHouse (على سبيل المثال ، من طلب كثيف و / أو موارد محدودة بشكل غير صحيح) ، ولكن من الأفضل بالطبع تكوين قاعدة البيانات بعناية ؛
  • إذا كنت ستقوم بتجميع sFlow ، فتذكر أن بعض المفاتيح بشكل افتراضي تغير معدل أخذ العينات من الحزم أثناء التنقل ، ويتم الإشارة إليه لكل دفق.

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

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


All Articles