Brave هي مكتبة أدوات التتبع الموزعة. يقوم Brave عادةً باعتراض طلبات الإنتاج لجمع بيانات التوقيت وربط سياقات التتبع ونشرها. في حين يتم عادةً إرسال بيانات التتبع إلى خادم Zipkin، إلا أن المكونات الإضافية التابعة لجهات خارجية متاحة لإرسالها إلى خدمات بديلة مثل Amazon X-Ray.
يتضمن هذا المستودع مكتبات Java خالية من التبعية وأدوات للمكونات الشائعة المستخدمة في خدمات الإنتاج. على سبيل المثال، يتضمن ذلك عوامل تصفية التتبع لـ Servlet وارتباط السجل لـ Apache Log4J.
يمكنك إلقاء نظرة على مشروعنا النموذجي لمعرفة كيفية تتبع تطبيق ويب بسيط.
تعمل مكتبة التتبع الخالية من التبعية في Brave ضد JRE6+. هذه هي واجهة برمجة التطبيقات الأساسية التي تستخدمها الأجهزة لعمليات التوقيت وإضافة العلامات التي تصفها. تتضمن هذه المكتبة أيضًا تعليمات برمجية تقوم بتوزيع رؤوس X-B3-TraceId
.
لن يكتب معظم المستخدمين رمز التتبع مباشرةً. وبدلاً من ذلك، فإنهم يعيدون استخدام الأدوات التي كتبها الآخرون. تحقق من أجهزتنا وقائمة Zipkin قبل استخدام القائمة الخاصة بك. مكتبات التتبع الشائعة مثل JDBC وServlet وSpring موجودة بالفعل. يتم اختبار الأجهزة المكتوبة هنا وقياسها.
إذا كنت تحاول تتبع التطبيقات القديمة، فقد تكون مهتمًا بتكوين Spring XML. يتيح لك هذا إعداد التتبع دون أي تعليمات برمجية مخصصة.
قد ترغب في وضع معرفات التتبع في ملفات السجل الخاصة بك، أو تغيير السلوك المحلي لمؤشر الترابط. انظر إلى مكتبات السياق الخاصة بنا للتكامل مع أدوات مثل SLF4J.
تتطابق جميع مكتبات Brave مع الحد الأدنى من إصدار Java لما يتم تتبعه أو دمجه معه، ولا تضيف أي تبعيات لجهة خارجية. الهدف هو عدم التأثير على اختيارات مشاريعك، أو إخضاع مشروعك لقرارات التبعية التي يتخذها الآخرون.
على سبيل المثال، حتى مع تضمين مكتبة التقارير الأساسية أو zipkin-sender-urlconnection، فإن Brave لا يتضمن بشكل عابر أي تبعية json أو تسجيل أو protobuf أو توفير. وهذا يعني عدم القلق إذا اختار تطبيقك إصدارًا محددًا من SLF4J أو Gson أو Guava. علاوة على ذلك، فإن شجرة التبعية بأكملها بما في ذلك التقارير الأساسية بتنسيق json أو thrift أو protobuf أقل من 512 كيلو بايت من الجرار.
يوجد إصدار Java الإصدار 1.6، والذي يسمح بإصدارات JRE الأقدم وأوقات تشغيل Android الأقدم، ولكنه قد يحد من بعض التطبيقات. على سبيل المثال، يعمل Servlet 2.5 مع Java 1.5، ولكن نظرًا لكون Brave 1.6، فلن تتمكن من تتبع تطبيقات Servlet 2.5 حتى تستخدم JRE 1.6 على الأقل.
تقوم جميع عمليات التكامل بتعيين المكتبة المرتبطة بها على النطاق "المقدم". وهذا يضمن عدم تداخل Brave مع الإصدارات التي تختارها.
يتم تحديث بعض المكتبات بشكل متكرر مما يؤدي إلى انجراف واجهة برمجة التطبيقات. وفي بعض الحالات، نقوم باختبار الإصدارات للحد من تأثير ذلك. على سبيل المثال، نقوم باختبار gRPC وKafka مقابل إصدارات مكتبات متعددة.
يتم نشر كافة القطع الأثرية على معرف المجموعة "io.zipkin.brave". نحن نستخدم نسخة إصدار مشتركة لجميع المكونات.
يتم تحميل اللقطات إلى Sonatype والتي تتزامن مع Maven Central
يتم تحميل اللقطات إلى Sonatype بعد الالتزام بإتقانها.
عند استخدام مكونات Brave متعددة، ستحتاج إلى محاذاة الإصدارات في مكان واحد. يتيح لك هذا إمكانية الترقية بشكل أكثر أمانًا، مع تقليل القلق بشأن التعارضات.
يمكنك استخدام BOM (قائمة المواد) الخاصة بأجهزة Maven الخاصة بنا للقيام بذلك:
السابق. في قسم التبعيات، قم باستيراد BOM مثل هذا:
< dependencyManagement >
< dependencies >
< dependency >
< groupId >io.zipkin.brave</ groupId >
< artifactId >brave-bom</ artifactId >
< version >${brave.version}</ version >
< type >pom</ type >
< scope >import</ scope >
</ dependency >
</ dependencies >
</ dependencyManagement >
الآن، يمكنك ترك الإصدار عند اختيار أي أداة مدعومة. أيضًا، أي استخدام غير مباشر سيكون له إصدارات متوافقة:
< dependency >
< groupId >io.zipkin.brave</ groupId >
< artifactId >brave-instrumentation-okhttp3</ artifactId >
</ dependency >
مع تطبيق ما سبق، يمكنك استخدام الخاصية brave.version
لتجاوز الإصدارات التابعة بشكل متماسك. هذا هو الأكثر شيوعًا لاختبار ميزة جديدة أو إصلاح.
ملاحظة: إذا قمت بتجاوز إصدار ما، فتأكد دائمًا من أن الإصدار الخاص بك صالح (يساوي أو أحدث) للإصدار الذي تقوم بتحديثه. هذا سوف يتجنب الصراعات الطبقية.