غروب شمس Lightstep وتحدي الهجرة
تعتبر عملية إنهاء خدمة Lightstep وتحويل البنية التحتية للرصد إلى منصة جديدة تحديًا كبيرًا للفرق التي بنت بنية رصدها حولها. في زالاندو، واجهنا هذا التحدي عند الانتقال إلى Dash0، مورد التелеметري الجديد القائم على PromQL. يتطلب هذا التحول تحويل آلاف الاستفسارات التليمترية واللوحات والتنبيهات إلى خلفية جديدة.
المهمة واضحة ولكنها تحديية: إعادة كتابة استفسارات لغة الاستفسار الموحدة (UQL) إلى PromQL. القيام بذلك يدوياً بطيء ومؤثر بالأخطاء. حتى مع استخدام نماذج اللغة الكبيرة (LLMs)، تكون الترجمات غير متوقعة وتنتج في كثير من الأحيان أخطاء دقيقة تؤثر على تنبيهات الإنتاج. عند التعامل مع آلاف الاستفسارات التي تراقب الأنظمة الحرجة، تحتاج إلى آليّة تنتج نتائج صحيحة ومتماسكة.
للحصول على حل لهذه المشكلة، تم إنشاء مترجم جاهز للإنتاج يقوم بتحويل استفسارات UQL من Lightstep إلى PromQL. يتمثل الأداة في لغة Go وهي مصممة للاستخدام بطريقتين: كمكتبة (SDK) لترجمة الاستفسارات في رمزك الخاص، وخادم HTTP مع واجهة مستخدم ويب لترجمة تفاعلية لحظية.
يقوم المترجم بتنفيذ خط أنابيب تحليل كامل: tokenizer يستخرج رموز الاستفسارات UQL، محلل ينشيء شجرة بنائية مجردة (AST)، محسن يطبق عمليات تحويل لتسهيل هيكل الاستفسار، وأخيراً يولد المترجم خرج PromQL نظيف.
يُمكن الوصول إلى مشروع المترجم على github.com/zalando/lightstep-uql-to-promql-translator.
يمكن تشغيل خادم HTTP ببساطة، حيث يوفر واجهة مستخدم ويب للمساعدة في الترجمة التفاعلية وAPI REST للآليّة.
أولاً، قم بالتهيئة لأنواع المetrics الخاصة بك في cmd/main.go.
ثم ابدأ الخادم باستخدام الأمر go run cmd/main.go. ستكون واجهة المستخدم الويب متاحة على http://localhost:8080، حيث يمكنك لصق استفسارات UQL ومشاهدة ترجمة PromQL على الفور، مع رسائل خطأ مفصّلة في حال وجود شيء khاطئ.
بالنسبة للوصول البرمجي، يمكن استخدام API REST عن طريق الأمر curl -X POST http://localhost:8080/api/translate -d '{"query": "metric http_requests_total | rate 5m"}'.
من أجل دمج منطق الترجمة مباشرة في أدواتك أو انابيب CI، يمكن استخدام SDK.
فريق التحرير
مساهم في اختيار المواد وترجمتها وتحريرها للقارئ العربي.