البدء السريع مع SensorFlow
انشر العرض التجريبي دون تسجيل أو ترخيص، ثم فعّل الترخيص لاستقبال أحداث حقيقية من حزم Sensors Data.
تدفق البيانات الكامل
يُبقي SensorFlow الجمع والاستقبال والتخزين والتحليل على خوادمك.
- تجمع حزم Sensors Data الرسمية الأحداث من Android وiOS والويب والبرامج المصغّرة والخوادم.
- يتحقق SensorFlow من الأحداث الواردة ويعالجها.
- يخزّن ClickHouse تفاصيل الأحداث ويوفر Apache Superset SQL والرسوم ولوحات المعلومات.
Official Sensors Data SDKs -> SensorFlow -> ClickHouse -> Apache Supersetمتطلبات النظام
يحتاج العرض المحلي إلى Docker Engine أو Docker Desktop مع Docker Compose v2 فقط؛ لا تحتاج إلى Go على المضيف.
- يشمل التنزيل الأول صور Go وClickHouse وRedis وSuperset.
- قيّم موارد الإنتاج حسب الحجم والاستعلامات والاحتفاظ الفعلي؛ لا يوجد ضمان عام لمعدل المعالجة أو حد أجهزة يصلح للجميع.
1. الحصول على الخدمة مفتوحة المصدر
استنسخ مستودع SensorFlow وانتقل إلى مجلد المشروع.
git clone https://github.com/data-analyze-bi/sensorFlow.git
cd sensorFlow2. تشغيل البنية التحتية
يشغّل المثبّت Redis وClickHouse وApache Superset؛ يبدأ الاستقبال الحقيقي بعد التفعيل فقط.
- يستخدم الاستقبال المنفذ 8081، وClickHouse المنافذ 8123/9000، وSuperset المنفذ 8088.
- غيّر كلمة مرور Superset الافتراضية واضبط SUPERSET_SECRET_KEY فريداً في الإنتاج.
./install.sh
# Open the server-IP URL printed after installation.
# After verifying the demo, obtain a license and run:
./activate.sh3. التحقق من العرض التجريبي
افتح عنوان Superset الذي يعرضه المثبّت وافحص أحداث demo_* الاصطناعية.
- هذه بيانات تعليمية وليست نتائج عملاء.
- لا ترسل أحداث الإنتاج في هذه المرحلة.
4. فحص البيانات ثم تفعيل الاستقبال
استعلم عن البيانات التجريبية. لاستقبال SDK الحقيقي، نزّل الترخيص ثم شغّل activate.sh.
- الأمر يستخدم ClickHouse في Compose؛ استخدم اتصالك الحالي إذا كنت تعيد استخدام قاعدة بيانات.
- بعد التفعيل أرسل حدث integration_test مميزاً وافحص سجله الأصلي.
docker compose -f deploy/docker/docker-compose.yml exec -T clickhouse sh -c 'exec clickhouse-client --user "$CLICKHOUSE_USER" --password "$CLICKHOUSE_PASSWORD" --query "SELECT event, count() FROM sensors.event GROUP BY event ORDER BY event"'
# Download the license, then start real SDK ingestion last
./activate.sh5. ربط حزم Sensors Data الرسمية
استخدم الحزمة الرسمية لكل منصة ووجّه عنوان الرفع إلى SensorFlow.
- ⚠️ تنبيه توافق الطرف الثالث: توافق البروتوكول لا يعني اعتماد Sensors Data؛ اختبر الإصدارات والإضافات قبل الإنتاج.
- استخدم Android وiOS والويب والبرامج المصغّرة أو React Native للعملاء، وJava أو Go أو Python أو Node.js أو PHP للخوادم.
- تحقق من الأحداث والمعرّفات والخصائص وتخزين ClickHouse ومؤشرات Superset قبل التحويل.
https://your-domain.example/sensors/send/?token=YOUR_TOKENتنزيل حزم SDK الرسمية
تشير الروابط إلى مستودعات منظمة sensorsdata الرسمية على GitHub. لا يعيد SensorFlow توزيع هذه الحزم. راجع ترخيص الإصدار المختار وشروط استخدامه.
حزمة الويب وJavaScript
اجمع مشاهدات الصفحات والنقرات والأحداث المخصصة وخصائص المستخدم بالحزمة الرسمية.
- ثبّت عبر npm أو yarn أو توزيع المتصفح الرسمي واضبط server_url على مستقبل SensorFlow.
- اختبر تنقل صفحات SPA وBeacon وCORS وسياسات النطاقات؛ عطّل سجلات التصحيح قبل الإنتاج.
npm install sa-sdk-javascript
import sensors from 'sa-sdk-javascript';
sensors.init({
server_url: 'https://your-domain.example/sensors/send/?token=YOUR_TOKEN',
is_track_single_page: true, use_client_time: true, send_type: 'beacon'
});
sensors.quick('autoTrack');
sensors.login('USER_ID');
sensors.track('ButtonClick', { button_name: 'Submit' });حزمة iOS
اتبع تعليمات CocoaPods أو Swift Package Manager الرسمية واستخدم عنوان استقبال SensorFlow.
- SensorFlow مستقل عن Sensors Data Cloud؛ لا يتطلب هذا العنوان Scheme لمشروع الخدمة السحابية.
- اختبر الجمع التلقائي والهويات والخصائص ودورة حياة التطبيق، وعطّل السجلات قبل النشر.
let options = SAConfigOptions(serverURL: "https://your-domain.example/sensors/send/?token=YOUR_TOKEN", launchOptions: launchOptions)
options.enableAutoTrack = .default
SensorsAnalyticsSDK.start(configOptions: options)
SensorsAnalyticsSDK.sharedInstance()?.login("USER_ID")
SensorsAnalyticsSDK.sharedInstance()?.track("ButtonClick", withProperties: ["button_name": "Submit"])حزمة Android
أضف اعتماد Gradle الرسمي وهيئ الحزمة داخل Application بعنوان SensorFlow.
- لا يحتاج هذا المستقبل إلى Scheme لمشروع Sensors Data Cloud.
- اضبط الموافقة ونطاق الجمع. تحقق من التعتيم وصلاحيات الشبكة وHTTPS وعطّل سجلات التصحيح.
SAConfigOptions options = new SAConfigOptions("https://your-domain.example/sensors/send/?token=YOUR_TOKEN");
options.setAutoTrackEventType(SensorsDataAPI.AutoTrackEventType.APP_START | SensorsDataAPI.AutoTrackEventType.APP_END | SensorsDataAPI.AutoTrackEventType.APP_CLICK);
SensorsDataAPI.startWithConfigOptions(this, options);
SensorsDataAPI.sharedInstance().login("USER_ID");
SensorsDataAPI.sharedInstance().track("ButtonClick", properties);حزمة برامج WeChat المصغّرة
احصل على الحزمة الرسمية وهيئها في app.js واسمح بنطاق استقبال HTTPS.
- أضف نطاق الاستقبال إلى قائمة النطاقات المسموح بها للطلبات.
- اختر الأحداث التلقائية وفق احتياجات المنتج والخصوصية واختبر الطلبات على جهاز حقيقي ونطاق مماثل للإنتاج.
sensors.init({
server_url: 'https://your-domain.example/sensors/send/?token=YOUR_TOKEN',
autotrack: { appLaunch: true, appShow: true, appHide: true, pageShow: true, pageShare: true }
});
sensors.login('USER_ID');
sensors.track('ButtonClick', { button_name: 'Submit' });حزمة React Native
ثبّت الحزمة الرسمية وأكمل التهيئة الأصلية لكل من iOS وAndroid.
- حافظ على توافق حزمة JavaScript مع إصداري الحزمتين الأصليتين.
- اضبط serverUrl واختبر مشاهدات الشاشات والأحداث المخصصة وأجر اختبارات تراجع قبل التحديثات.
RNSensorsAnalyticsModule.init({
serverUrl: 'https://your-domain.example/sensors/send/?token=YOUR_TOKEN',
autoTrackAppViewScreen: true
});
RNSensorsAnalyticsModule.login('USER_ID');
RNSensorsAnalyticsModule.track('ButtonClick', { button_name: 'Submit' });حزم الخادم
استخدم حزمة Java أو Go أو Python أو Node.js أو PHP الرسمية وسجّل الحدث بعد نجاح العملية التجارية.
- أعد استخدام نسخة حزمة على مستوى التطبيق واحتفظ بمعرّفات دخول متسقة بين العميل والخادم.
- أفرغ الحزمة أو أغلقها قبل إيقاف العملية وحافظ على أنواع ثابتة للخصائص.
from sensorsanalytics import SensorsAnalytics
sa = SensorsAnalytics(server_url='https://your-domain.example/sensors/send/?token=YOUR_TOKEN')
sa.track(distinct_id='USER_ID', event_name='ProductView', properties={'product_name': 'Example', 'price': 5999})
sa.flush()
sa.close()التحقق من جمع أحداث SDK
أرسل حدث integration_test وافحص كل مرحلة حتى ClickHouse وSuperset.
- تأكد من وصول طلب /sensors/send/ وافحص أخطاء الترخيص والتنسيق وأنواع الخصائص في المستقبل.
- استعلم عن الحدث في ClickHouse ثم SQL Lab وتحقق من الهوية والوقت والأنواع؛ نجاح HTTP وحده لا يكفي.
SELECT event, distinct_id, time, properties
FROM sensors.event
WHERE event = 'integration_test'
ORDER BY time DESC
LIMIT 10;6. التحقق من ClickHouse
أرسل حدثاً تجريبياً وتأكد من تخزينه في ClickHouse.
SELECT event, count() AS event_count
FROM sensors.event
GROUP BY event
ORDER BY event_count DESC
LIMIT 20;7. التحليل عبر Superset
افتح Superset واستخدم اتصال ClickHouse في SQL Lab ومجموعات البيانات والرسوم ولوحات المعلومات.
- أنشئ مؤشرات المستخدمين النشطين والتسجيلات وتسجيل الدخول واتجاهات الأحداث.
- اجمع مسارات التحويل والاحتفاظ والمسارات والمجموعات.
- تحكم في الوصول حسب الفريق أو المشروع أو مجموعة البيانات.
التحديث والتشغيل
أوقف الاستقبال قبل استبدال الترخيص، وأعد صلاحية التنفيذ ثم أعد تشغيل الخدمة.
- انسخ MySQL وClickHouse وبيانات Superset الوصفية احتياطياً.
- راقب فشل الاستقبال ومساحة القرص وزمن الكتابة والاستعلام.
- جدّد قبل الانتهاء؛ تتراكم الفترات المشتراة بعد تاريخ الانتهاء الحالي.
Validate locally before evaluating production ingestion
First verify demo event → ClickHouse → Superset; production Sensors Data SDK payloads require a separate license.