عن المشروع
Tero Edge هو وكيل قياس عن بعد خفيف الوزن وعالي الأداء مكتوب بلغة Zig يطبق تصفية قائمة على السياسات (DROP/KEEP) على بيانات القياس عن بعد قبل وصولها إلى وجهتها. وهو مصمم للعمل جنبًا إلى جنب مع OpenTelemetry Collector، وليس لاستبداله، مما يوفر بديلاً مركزًا لفرض السياسات.
يتضمن المشروع عدة توزيعات مُعدة مسبقًا (نقاط دخول) لحالات استخدام مختلفة:
- **التوزيع الكامل**: يتعامل مع كل من إدخال Datadog وOTLP للسجلات والمقاييس.
- **توزيع Datadog**: يركز على نقاط نهاية السجلات والمقاييس الخاصة بـ Datadog.
- **توزيع OTLP**: يركز على إدخال سجلات OpenTelemetry Protocol.
- **توزيع Prometheus**: يعمل كوكيل جانبي لجمع مقاييس Prometheus مع تصفية متدفقة.
- **توزيع Lambda**: امتداد AWS Lambda لمعالجة قياس عن بعد Datadog.
- **Edge Tail**: أداة تتبع ملفات/تدفقات لنسخ السجلات الموجهة سطريًا مع استئناف محدد بنقاط تفتيش.
تشمل الميزات الرئيسية:
- تصفية قائمة على السياسات (DROP/KEEP) على السجلات والمقاييس
- تحميل السياسات بشكل غير متزامن (يبدأ الخادم فورًا بينما تُحمَّل السياسات في الخلفية)
- سلوك الفشل المفتوح (تمر الأخطاء بالبيانات دون تغيير)
- تحديثات سياسات بدون أقفال عبر لقطات ذرية
- إيقاف تشغيل سلس مع معالجة الإشارات
- معالج SIGSEGV لتشخيص الأعطال
- معالجة استجابات متدفقة لـ Prometheus (ذاكرة محدودة)
- تمرير بدون نسخ للمقاييس التي تجتاز فحوصات السياسات
- حدود قابلة للتكوين لكل عملية جمع
- دعم موفري السياسات من الملفات وHTTP
- نقطة نهاية مقاييس Prometheus على `/_edge/metrics`
- تصميم موجه للبيانات لتماسك ذاكرة التخزين المؤقت
- هيكل حزم معياري مع تبعيات صريحة
## هيكل المستودع
يُنظَّم الكود المصدري في حزم معيارية:
- `core/` - عناصر وقت التشغيل الأساسية (الحدود، شريحة الاتصال، تجمع الساحة، الإدخال/الإخراج)
- `frontend/` - HTTP الوارد (واجهات stdio وhttpz)
- `service/` - التوجيه وتخطيط الطلبات لكل إشارة
- `signals/` - أنواع سجلات البروتوكول (Datadog، OTLP، Prometheus)
- `pipeline/` - التأطير، وحدات الترميز، وخط أنابيب السجلات المتدفق
- `runtime/` - دورة حياة العملية، التوزيعات، المقاييس
- `tail/` - تتبع الملفات والإدخال القياسي
- `config/` - تحليل التكوين
- `lambda/` - دعم امتداد AWS Lambda
- `zonfig/` - تكوين وقت الترجمة مع تجاوزات متغيرات البيئة
## البناء والتشغيل
ابنِ جميع الأهداف باستخدام `zig build`. شغّل الاختبارات باستخدام `zig build test`. ابنِ توزيعات محددة باستخدام `zig build edge` أو `zig build datadog` أو `zig build otlp` أو `zig build prometheus` أو `zig build tail` أو `zig build lambda`.
تتوفر ملفات ثنائية مبنية مسبقًا لـ Linux x86_64 وLinux ARM64 وmacOS ARM64. تتوفر صور Docker من GitHub Container Registry.
## التكوين
يتم التكوين عبر ملف JSON. تشمل الإعدادات الرئيسية:
- `listen_address` / `listen_port` - عنوان ربط الخادم
- `upstream_url` - وجهة المنبع الافتراضية
- `logs_url` / `metrics_url` - عناوين URL اختيارية محددة للمنبع
- `workspace_id` - معرف مساحة العمل لمزامنة السياسات
- `log_level` - مستوى التسجيل
- `policy_providers` - قائمة مصادر السياسات (ملف/http)
- `max_body_size` - حدود جسم الطلب/الاستجابة
يمكن لمتغيرات البيئة مثل `TERO_LOG_LEVEL` تجاوز الإعدادات.
## التحجيم والأداء
يتضمن README جداول تحجيم توضح استخدام وحدة المعالجة المركزية والذاكرة لأحجام حمولات ومعدلات طلبات مختلفة. تُحدَّد الذاكرة بشكل أساسي بعدد المرسلين المتزامنين، وليس بمعدل الطلبات. يتوسع استخدام وحدة المعالجة المركزية مع عدد السجلات بدلاً من عدد الطلبات. تأثير عدد السياسات ضئيل على الأداء.
## مقاييس Prometheus
تُعرَض مقاييس وقت التشغيل على `GET /_edge/metrics` بتنسيق Prometheus النصي. جميع التسميات هي تعدادات محدودة لمنع انفجار السلاسل. تغطي المقاييس الطلبات والاستجابات والاتصالات ومحاولات المنبع وتقييمات السياسات ومعلومات البناء.
## مبادئ التصميم
1. **التصميم الموجه للبيانات** - التحسين لتماسك ذاكرة التخزين المؤقت وأنماط الوصول إلى الذاكرة
2. **قراءات بدون أقفال** - يستخدم تقييم السياسات مؤشرات لقطات ذرية لقراءات بدون تنازع
3. **الفشل المفتوح** - تؤدي الأخطاء في تقييم السياسات إلى تمرير البيانات، وليس إسقاطها
4. **التركيب المعياري** - يمكن استخدام الحزم بشكل مستقل أو تركيبها معًا
5. **التبعيات الصريحة** - تعلن كل حزمة عن تبعياتها عبر الاستيرادات
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.