لمحة عن هذا الدرس التطبيقي حول الترميز
1. مقدمة
في هذا الدرس التطبيقي حول الترميز، ستتعلّم كيفية الاستفادة من أدوات التسجيل والمراقبة المتاحة لجميع المطوّرين الذين يعملون باستخدام دوال Cloud. تأتي الأدوات مع كل وظيفة في السحابة الإلكترونية تقوم بنشرها بجميع اللغات المتاحة، ويُفترض أن تتيح لك أن تكون أكثر إنتاجية عند كتابة التعليمات البرمجية بدون خادم وتشغيلها.
ستستخدم دالة Cloud يتم تشغيلها عبر HTTP، ولكن كل ما تتناوله ينطبق أيضًا على اللغات الأخرى ودوال السحابة الإلكترونية التي يتم تشغيلها بواسطة أحداث أخرى.
2. الإعداد والمتطلبات
إعداد بيئة ذاتية
- سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. (إذا لم يكن لديك حساب على Gmail أو G Suite، عليك إنشاء حساب.)
يُرجى تذكُّر رقم تعريف المشروع، وهو اسم فريد في جميع مشاريع Google Cloud (سبق أن تم استخدام الاسم أعلاه ولن يكون مناسبًا لك). ستتم الإشارة إليها لاحقًا في هذا الدرس التطبيقي حول الترميز باسم PROJECT_ID
.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد Google Cloud.
إنّ تنفيذ هذا الدرس التطبيقي حول الترميز لن يكون مكلفًا أو مكلفًا على الإطلاق. احرص على اتّباع أي تعليمات في قسم "الحذف سريعًا". الذي يقدم لك نصائح حول كيفية إيقاف تشغيل الموارد حتى لا تتكبّد أي فواتير خارج نطاق هذا البرنامج التعليمي. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج الفترة التجريبية المجانية التي تبلغ قيمتها 300 دولار أمريكي.
Cloud Shell
على الرغم من إمكانية استخدام وظائف Cloud Functions وإمكانيات التسجيل والمراقبة عن بُعد من الكمبيوتر المحمول، سيتم استخدام Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في Google Cloud.
هذا الجهاز الافتراضي المستند إلى نظام دبيان محمل بكل أدوات التطوير التي ستحتاج إليها. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت ويتم تشغيله في Google Cloud، ما يحسّن بشكل كبير من أداء الشبكة والمصادقة. وهذا يعني أنّ كل ما ستحتاجه في هذا الدرس التطبيقي حول الترميز هو متصفّح (نعم، يعمل على جهاز Chromebook).
- لتفعيل Cloud Shell من Cloud Console، ما عليك سوى النقر على تفعيل Cloud Shell
(من المفترَض أن تستغرق عملية الإعداد والاتصال بالبيئة بضع دقائق فقط).
بعد الربط بتطبيق 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:
تضبط Cloud Shell أيضًا بعض متغيرات البيئة تلقائيًا، وهو ما قد يكون مفيدًا عند تشغيل الأوامر المستقبلية.
echo $GOOGLE_CLOUD_PROJECT
مخرجات الأمر
<PROJECT_ID>
- أخيرًا، قم بتعيين تهيئة المنطقة الافتراضية والمشروع.
gcloud config set compute/zone us-central1-f
يمكنك اختيار مجموعة متنوعة من المناطق المختلفة. لمزيد من المعلومات، راجع المناطق المناطق:
3. نشر دالة سحابية بسيطة
من أجل الحصول على شيء لمراقبته، قم بإنشاء "Hello, World" (مرحبًا بالعالم) وظيفة السحابة الإلكترونية. في القائمة اليمنى من Google Cloud Console، انقر على Cloud Functions ثم انقر على Create Function (إنشاء دالة).
أدخِل "hello-monitor". كاسم لوظيفة السحابة الجديدة.
احرِص على الاحتفاظ بجميع الإعدادات التلقائية لرمز المصدر. (ومع ذلك، يمكنك اختيار لغة/وقت تشغيل مختلفَين إذا أردت ذلك).
أخيرًا، انقر على إنشاء.
من المفترض أن تظهر لك دالة السحابة الإلكترونية مدرجة مع علامة اختيار خضراء بجانبها، ما يعني أنها جاهزة للاستدعاء.
4. اختبار "الدالة السحابية" وإرسال الزيارات باستخدام أداة إنشاء حِمل
الآن وبعد نشر "الدالة السحابية" بنجاح، اختبِرها من سطر الأوامر.
أولاً، باستخدام 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، انقر على عرض السجلّات.
من المفترض أن يقودك ذلك إلى قسم Stackdriver Logging في مشروعك، ويعرض لك سجلات Cloud Function فقط.
يجب أن تعرض جميع الطلبات الموجّهة إلى دالة Cloud رمز الحالة 200.
عند عرض السجلّات، يمكنك إجراء ما يلي:
- أجرِ الفلترة حسب مستوى السجلّ (في حالتك، جميع السجلات على مستوى
debug
). - اختَر إطارًا زمنيًا محدّدًا (نسبي أو مطلق).
- فعِّل ميزة بث السجلّات (يظهر رمز التشغيل
في أعلى الشاشة).
- انسخ رابطًا إلى إدخال السجلّ (لمشاركته مع أعضاء الفريق).
- عرض إدخال سجل في سياق المورد.
- ثبِّت إدخال السجلّ (كإشارة مرئية).
- يمكنك تصدير السجلّات إلى BigQuery أو Cloud Storage أو Pub/Sub (أو يمكنك تنزيلها كملفات JSON أو CSV).
6. تعديل الدالة
باستخدام Cloud Console، انتقِل إلى عرض تفاصيل الدالة ولاحظ الارتفاع الذي أنشأته باستخدام أداة اختبار التحميل في عدد عمليات الاستدعاء في الثانية ووقت تنفيذها.
وهناك أداة أخرى أكثر تفصيلاً لمراقبة وقت الاستجابة واستدعاءات استدعاء الإجراءات عن بُعد هي Stackdriver Trace، ولكن قبل أن تتمكّن من استخدامها، يجب إجراء بعض التغييرات على دوال Cloud. فعليك إجراء ما يلي:
- أضِف حزمة
node-emoji
المنقذة للحياة كاعتمادية. - عدِّل رمز الدالة لاستخدام وحدة العقدة التعبيرية ذات الرموز التعبيرية وقدِّم بعض وقت الاستجابة.
- أضِف متغيّر بيئة لتفعيل Stackdriver Trace for Cloud Functions.
من تفاصيل الدالة، انقر على تعديل لتعديل الدالة.
عدِّل الملف 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
على النحو التالي:
انقر على حفظ.
ارجع إلى Cloud Shell واستدعِ الأمر لإنشاء حِمل على دالة Cloud التي تم نشرها حديثًا:
$ echo "GET https://<region>-<project-id>.cloudfunctions.net/hello-monitor" \ | vegeta attack -rate=5 -duration=120s \ > results.bin
وقد أصبحت جاهزًا الآن لمراقبة قائمة آثار الأنشطة التي تم إنشاؤها بدون أي متطلبات إعداد أخرى ولا توجد مكتبة تتبُّع محددة في رمزك.
7. تتبُّع دالة السحابة الإلكترونية المعدّلة
باستخدام القائمة اليمنى، انتقِل إلى قائمة التتبّع (ضمن تتبُّع Stackdriver).
من المفترض أن يظهر لك شيء مشابه للقطة الشاشة التالية:
وهذا من شأنه أن يبيّن تمامًا أن وقت الاستجابة المقدم في دالة السحابة الإلكترونية يتم قياسه عند 300 مللي ثانية.
كل نقطة على الرسم البياني هي طلب يمكنك من خلاله الاطّلاع على معلومات مفصَّلة، مثل الطابع الزمني وطريقة HTTP وحالته وتصنيفها ورابط إلى إدخال السجلّ المقابل وأي طلب لاحق لاستدعاء الإجراءات عن بُعد تُجريه "دالة السحابة الإلكترونية".
إذا كنت ترغب في التكبير، فما عليك سوى النقر على الرسم البياني وسحبه.
للتصغير، انقر على التراجع عن التكبير في أعلى الصفحة.
بما أنّك نشرت دالة واحدة في السحابة الإلكترونية، لا يعرض الرسم البياني سوى طلبات GET
على معرّف الموارد المنتظم (URI) لـ hello-monitor
، ولكن يمكنك فلترة عمليات التتبّع حسب طريقة HTTP (GET أو POST أو DELETE) حسب حالة HTTP (2XX أو 3XX) أو باستخدام فلتر الطلبات.
انتقِل إلى نظرة عامة في القائمة اليمنى:
من خلال صفحة النظرة العامة هذه، يمكنك العثور على بيانات آثار الأنشطة الحديثة وإحصاءات أخرى.
يمكنك أيضًا العثور على إمكانية إنشاء تقارير مخصّصة استنادًا إلى تركيبة من فلتر طلب معرّف الموارد المنتظم (URI) وطريقة HTTP وحالة HTTP ونطاق زمني. ويتيح لك أيضًا مقارنة القيم التي تم إنشاؤها بالمرجع الزمني.
إذا تمكنت من إعداد النطاقات الزمنية الصحيحة باستخدام نقاط بيانات كافية، يمكنك إنشاء تقرير يعرض التغيير المهم في وقت الاستجابة بين وظيفة السحابة الإلكترونية الأولية والوظيفة الجديدة.
يمكن استخدام هذا التقرير المخصص لمعرفة وقت حدوث مشكلة في الأداء ولتتبع مؤشر مستوى الخدمة (SLI)، مثل وقت استجابة طلب المستخدم.
8. حان الوقت لتنظيف الموارد
وبهذا نصل إلى ختام الدرس التطبيقي حول الترميز.
على الرغم من أنّ أدوات Cloud Functions وStackdriver هي منصّتان بدون خادم ولا تتحمّل أي تكاليف عند عدم استخدامها، عليك التحلّي بصفات جيدة عند استخدام السحابة الإلكترونية وحذف وظيفتك السحابية. ما عليك سوى اختيار hello-monitor
في نظرة عامة ضمن دوال السحابة الإلكترونية والنقر على حذف.