مراقبة السحابة باستخدام Datadog في Apache APISIX

API7.ai

November 12, 2021

Ecosystem

صورة الغلاف

مع زيادة تعقيد منتجات تكنولوجيا المعلومات وتطوير التطبيقات الموجهة للمستهلكين، أصبحت المراقبة جزءًا لا يتجزأ من أي تسليم للتطبيقات. بالإضافة إلى ذلك، لتلبية الطلب اللامتناهي لدورات التحديث السريع مع ضمان الاستقرار، والأداء المبسط، والحفاظ على توازن مثالي بين مؤشرات مستوى الخدمة (SLI) وأهداف مستوى الخدمة (SLO) واتفاقية مستوى الخدمة (SLA) - فإن المراقبة الفعالة مهمة للغاية.

كمنتج لإدارة واجهات برمجة التطبيقات السحابية، يقوم Apache APISIX بفصل مخاوف المراقبة عن التطبيق، مما يمنح المطورين ميزة بناء التطبيقات مع التركيز فقط على منطق الأعمال بينما يتولى Apache APISIX مسؤولية المراقبة لمنصة اختيارهم.

أطلق Apache APISIX مؤخرًا مكونًا إضافيًا جديدًا: APISIX-Datadog، لتوفير تكامل أعمق مع Datadog. تقدم هذه المقالة مكون APISIX-Datadog الإضافي وإمكانياته.

كيف يعمل مكون APISIX-Datadog الإضافي

هندسة مكون APISIX-Datadog الإضافي

يقوم مكون APISIX-Datadog الإضافي بدفع مقاييسه المخصصة إلى خادم DogStatsD، والذي يأتي مع وكيل Datadog عبر اتصال UDP. يعتبر DogStatsD بشكل أساسي تنفيذًا لبروتوكول StatsD. يقوم بجمع المقاييس المخصصة لوكيل Apache APISIX، وتجميعها في نقطة بيانات واحدة وإرسالها إلى خادم Datadog المكون. لمعرفة المزيد عن DogStatsD، يرجى زيارة توثيق DogStatsD.

عند تفعيل APISIX-Datadog، يقوم وكيل Apache APISIX بتصدير المقاييس التالية إلى خادم DogStatsD لكل دورة استجابة طلب:

اسم المقياسنوع StatsDالوصف
عداد الطلباتCounterعدد الطلبات المستلمة.
زمن الطلبHistogramالوقت المستغرق لمعالجة الطلب (بالميلي ثانية).
زمن الخادمHistogramالوقت المستغرق منذ توجيه الطلب إلى الخادم حتى استلام الاستجابة (بالميلي ثانية).
زمن APISIXHistogramالوقت المستغرق من قبل وكيل APISIX لمعالجة الطلب (بالميلي ثانية).
حجم الإدخالTimerحجم جسم الطلب بالبايت.
حجم الإخراجTimerحجم جسم الاستجابة بالبايت.

سيتم إرسال المقاييس إلى وكيل DogStatsD مع العلامات التالية. إذا لم يكن هناك قيمة مناسبة لأي علامة معينة، سيتم ببساطة حذف العلامة.

اسم المقياسالوصف
route_nameالاسم المحدد في تعريف مخطط المسار. إذا لم يكن موجودًا، سيتم الرجوع إلى قيمة معرف المسار.
service_idإذا تم إنشاء مسار مع تجريد الخدمة، سيتم استخدام معرف الخدمة المحدد.
consumerإذا كان للمسار مستهلك مرتبط، سيتم إضافة اسم المستخدم الخاص بالمستهلك كعلامة.
balancer_ipIP الخاص بمحمل الخادم الذي قام بمعالجة الطلب الحالي.
response_statusرمز حالة استجابة HTTP.
schemeالمخطط المستخدم لإنشاء الطلبات، مثل HTTP، gRPC، gRPCs إلخ.

يحتفظ المكون الإضافي بذاكرة مؤقتة مع مؤقت. عندما ينتهي المؤقت، يقوم مكون APISIX-Datadog الإضافي بإرسال المقاييس المخزنة كدفعة إلى خادم dogstatsd المحلي. هذا النهج أقل استهلاكًا للموارد (على الرغم من أنه قد يكون غير مهم حيث أن مقابس UDP خفيفة الوزن للغاية) عن طريق إعادة استخدام نفس المقبس UDP ولا يثقل كاهل الشبكة طوال الوقت حيث يمكن تكوين المؤقت.

خطوات تشغيل وكيل Datadog

  1. إذا كنت تستخدم بالفعل Datadog داخل بنيتك التحتية، يجب أن يكون لديك وكيل datadog مثبت في أنظمتك. قد يكون إما حاوية docker، أو pod، أو ثنائي لمدير الحزم المناسب. في هذه الحالة، أنت على ما يرام. فقط تأكد من أن المنفذ 8125/udp مسموح به عبر الجدار الناري (إن وجد) أي بشكل أكثر تحديدًا، يمكن لوكيل Apache APISIX الوصول إلى المنفذ 8125 لوكيل datadog. يمكنك تخطي هذا القسم الفرعي.

لمعرفة المزيد حول كيفية تثبيت وكيل datadog كامل، قم بزيارة هنا.

  1. إذا كنت جديدًا على Datadog
    1. أولاً قم بإنشاء حساب عن طريق زيارة www.datadoghq.com.
    2. قم بإنشاء مفتاح API. إنشاء مفتاح API
  2. يتطلب مكون APISIX-Datadog الإضافي فقط مكون dogstatsd من datadog/agent حيث يقوم المكون الإضافي بإرسال المقاييس بشكل غير متزامن إلى خادم dogstatsd باتباع بروتوكول statsd عبر مقبس UDP قياسي. لهذا السبب يوصي APISIX باستخدام صورة datadog/dogstatsd المستقلة بدلاً من استخدام الوكيل الكامل. إنها خفيفة الوزن للغاية (حوالي 11 ميجابايت فقط) مقارنة بحوالي 2.8 جيجابايت من صورة datadog/agent.

لتشغيلها كحاوية:

# سحب أحدث صورة
docker pull datadog/dogstatsd:latest
# تشغيل حاوية منفصلة
docker run -d --name dogstatsd-agent -e DD_API_KEY=<Your API Key from step 2> -p 8125:8125/udp  datadog/dogstatsd

إذا كنت تستخدم Kubernetes في بيئة الإنتاج الخاصة بك، يمكنك نشر dogstatsd كـ Daemonset أو كـ Multi-Container Pod بجانب وكيل Apache APISIX.

كيفية استخدام Datadog مع Apache APISIX

تفعيل مكون APISIX-Datadog الإضافي

التالي مثال على كيفية تفعيل مكون datadog الإضافي لمسار معين. نفترض أن وكيل dogstatsd الخاص بك يعمل بالفعل.

# تمكين المكون الإضافي لمسار معين
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "plugins": {
        "datadog": {}
    },
    "upstream": {
        "type": "roundrobin",
        "nodes": {
            "127.0.0.1:1980": 1
        }
    },
    "uri": "/hello"
}'

الآن أي طلبات إلى نقطة النهاية /hello ستولد المقاييس المذكورة أعلاه وترسلها إلى خادم DogStatsD المحلي لوكيل datadog.

التكوين المخصص

في التكوين الافتراضي، يتوقع المكون الإضافي أن تكون خدمة dogstatsd متاحة على 127.0.0.1:8125. إذا كنت ترغب في تحديث التكوين، يرجى تحديث بيانات وصف المكون الإضافي:

مخطط البيانات الوصفية

الاسمالنوعمطلوبالافتراضيالوصف
hostsstringاختياري"127.0.0.1"عنوان خادم DogStatsD
portintegerاختياري8125منفذ خادم DogStatsD
namespacestringاختياري"apisix"بادئة لجميع المقاييس المخصصة المرسلة من قبل وكيل APISIX. مفيد للعثور على الكيانات للرسم البياني للمقياس. على سبيل المثال (apisix.request.counter)
constant_tagsarrayاختياري["source
"]
علامات ثابتة مدمجة في المقاييس المولدة. مفيدة لتجميع المقاييس على إشارات معينة.

لمعرفة المزيد حول كيفية كتابة العلامات بشكل فعال، يرجى زيارة هنا

قم بإجراء طلب إلى نقطة النهاية /apisix/admin/plugin_metadata مع البيانات الوصفية المحدثة كما يلي:

curl http://127.0.0.1:9080/apisix/admin/plugin_metadata/datadog -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "host": "127.0.0.1",
    "port": 8125,
    "constant_tags": [
        "source:apisix",
        "service:custom"
    ],
    "namespace": "apisix"
}'

مخطط المكون الإضافي

بالمثل، هناك بعض السمات التي يمكن تعديلها أثناء تمكين المكون الإضافي.

الاسمالنوعمطلوبالافتراضيصالحالوصف
batch_max_sizeintegerاختياري5000[1,...]الحد الأقصى لحجم كل دفعة
inactive_timeoutintegerاختياري5[1,...]الحد الأقصى للعمر بالثواني عندما سيتم إرسال الذاكرة المؤقتة إذا كانت غير نشطة
buffer_durationintegerاختياري60[1,...]الحد الأقصى للعمر بالثواني لأقدم إدخال في دفعة قبل أن يجب معالجة الدفعة
max_retry_countintegerاختياري1[1,...]الحد الأقصى لعدد المحاولات إذا فشل إدخال واحد في الوصول إلى خادم dogstatsd

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

'{
...
"plugins": {
    "datadog": {
        "batch_max_size": 10
    }
}
... }'

إلغاء تفعيل مكون APISIX-Datadog الإضافي

الآن، لإلغاء تفعيل المكون الإضافي، قم ببساطة بإزالة تكوين json المقابل في تكوين المكون الإضافي لتعطيل datadog. يتم إعادة تحميل مكونات APISIX بشكل ساخن، لذلك لا داعي لإعادة تشغيل APISIX.

# تعطيل المكون الإضافي لمسار
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri": "/hello",
    "plugins": {},
    "upstream": {
        "type": "roundrobin",
        "nodes": {
            "127.0.0.1:1980": 1
        }
    }
}'
Tags: