استخدام Stackdriver Logging وStackdriver Trace مع دوال السحابة

استخدام Stackdriver Logging وStackdriver Trace مع دوال Cloud

لمحة عن هذا الدرس التطبيقي حول الترميز

subjectتاريخ التعديل الأخير: أكتوبر 7, 2020
account_circleتأليف موظف Google

1. مقدمة

في هذا الدرس التطبيقي حول الترميز، ستتعلّم كيفية الاستفادة من أدوات التسجيل والمراقبة المتاحة لجميع المطوّرين الذين يعملون باستخدام دوال Cloud. تأتي الأدوات مع كل وظيفة في السحابة الإلكترونية تقوم بنشرها بجميع اللغات المتاحة، ويُفترض أن تتيح لك أن تكون أكثر إنتاجية عند كتابة التعليمات البرمجية بدون خادم وتشغيلها.

5815064fec87444b.png

ستستخدم دالة Cloud يتم تشغيلها عبر HTTP، ولكن كل ما تتناوله ينطبق أيضًا على اللغات الأخرى ودوال السحابة الإلكترونية التي يتم تشغيلها بواسطة أحداث أخرى.

2. الإعداد والمتطلبات

إعداد بيئة ذاتية

  1. سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. (إذا لم يكن لديك حساب على Gmail أو G Suite، عليك إنشاء حساب.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

يُرجى تذكُّر رقم تعريف المشروع، وهو اسم فريد في جميع مشاريع Google Cloud (سبق أن تم استخدام الاسم أعلاه ولن يكون مناسبًا لك). ستتم الإشارة إليها لاحقًا في هذا الدرس التطبيقي حول الترميز باسم PROJECT_ID.

  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد Google Cloud.

إنّ تنفيذ هذا الدرس التطبيقي حول الترميز لن يكون مكلفًا أو مكلفًا على الإطلاق. احرص على اتّباع أي تعليمات في قسم "الحذف سريعًا". الذي يقدم لك نصائح حول كيفية إيقاف تشغيل الموارد حتى لا تتكبّد أي فواتير خارج نطاق هذا البرنامج التعليمي. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج الفترة التجريبية المجانية التي تبلغ قيمتها 300 دولار أمريكي.

Cloud Shell

على الرغم من إمكانية استخدام وظائف Cloud Functions وإمكانيات التسجيل والمراقبة عن بُعد من الكمبيوتر المحمول، سيتم استخدام Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في Google Cloud.

هذا الجهاز الافتراضي المستند إلى نظام دبيان محمل بكل أدوات التطوير التي ستحتاج إليها. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت ويتم تشغيله في Google Cloud، ما يحسّن بشكل كبير من أداء الشبكة والمصادقة. وهذا يعني أنّ كل ما ستحتاجه في هذا الدرس التطبيقي حول الترميز هو متصفّح (نعم، يعمل على جهاز Chromebook).

  1. لتفعيل Cloud Shell من Cloud Console، ما عليك سوى النقر على تفعيل Cloud Shell fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (من المفترَض أن تستغرق عملية الإعداد والاتصال بالبيئة بضع دقائق فقط).

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

لقطة شاشة يوم 14-06-2017 في الساعة 10.13.43 مساءً.png

بعد الربط بتطبيق Cloud Shell، من المفترض أن يظهر لك أنّه قد تمت مصادقتك وأنّ المشروع سبق أن تم ضبطه على PROJECT_ID.

gcloud auth list

مخرجات الأمر

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

مخرجات الأمر

[core]
project = <PROJECT_ID>

إذا لم يتم ضبط المشروع لسبب ما، ما عليك سوى إصدار الأمر التالي:

gcloud config set project <PROJECT_ID>

هل تبحث عن PROJECT_ID؟ تحقَّق من المعرّف الذي استخدمته في خطوات الإعداد أو ابحث عنه في لوحة بيانات Cloud Console:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

تضبط Cloud Shell أيضًا بعض متغيرات البيئة تلقائيًا، وهو ما قد يكون مفيدًا عند تشغيل الأوامر المستقبلية.

echo $GOOGLE_CLOUD_PROJECT

مخرجات الأمر

<PROJECT_ID>
  1. أخيرًا، قم بتعيين تهيئة المنطقة الافتراضية والمشروع.
gcloud config set compute/zone us-central1-f

يمكنك اختيار مجموعة متنوعة من المناطق المختلفة. لمزيد من المعلومات، راجع المناطق المناطق:

3. نشر دالة سحابية بسيطة

من أجل الحصول على شيء لمراقبته، قم بإنشاء "Hello, World" (مرحبًا بالعالم) وظيفة السحابة الإلكترونية. في القائمة اليمنى من Google Cloud Console، انقر على Cloud Functions ثم انقر على Create Function (إنشاء دالة).

3c13aa20af602aa7.png

أدخِل "hello-monitor". كاسم لوظيفة السحابة الجديدة.

fa6816c96d6d5b94.png

احرِص على الاحتفاظ بجميع الإعدادات التلقائية لرمز المصدر. (ومع ذلك، يمكنك اختيار لغة/وقت تشغيل مختلفَين إذا أردت ذلك).

7aadf164450484e.png

أخيرًا، انقر على إنشاء.

dc74cd21000d6c91.png

من المفترض أن تظهر لك دالة السحابة الإلكترونية مدرجة مع علامة اختيار خضراء بجانبها، ما يعني أنها جاهزة للاستدعاء.

5363a34eb001d5ed.png

4. اختبار &quot;الدالة السحابية&quot; وإرسال الزيارات باستخدام أداة إنشاء حِمل

الآن وبعد نشر "الدالة السحابية" بنجاح، اختبِرها من سطر الأوامر.

أولاً، باستخدام Cloud Shell، أنشئ الأمر التالي:

$ gcloud functions describe hello-monitor

من المفترض أن يعرض ذلك وصفًا لدالة السحابة الإلكترونية، بما في ذلك عنوان URL للموقع الإلكتروني httpsTrigger، وهي نقطة نهاية HTTP(S) لاستدعاء دالة السحابة الإلكترونية. من المفترض أن يظهر على النحو التالي: https://<region>-<project-id>.cloudfunctions.net/hello-monitor.

من المفترض أن يصبح تشغيل "دالة السحابة الإلكترونية" بسيطًا مثل استخدام الأمر curl على عنوان URL هذا.

$ curl https://<region>-<project-id>.cloudfunctions.net/hello-monitor
Hello World!

استخدم الآن Vegeta، وهي أداة بسيطة لاختبار تحميل HTTP. لتثبيته، من Cloud Shell، ما عليك سوى كتابة الأمر التالي :

$ go get -u github.com/tsenart/vegeta

لإرسال بعض حركة البيانات إلى وظيفة السحابة الإلكترونية (خمسة طلبات في الثانية لمدة دقيقتين)، استخدم الأمر التالي:

$ echo "GET https://<region>-<project-id>.cloudfunctions.net/hello-monitor" \
   | vegeta attack -rate=5 -duration=120s \
   > results.bin

5. التنقّل بين السجلّات

من عرض تفاصيل Cloud Function، انقر على عرض السجلّات.

b24157fd3376e6a8.png

من المفترض أن يقودك ذلك إلى قسم Stackdriver Logging في مشروعك، ويعرض لك سجلات Cloud Function فقط.

5a36fa75d2fb0165.png

يجب أن تعرض جميع الطلبات الموجّهة إلى دالة Cloud رمز الحالة 200.

عند عرض السجلّات، يمكنك إجراء ما يلي:

  • أجرِ الفلترة حسب مستوى السجلّ (في حالتك، جميع السجلات على مستوى debug).
  • اختَر إطارًا زمنيًا محدّدًا (نسبي أو مطلق).
  • فعِّل ميزة بث السجلّات (يظهر رمز التشغيل 751a4600016f34a7.png في أعلى الشاشة).
  • انسخ رابطًا إلى إدخال السجلّ (لمشاركته مع أعضاء الفريق).
  • عرض إدخال سجل في سياق المورد.
  • ثبِّت إدخال السجلّ (كإشارة مرئية).
  • يمكنك تصدير السجلّات إلى BigQuery أو Cloud Storage أو Pub/Sub (أو يمكنك تنزيلها كملفات JSON أو CSV).

6. تعديل الدالة

باستخدام Cloud Console، انتقِل إلى عرض تفاصيل الدالة ولاحظ الارتفاع الذي أنشأته باستخدام أداة اختبار التحميل في عدد عمليات الاستدعاء في الثانية ووقت تنفيذها.

aaee3159bbe395d3.png 7ed347101da5eca0.png

وهناك أداة أخرى أكثر تفصيلاً لمراقبة وقت الاستجابة واستدعاءات استدعاء الإجراءات عن بُعد هي Stackdriver Trace، ولكن قبل أن تتمكّن من استخدامها، يجب إجراء بعض التغييرات على دوال Cloud. فعليك إجراء ما يلي:

  1. أضِف حزمة node-emoji المنقذة للحياة كاعتمادية.
  2. عدِّل رمز الدالة لاستخدام وحدة العقدة التعبيرية ذات الرموز التعبيرية وقدِّم بعض وقت الاستجابة.
  3. أضِف متغيّر بيئة لتفعيل Stackdriver Trace for Cloud Functions.

من تفاصيل الدالة، انقر على تعديل لتعديل الدالة.

39b0f8f98b18a6c0.png

عدِّل الملف package.json لإضافة تبعية لحزمة node-emoji.

{
 
"name": "sample-http",
 
"version": "0.0.1",
 
"dependencies": {
   
"node-emoji": "^1.8.1"
 
}
}

عدِّل الدالة الفعلية من خلال تغيير محتوى index.js إلى ما يلي:

const emoji = require('node-emoji');

exports.helloWorld = (req, res) => {
  let message = req.query.message || req.body.message || 'Hello World!';

  // add some latency, functions are too quick!
  setTimeout(function() {
     message += emoji.random().emoji;  
     res.status(200).send(message);
  }, (3 * 100));  // 300ms
 
};

يؤدي ذلك إلى إضافة رمز تعبيري عشوائي إلى الرسالة التي تعرضها دالة السحابة الإلكترونية بعد توقفها مؤقتًا لمدة 300 مللي ثانية.

أخيرًا، أضِف متغيّر بيئة لدالة Cloud Function باسم GOOGLE_CLOUD_TRACE_ENABLED واضبطه على true على النحو التالي:

9205bd277b76aa21.png

انقر على حفظ.

ارجع إلى Cloud Shell واستدعِ الأمر لإنشاء حِمل على دالة Cloud التي تم نشرها حديثًا:

$ echo "GET https://<region>-<project-id>.cloudfunctions.net/hello-monitor" \
   | vegeta attack -rate=5 -duration=120s \
   > results.bin

وقد أصبحت جاهزًا الآن لمراقبة قائمة آثار الأنشطة التي تم إنشاؤها بدون أي متطلبات إعداد أخرى ولا توجد مكتبة تتبُّع محددة في رمزك.

7. تتبُّع دالة السحابة الإلكترونية المعدّلة

باستخدام القائمة اليمنى، انتقِل إلى قائمة التتبّع (ضمن تتبُّع Stackdriver).

576373f38cad6f8.png

من المفترض أن يظهر لك شيء مشابه للقطة الشاشة التالية:

44a36b758b49f88f.png

وهذا من شأنه أن يبيّن تمامًا أن وقت الاستجابة المقدم في دالة السحابة الإلكترونية يتم قياسه عند 300 مللي ثانية.

كل نقطة على الرسم البياني هي طلب يمكنك من خلاله الاطّلاع على معلومات مفصَّلة، مثل الطابع الزمني وطريقة HTTP وحالته وتصنيفها ورابط إلى إدخال السجلّ المقابل وأي طلب لاحق لاستدعاء الإجراءات عن بُعد تُجريه "دالة السحابة الإلكترونية".

5815064fec87444b.png

إذا كنت ترغب في التكبير، فما عليك سوى النقر على الرسم البياني وسحبه. اختيار نطاق زمني مخصّص في الرسم البياني للتتبُّع

للتصغير، انقر على التراجع عن التكبير في أعلى الصفحة.

بما أنّك نشرت دالة واحدة في السحابة الإلكترونية، لا يعرض الرسم البياني سوى طلبات GET على معرّف الموارد المنتظم (URI) لـ hello-monitor، ولكن يمكنك فلترة عمليات التتبّع حسب طريقة HTTP (GET أو POST أو DELETE) حسب حالة HTTP (2XX أو 3XX) أو باستخدام فلتر الطلبات.

انتقِل إلى نظرة عامة في القائمة اليمنى:

e920cfca2a50899e.png

من خلال صفحة النظرة العامة هذه، يمكنك العثور على بيانات آثار الأنشطة الحديثة وإحصاءات أخرى.

ef5a45647967d275.png

يمكنك أيضًا العثور على إمكانية إنشاء تقارير مخصّصة استنادًا إلى تركيبة من فلتر طلب معرّف الموارد المنتظم (URI) وطريقة HTTP وحالة HTTP ونطاق زمني. ويتيح لك أيضًا مقارنة القيم التي تم إنشاؤها بالمرجع الزمني.

5bd34e9d13b47fb6.png

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

2cc0e9a3212b91bb.png

2e7b1ebf2f0a2b4f.png

يمكن استخدام هذا التقرير المخصص لمعرفة وقت حدوث مشكلة في الأداء ولتتبع مؤشر مستوى الخدمة (SLI)، مثل وقت استجابة طلب المستخدم.

8. حان الوقت لتنظيف الموارد

وبهذا نصل إلى ختام الدرس التطبيقي حول الترميز.

على الرغم من أنّ أدوات Cloud Functions وStackdriver هي منصّتان بدون خادم ولا تتحمّل أي تكاليف عند عدم استخدامها، عليك التحلّي بصفات جيدة عند استخدام السحابة الإلكترونية وحذف وظيفتك السحابية. ما عليك سوى اختيار hello-monitor في نظرة عامة ضمن دوال السحابة الإلكترونية والنقر على حذف.

aceb633cf70a4a27.png