مراقبة السحابة باستخدام Datadog في Apache APISIX
API7.ai
November 12, 2021
مع زيادة تعقيد منتجات تكنولوجيا المعلومات وتطوير التطبيقات الموجهة للمستهلكين، أصبحت المراقبة جزءًا لا يتجزأ من أي تسليم للتطبيقات. بالإضافة إلى ذلك، لتلبية الطلب اللامتناهي لدورات التحديث السريع مع ضمان الاستقرار، والأداء المبسط، والحفاظ على توازن مثالي بين مؤشرات مستوى الخدمة (SLI) وأهداف مستوى الخدمة (SLO) واتفاقية مستوى الخدمة (SLA) - فإن المراقبة الفعالة مهمة للغاية.
كمنتج لإدارة واجهات برمجة التطبيقات السحابية، يقوم Apache APISIX بفصل مخاوف المراقبة عن التطبيق، مما يمنح المطورين ميزة بناء التطبيقات مع التركيز فقط على منطق الأعمال بينما يتولى Apache APISIX مسؤولية المراقبة لمنصة اختيارهم.
أطلق Apache APISIX مؤخرًا مكونًا إضافيًا جديدًا: APISIX-Datadog، لتوفير تكامل أعمق مع 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 | الوقت المستغرق منذ توجيه الطلب إلى الخادم حتى استلام الاستجابة (بالميلي ثانية). |
زمن APISIX | Histogram | الوقت المستغرق من قبل وكيل APISIX لمعالجة الطلب (بالميلي ثانية). |
حجم الإدخال | Timer | حجم جسم الطلب بالبايت. |
حجم الإخراج | Timer | حجم جسم الاستجابة بالبايت. |
سيتم إرسال المقاييس إلى وكيل DogStatsD مع العلامات التالية. إذا لم يكن هناك قيمة مناسبة لأي علامة معينة، سيتم ببساطة حذف العلامة.
اسم المقياس | الوصف |
---|---|
route_name | الاسم المحدد في تعريف مخطط المسار. إذا لم يكن موجودًا، سيتم الرجوع إلى قيمة معرف المسار. |
service_id | إذا تم إنشاء مسار مع تجريد الخدمة، سيتم استخدام معرف الخدمة المحدد. |
consumer | إذا كان للمسار مستهلك مرتبط، سيتم إضافة اسم المستخدم الخاص بالمستهلك كعلامة. |
balancer_ip | IP الخاص بمحمل الخادم الذي قام بمعالجة الطلب الحالي. |
response_status | رمز حالة استجابة HTTP. |
scheme | المخطط المستخدم لإنشاء الطلبات، مثل HTTP، gRPC، gRPCs إلخ. |
يحتفظ المكون الإضافي بذاكرة مؤقتة مع مؤقت. عندما ينتهي المؤقت، يقوم مكون APISIX-Datadog الإضافي بإرسال المقاييس المخزنة كدفعة إلى خادم dogstatsd المحلي. هذا النهج أقل استهلاكًا للموارد (على الرغم من أنه قد يكون غير مهم حيث أن مقابس UDP خفيفة الوزن للغاية) عن طريق إعادة استخدام نفس المقبس UDP ولا يثقل كاهل الشبكة طوال الوقت حيث يمكن تكوين المؤقت.
خطوات تشغيل وكيل Datadog
- إذا كنت تستخدم بالفعل Datadog داخل بنيتك التحتية، يجب أن يكون لديك وكيل datadog مثبت في أنظمتك. قد يكون إما حاوية docker، أو pod، أو ثنائي لمدير الحزم المناسب. في هذه الحالة، أنت على ما يرام. فقط تأكد من أن المنفذ 8125/udp مسموح به عبر الجدار الناري (إن وجد) أي بشكل أكثر تحديدًا، يمكن لوكيل Apache APISIX الوصول إلى المنفذ 8125 لوكيل datadog. يمكنك تخطي هذا القسم الفرعي.
لمعرفة المزيد حول كيفية تثبيت وكيل datadog كامل، قم بزيارة هنا.
- إذا كنت جديدًا على Datadog
- أولاً قم بإنشاء حساب عن طريق زيارة www.datadoghq.com.
- قم بإنشاء مفتاح API.
- يتطلب مكون 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
. إذا كنت ترغب في تحديث التكوين، يرجى تحديث بيانات وصف المكون الإضافي:
مخطط البيانات الوصفية
الاسم | النوع | مطلوب | الافتراضي | الوصف |
---|---|---|---|---|
hosts | string | اختياري | "127.0.0.1" | عنوان خادم DogStatsD |
port | integer | اختياري | 8125 | منفذ خادم DogStatsD |
namespace | string | اختياري | "apisix" | بادئة لجميع المقاييس المخصصة المرسلة من قبل وكيل APISIX. مفيد للعثور على الكيانات للرسم البياني للمقياس. على سبيل المثال (apisix.request.counter) |
constant_tags | array | اختياري | ["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_size | integer | اختياري | 5000 | [1,...] | الحد الأقصى لحجم كل دفعة |
inactive_timeout | integer | اختياري | 5 | [1,...] | الحد الأقصى للعمر بالثواني عندما سيتم إرسال الذاكرة المؤقتة إذا كانت غير نشطة |
buffer_duration | integer | اختياري | 60 | [1,...] | الحد الأقصى للعمر بالثواني لأقدم إدخال في دفعة قبل أن يجب معالجة الدفعة |
max_retry_count | integer | اختياري | 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
}
}
}'