إدخال البيانات للنشر
نتائج التعلم
بنهاية هذه الجلسة العملية، ستكون قادرًا على:
- تشغيل سير عمل wis2box بتحميل البيانات إلى MinIO باستخدام سطر الأوامر، واجهة الويب MinIO، SFTP، أو سكربت Python.
- الوصول إلى لوحة تحكم Grafana لمراقبة حالة إدخال البيانات وعرض سجلات نسختك من wis2box.
- عرض إشعارات بيانات WIS2 التي نشرتها نسختك من wis2box باستخدام MQTT Explorer.
مقدمة
في WIS2، يتم مشاركة البيانات في الوقت الفعلي باستخدام إشعارات بيانات WIS2 التي تحتوي على رابط "قياسي" يمكن من خلاله تنزيل البيانات.
لتشغيل سير العمل البياني في عقدة WIS2 باستخدام برنامج wis2box، يجب تحميل البيانات إلى دلو wis2box-incoming في MinIO، مما يبدأ سير عمل wis2box. يؤدي هذا الإجراء إلى نشر البيانات عبر إشعار بيانات WIS2. حسب تعيينات البيانات المكونة في نسختك من wis2box، قد يتم تحويل البيانات إلى تنسيق BUFR قبل نشرها.
في هذا التمرين، سنستخدم ملفات بيانات نموذجية لتشغيل سير عمل wis2box ونشر إشعارات بيانات WIS2 لمجموعة البيانات التي قمت بتكوينها في الجلسة العملية السابقة.
خلال التمرين، سنراقب حالة إدخال البيانات باستخدام لوحة تحكم Grafana وMQTT Explorer. تستخدم لوحة تحكم Grafana البيانات من Prometheus و Loki لعرض حالة wis2box الخاص بك، بينما يتيح لك MQTT Explorer رؤية إشعارات بيانات WIS2 التي نشرتها نسختك من wis2box.
لاحظ أن wis2box سيحول البيانات النموذجية إلى تنسيق BUFR قبل نشرها في الوسيط MQTT، وفقًا لتعيينات البيانات المسبقة الإعداد في مجموعة البيانات الخاصة بك. لهذا التمرين، سنركز على الطرق المختلفة لتحميل البيانات إلى نسختك من wis2box والتحقق من الإدخال والنشر الناجحين. سيتم تغطية تحويل البيانات لاحقًا في جلسة عملية أدوات تحويل البيانات.
التحضير
تستخدم هذه القسم مجموعة البيانات لـ "surface-based-observations/synop" التي تم إنشاؤها مسبقًا في جلسة عملية تكوين مجموعات البيانات في wis2box. كما يتطلب معرفة بتكوين المحطات في wis2box-webapp، كما هو موضح في جلسة عملية تكوين بيانات المحطة.
تأكد من أنك تستطيع تسجيل الدخول إلى جهاز الطالب الافتراضي باستخدام عميل SSH الخاص بك (مثل PuTTY).
تأكد من أن wis2box يعمل:
cd ~/wis2box/
python3 wis2box-ctl.py start
python3 wis2box-ctl.py status
تأكد من أن MQTT Explorer يعمل ومتصل بنسختك باستخدام بيانات الاعتماد العامة everyone/everyone
مع اشتراك في الموضوع origin/a/wis2/#
.
تأكد من أن لديك متصفح ويب مفتوح مع لوحة تحكم Grafana لنسختك من خلال التنقل إلى http://YOUR-HOST:3000
.
إعداد البيانات النموذجية
انسخ الدليل exercise-materials/data-ingest-exercises
إلى الدليل الذي حددته كـ WIS2BOX_HOST_DATADIR
في ملف wis2box.env
الخاص بك:
cp -r ~/exercise-materials/data-ingest-exercises ~/wis2box-data/
Note
يتم تركيب WIS2BOX_HOST_DATADIR
كـ /data/wis2box/
داخل حاوية wis2box-management بواسطة ملف docker-compose.yml
المضمن في دليل wis2box
.
هذا يتيح لك مشاركة البيانات بين الخادم والحاوية.
إضافة المحطة الاختبارية
أضف المحطة بمعرف WIGOS 0-20000-0-64400
إلى نسختك من wis2box باستخدام محرر المحطات في wis2box-webapp.
استرجع المحطة من OSCAR:
أضف المحطة إلى مجموعات البيانات التي أنشأتها للنشر على "../surface-based-observations/synop" واحفظ التغييرات باستخدام رمز المصادقة الخاص بك:
لاحظ أنه يمكنك إزالة هذه المحطة من مجموعة البيانات الخاصة بك بعد الجلسة العملية.
اختبار إدخال البيانات من سطر الأوامر
في هذا التمرين، سنستخدم الأمر wis2box data ingest
لتحميل البيانات إلى MinIO.
تأكد من أنك في دليل wis2box
وقم بتسجيل الدخول إلى حاوية wis2box-management:
cd ~/wis2box
python3 wis2box-ctl.py login
تحقق من توفر البيانات النموذجية التالية في الدليل /data/wis2box/
داخل حاوية wis2box-management:
ls -lh /data/wis2box/data-ingest-exercises/synop_202412030900.txt
إدخال البيانات باستخدام wis2box data ingest
نفذ الأمر التالي لإدخال ملف البيانات النموذجي إلى نسختك من wis2box:
wis2box data ingest -p /data/wis2box/data-ingest-exercises/synop_202412030900.txt --metadata-id urn:wmo:md:not-my-centre:synop-test
هل تم إدخال البيانات بنجاح؟ إذا لم يكن كذلك، ما هو رسالة الخطأ، وكيف يمكنك إصلاحها؟
انقر لكشف الإجابة
لم تتم عملية الإدخال بنجاح. يجب أن ترى ما يلي:
Error: metadata_id=urn:wmo:md:not-my-centre:synop-test not found in data mappings
تشير رسالة الخطأ إلى أن معرف البيانات الوصفية الذي قدمته لا يتطابق مع أي من مجموعات البيانات التي قمت بتكوينها في نسختك من wis2box.
قدم معرف البيانات الوصفية الصحيح الذي يتطابق مع مجموعة البيانات التي أنشأتها في الجلسة العملية السابقة وكرر أمر إدخال البيانات حتى ترى الإخراج التالي:
Processing /data/wis2box/data-ingest-exercises/synop_202412030900.txt
Done
انتقل إلى واجهة MinIO في متصفحك وتحقق مما إذا تم تحميل الملف synop_202412030900.txt
إلى دلو wis2box-incoming
. يجب أن ترى دليلًا جديدًا باسم مجموعة البيانات التي قدمتها في خيار --metadata-id
، وداخل هذا الدليل، ستجد الملف synop_202412030900.txt
:
Note
أمر wis2box data ingest
قام بتحميل الملف إلى دلو wis2box-incoming
في MinIO في دليل باسم معرف البيانات الوصفية الذي قدمته.
انتقل إلى لوحة تحكم Grafana في متصفحك وتحقق من حالة إدخال البيانات.
تحقق من حالة إدخال البيانات على Grafana
انتقل إلى لوحة تحكم Grafana على http://your-host:3000 وتحقق من حالة إدخال البيانات في متصفحك.
كيف يمكنك معرفة ما إذا تم إدخال البيانات ونشرها بنجاح؟
انقر لكشف الإجابة
إذا تم إدخال البيانات بنجاح، يجب أن ترى ما يلي:
إذا لم تر هذا، يرجى التحقق من رسائل التحذير أو الخطأ المعروضة في أسفل اللوحة ومحاولة حلها.
تحقق من وسيط MQTT لإشعارات WIS2
انتقل إلى MQTT Explorer وتحقق مما إذا كان بإمكانك رؤية رسالة إشعار WIS2 للبيانات التي أدخلتها للتو.
كم عدد إشعارات بيانات WIS2 التي نشرتها نسختك من wis2box؟
كيف يمكنك الوصول إلى محتوى البيانات المنشورة؟
انقر لكشف الإجابة
يجب أن ترى إشعار بيانات WIS2 واحد تم نشره بواسطة نسختك من wis2box.
للوصول إلى محتوى البيانات المنشورة، يمكنك توسيع هيكل الموضوع لرؤية المستويات المختلفة للرسالة حتى تصل إلى المستوى الأخير ومراجعة محتوى الرسالة.
يحتوي محتوى الرسالة على قسم "links" مع مفتاح "rel" بقيمة "canonical" ومفتاح "href" بعنوان URL لتنزيل البيانات. سيكون تنسيق URL http://YOUR-HOST/data/...
.
لاحظ أن تنسيق البيانات هو BUFR، وستحتاج إلى محلل BUFR لعرض محتوى البيانات. تنسيق BUFR هو تنسيق ثنائي يستخدمه الخدمات الجوية لتبادل البيانات. قامت الإضافات البيانية داخل wis2box بتحويل البيانات إلى BUFR قبل نشرها.
بعد إكمال هذا التمرين، اخرج من حاوية wis2box-management:
exit
رفع البيانات باستخدام واجهة ويب MinIO
في التمارين السابقة، قمت برفع البيانات المتاحة على مضيف wis2box إلى MinIO باستخدام الأمر wis2box data ingest
.
التالي، سنستخدم واجهة ويب MinIO، التي تتيح لك تنزيل ورفع البيانات إلى MinIO باستخدام متصفح ويب.
إعادة رفع البيانات باستخدام واجهة ويب MinIO
اذهب إلى واجهة ويب MinIO في متصفحك وتصفح إلى دلو wis2box-incoming
. سترى الملف synop_202412030900.txt
الذي قمت برفعه في التمارين السابقة.
انقر على الملف، وسيكون لديك خيار لتنزيله:
يمكنك تنزيل هذا الملف وإعادة رفعه إلى نفس المسار في MinIO لإعادة تشغيل سير عمل wis2box.
تحقق من لوحة تحكم Grafana وMQTT Explorer لمعرفة ما إذا كانت البيانات قد تم استيعابها ونشرها بنجاح.
انقر للكشف عن الإجابة
سترى رسالة تشير إلى أن wis2box قد نشر هذه البيانات بالفعل:
ERROR - Data already published for WIGOS_0-20000-0-64400_20241203T090000-bufr4; not publishing
هذا يدل على أن سير العمل تم تشغيله، لكن البيانات لم يتم إعادة نشرها. لن يقوم wis2box بنشر نفس البيانات مرتين.
رفع بيانات جديدة باستخدام واجهة ويب MinIO
قم بتنزيل هذا الملف النموذجي synop_202502040900.txt (انقر بزر الماوس الأيمن واختر "حفظ باسم" لتنزيل الملف).
قم برفع الملف الذي قمت بتنزيله باستخدام واجهة الويب إلى نفس المسار في MinIO كالملف السابق.
هل تم استيعاب البيانات ونشرها بنجاح؟
انقر للكشف عن الإجابة
اذهب إلى لوحة تحكم Grafana وتحقق مما إذا كانت البيانات قد تم استيعابها ونشرها بنجاح.
إذا استخدمت المسار الخطأ، سترى رسالة خطأ في السجلات.
إذا استخدمت المسار الصحيح، سترى إشعار بيانات WIS2 واحدًا إضافيًا نُشر لمحطة الاختبار 0-20000-0-64400
، مما يشير إلى أن البيانات قد تم استيعابها ونشرها بنجاح.
رفع البيانات باستخدام SFTP
يمكن الوصول إلى خدمة MinIO في wis2box أيضًا عبر SFTP. يتم ربط خادم SFTP لـ MinIO بالمنفذ 8022 على المضيف (يُستخدم المنفذ 22 لـ SSH).
في هذا التمرين، سنوضح كيفية استخدام WinSCP لرفع البيانات إلى MinIO باستخدام SFTP.
يمكنك إعداد اتصال WinSCP جديد كما هو موضح في هذه اللقطة:
تُعرَّف بيانات اعتماد الاتصال SFTP بواسطة WIS2BOX_STORAGE_USERNAME
و WIS2BOX_STORAGE_PASSWORD
في ملف wis2box.env
الخاص بك وهي نفس البيانات التي استخدمتها للاتصال بواجهة MinIO.
عند تسجيل الدخول، سترى الدلاء المستخدمة بواسطة wis2box في MinIO:
يمكنك التنقل إلى دلو wis2box-incoming
ثم إلى مجلد مجموعة البيانات الخاصة بك. سترى الملفات التي قمت برفعها في التمارين السابقة:
رفع البيانات باستخدام SFTP
قم بتنزيل هذا الملف النموذجي إلى جهاز الكمبيوتر المحلي:
synop_202503030900.txt (انقر بزر الماوس الأيمن واختر "حفظ باسم" لتنزيل الملف).
ثم قم برفعه إلى مسار مجموعة البيانات الواردة في MinIO باستخدام جلسة SFTP الخاصة بك في WinSCP.
تحقق من لوحة تحكم Grafana وMQTT Explorer لمعرفة ما إذا كانت البيانات قد تم استيعابها ونشرها بنجاح.
انقر للكشف عن الإجابة
يجب أن ترى إشعار بيانات WIS2 جديد نُشر لمحطة الاختبار 0-20000-0-64400
، مما يشير إلى أن البيانات قد تم استيعابها ونشرها بنجاح.
إذا استخدمت المسار الخطأ، سترى رسالة خطأ في السجلات.
رفع البيانات باستخدام سكريبت بايثون
في هذا التمرين، سنستخدم عميل بايثون MinIO لنسخ البيانات إلى MinIO.
يوفر MinIO عميل بايثون، ويمكن تثبيته على النحو التالي:
pip3 install minio
في جهاز الطالب الافتراضي الخاص بك، سيكون حزمة 'minio' لبايثون مثبتة بالفعل.
في دليل exercise-materials/data-ingest-exercises
، ستجد سكريبت نموذجي copy_file_to_incoming.py
يمكن استخدامه لنسخ الملفات إلى MinIO.
حاول تشغيل السكريبت لنسخ ملف البيانات النموذجي synop_202501030900.txt
إلى دلو wis2box-incoming
في MinIO على النحو التالي:
cd ~/wis2box-data/data-ingest-exercises
python3 copy_file_to_incoming.py synop_202501030900.txt
Note
ستحصل على خطأ لأن السكريبت لم يتم تكوينه بعد للوصول إلى نقطة النهاية MinIO على wis2box الخاص بك.
يحتاج السكريبت إلى معرفة نقطة النهاية الصحيحة للوصول إلى MinIO على wis2box الخاص بك. إذا كان wis2box يعمل على مضيفك، فإن نقطة النهاية MinIO متاحة على http://YOUR-HOST:9000
. يحتاج السكريبت أيضًا إلى تحديث كلمة المرور الخاصة بالتخزين والمسار في دلو MinIO لتخزين البيانات.
تحديث السكريبت واستيعاب بيانات CSV
قم بتعديل السكريبت copy_file_to_incoming.py
لمعالجة الأخطاء، باستخدام إحدى الطرق التالية:
- من سطر الأوامر: استخدم محرر النصوص nano
أو vim
لتعديل السكريبت.
- باستخدام WinSCP: ابدأ اتصالًا جديدًا باستخدام بروتوكول الملف SCP
ونفس بيانات الاعتماد كعميل SSH الخاص بك. انتقل إلى الدليل wis2box-data/data-ingest-exercises
وقم بتعديل copy_file_to_incoming.py
باستخدام محرر النصوص المدمج.
تأكد من:
- تحديد نقطة النهاية MinIO الصحيحة لمضيفك.
- توفير كلمة المرور الصحيحة لتخزين MinIO الخاص بك.
- توفير المسار الصحيح في دلو MinIO لتخزين البيانات.
أعد تشغيل السكريبت لاستيعاب ملف البيانات النموذجي synop_202501030900.txt
في MinIO:
python3 ~/wis2box-data/ ~/wis2box-data/synop_202501030900.txt
تأكد من حل الأخطاء.
بمجرد أن تتمكن من تشغيل السكريبت بنجاح، سترى رسالة تشير إلى أن الملف تم نسخه إلى MinIO، ويجب أن ترى إشعارات البيانات التي نشرتها wis2box في MQTT Explorer.
يمكنك أيضًا التحقق من لوحة تحكم Grafana لمعرفة ما إذا كانت البيانات قد تم استيعابها ونشرها بنجاح.
الآن بعد أن بدأ السكريبت في العمل، يمكنك محاولة نسخ ملفات أخرى إلى MinIO باستخدام نفس السكريبت.
استيعاب البيانات الثنائية بتنسيق BUFR
قم بتشغيل الأمر التالي لنسخ ملف البيانات الثنائية bufr-example.bin
إلى دلو wis2box-incoming
في MinIO:
python3 copy_file_to_incoming.py bufr-example.bin
تحقق من لوحة تحكم Grafana وMQTT Explorer لمعرفة ما إذا كانت البيانات الاختبارية قد تم استيعابها ونشرها بنجاح. إذا رأيت أي أخطاء، حاول حلها.
التحقق من استيعاب البيانات
كم عدد الرسائل التي تم نشرها إلى وسيط MQTT لهذه العينة من البيانات؟
انقر للكشف عن الإجابة
سترى أخطاء مبلغ عنها في Grafana حيث أن المحطات في ملف BUFR لم تُعرَّف في قائمة المحطات الخاصة بـ wis2box.
إذا تم تعريف جميع المحطات المستخدمة في ملف BUFR في نظام wis2box الخاص بك، يجب أن ترى 10 رسائل نُشرت إلى وسيط MQTT. كل إشعار يتوافق مع البيانات لمحطة واحدة لطابع زمني واحد للملاحظة.
الإضافة wis2box.data.bufr4.ObservationDataBUFR
تقسم ملف BUFR إلى رسائل BUFR فردية وتنشر رسالة واحدة لكل محطة وطابع زمني للملاحظة.
الخاتمة
تهانينا!
في هذه الجلسة العملية، تعلمت كيفية:
- تشغيل سير عمل wis2box من خلال رفع البيانات إلى MinIO باستخدام طرق مختلفة.
- تصحيح الأخطاء الشائعة في عملية استيعاب البيانات باستخدام لوحة تحكم Grafana وسجلات نظام wis2box الخاص بك.
- مراقبة إشعارات بيانات WIS2 التي نشرتها wis2box في لوحة تحكم Grafana وMQTT Explorer.