مجلة المعلوماتية مجلة المعلوماتية
المعرفة • البحث • التقنيةأعداد متاحة للقراءة الإلكترونية

كيف تساعد قواعد بيانات السلاسل الزمنية على فهم بيانات المستشعرات؟

العددالعدد 64
تاريخ النشر
عدد القراءات1
اقتباس

الملخص:

يشرح المقال بيانات السلاسل الزمنية ودورها في مراقبة البنية التحتية والمستشعرات وفهم تغير الأداء عبر الوقت. ويقارن حاجاتها بالبيانات العلائقية، ثم يقدم InfluxDB وحزمة TICK التي تجمع أدوات للجمع والتخزين والمعالجة والتصور والتنبيه. ويتناول Telegraf وإضافاته لجمع المقاييس من مصادر متعددة، وKapacitor لمعالجة التدفقات والدفعات والاستجابة للأحداث. كما يعرض الاستعلامات وسياسات الاحتفاظ وخفض دقة العينات للموازنة بين حفظ التاريخ واستهلاك التخزين، مع أمثلة للتثبيت وإحالات إلى التوثيق. ويؤكد أن جمع البيانات يصبح ذا قيمة عندما يساعد على التشخيص والقرار والوقاية من المشكلات. وتبقى الأوامر والخصائص والإصدارات في سياقها التاريخي، مع الحفاظ على التنبيه المصاحب للمثال البرمجي وعدم تقديمه بوصفه تعليمات محدثة ومختبرة.

الكلمات المفتاحية: السلاسل الزمنية، InfluxDB، بيانات المستشعرات، مراقبة النظم، حزمة TICK

مقدمة:

تتغير احتياجات البنية التحتية ومتطلباتها كل عام، وتزداد النظم تعقيدًا وتشابكًا. لكن النمو بلا معنى إذا لم نفهم البنية وما يحدث فيها. وهنا تأتي أدوات المراقبة التي تتيح للمشغلين والإداريين رؤية المشكلات وإصلاحها في الوقت الفعلي.

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

لكن علينا أولًا تحديد كيفية جمع البيانات وتخزينها. فجمع استهلاك المعالج من مئة آلة كل عشر ثوان يولد كمًا كبيرًا. وماذا لو كانت كل آلة تشغل 15 حاوية، وأردت بيانات كل حاوية؟ أو بيانات كل عملية؟ هنا تفيد بيانات السلاسل الزمنية، وتخزنها قواعد مخصصة. سنشرح المعنى ونقدم InfluxDB المفتوحة المصدر. وبنهاية المقال ستعرف ماهية بيانات السلاسل الزمنية وقواعدها، وأساسيات InfluxDB وحزمة TICK، وكيفية تثبيت القاعدة والأدوات الأخرى.

مفاهيم السلاسل الزمنية

إذا عرفت نظم القواعد العلائقية مثل MySQL، فالجداول والأعمدة والمفاتيح الأساسية مألوفة. يشبه كل شيء جدول بيانات بصفوف وأعمدة، بعضها فريد وبعضها يتكرر. والقواعد العلائقية واسعة الاستخدام وممتازة للمعاملات الموثوقة التي تراعي ACID، أي الذرية والاتساق والعزل والاستدامة، ولبيانات يمكن نمذجتها جدوليًا. وقد تحدّث البيانات بالكتابة فوقها واستبدالها.

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

لماذا تلائمها السلاسل الزمنية؟

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

تيسر هذه الصيغة تتبع التغير ورصده عبر الزمن. ومع تراكم البيانات، ترى السلوك الماضي والحالي والمحتمل في المستقبل، وتتسع خيارات القرارات الأذكى.

وكيف تخزن البيانات وتنسق؟ يتوقف ذلك على القاعدة. تخزن InfluxDB البيانات بصيغة Line Protocol، وتعيد الاستعلامات النتائج بصيغة JSON. ويوضح الرسم الأصلي ذلك؛ ولم يُنقل.

ولتفصيل مفهوم السلاسل الزمنية وأسباب تفضيلها على حلول أخرى، تقدم Timescale وInfluxData شروحًا معمقة ممتازة في الإحالات.

InfluxDB: قاعدة للسلاسل الزمنية

تطور InfluxData هذه البرمجية المفتوحة. وهي مكتوبة بلغة Go المترجمة، لذلك يمكن البدء بها دون تثبيت تبعيات. وتدعم بروتوكولات إدخال متعددة، مثل Telegraf من الشركة نفسها وGraphite وCollectd وOpenTSDB؛ فتمنح مرونة في اختيار طريقة الجمع ومصدره. وهي أيضًا من أسرع خيارات قواعد السلاسل الزمنية نموًا. وشفرتها متاحة على GitHub.

سنستخدم ثلاث أدوات من حزمة TICK لبناء قاعدة والبدء بجمع البيانات ومعالجتها.

حزمة TICK

تستند منصة InfluxData إلى أربعة مشروعات مفتوحة تعمل معًا للسلاسل الزمنية، فتيسر جمع البيانات وتخزينها ومعالجتها وعرضها. وهي Telegraf، وكيل خادم قائم على الإضافات لجمع المقاييس والإبلاغ عنها؛ وInfluxDB، مخزن قابل للتوسع للمقاييس والأحداث والتحليل الآني؛ وChronograf، واجهة للمراقبة والتصور لا يتناولها المقال؛ وKapacitor، إطار لمعالجة بيانات السلاسل الزمنية ومراقبتها والتنبيه عليها.

صممت الأدوات لتتكامل، لكن يسهل استبدال إحداها بأداة من اختيارك. وسنستكشف InfluxDB وTelegraf وKapacitor. ويوضح الرسم الأصلي علاقتها؛ ولم يُنقل.

InfluxDB

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

واستعلاماتها شبيهة بـSQL. فإذا كنت تعرف صياغتها فستألف InfluxQL، الصياغة الخاصة للقاعدة. مثلًا، إذا جمعت بيانات مساحة القرص المستخدمة، فيعرض الأصل الاستعلام التالي، ويصفه بأنه يستخرج المتوسطات من ثلاثة أشهر ويجمعها في فترات عشرة أيام.

SELECT mean(diskspace_used) as mean_disk_used
FROM disk_stats
WHERE time() >= 3m
GROUP BY time(10d)

ملاحظة المترجم: حُفظ المثال البرمجي كما ورد في الأصل؛ لا تمثل هذه الترجمة تحديثًا أو تحققًا من صلاحية صياغته في إصدارات اليوم.

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

لنفترض أن مستشعرات تجمع بيانات الذاكرة في آلات عدة: استخدام مستخدمين متعددين والنظام والذاكرة المخبأة وغير ذلك. قد يفيد الاحتفاظ بالتفصيل ثلاثين يومًا، لكن بعدها ربما لا تحتاج إلا إلى نسبة إجمالي الذاكرة إلى المستخدمة. فتطلب من InfluxDB حفظ تفاصيل الاستخدامات ثلاثين يومًا، ثم تحسب متوسطات أقل دقة وتحتفظ بها ستة أشهر أو إلى الأبد أو المدة التي تختارها. وهذه تسوية بين حفظ التاريخ وتقليل استهلاك القرص.

Telegraf

إذا كانت InfluxDB وجهة البيانات، فأنت تحتاج أولًا إلى وسيلة لجمعها. وTelegraf خدمة خلفية تجمع مقاييس مكونات النظم ومستشعرات إنترنت الأشياء وغيرها. وهي مفتوحة ومكتوبة بالكامل بـGo، ومن تطوير InfluxData ومهيأة للعمل مع InfluxDB. وتدعم أيضًا MySQL/MariaDB وMongoDB وRedis وغيرها. وللمزيد راجع موقع InfluxData.

تصميم Telegraf وحداتي يعتمد كثيرًا على الإضافات، فتكون بسيطة وخفيفة أو كاملة ومعقدة بقدر حاجتك. وتدعم بصورة جاهزة أكثر من مئة إضافة لمصادر الإدخال والمعالجة والإخراج، بما فيها Apache وCeph وDocker وIptables وKubernetes وNginx وVarnish.

وحتى إن لم تستخدم InfluxDB للتخزين، فقد تجد Telegraf وسيلة مفيدة لجمع معلومات نظمك أو مستشعراتك.

Kapacitor

أصبحت لدينا وسيلة للجمع والتخزين. وماذا عن استخدام البيانات؟ تتيح Kapacitor المعالجة والعمل بطرائق مختلفة، وتدعم البيانات المتدفقة والدفعات. ففي التدفق، تعمل على البيانات وتشكلها آنيًا، حتى قبل وصولها إلى المخزن. وفي الدفعات، تنفذ إجراءات بأثر رجعي على عينات أو دفعات.

ومن أكبر مزاياها التنبيهات الآنية لأحداث بيئتك. هل تجاوز استهلاك المعالج حده أو ارتفعت الحرارة؟ تستطيع إعداد تنبيهات بالبريد أو تشغيل أمر أو Slack أو HipChat أو OpsGenie وغيرها كثيرًا. والقائمة الكاملة في التوثيق.

وكأدوات الحزمة الأخرى، Kapacitor مفتوحة المصدر؛ وللمزيد راجع README.

تثبيت حزمة TICK

توجد حزم لمعظم التوزيعات، وتثبت عبر سطر الأوامر. اتبع تعليمات توزيعتك. هذه أوامر الإصدارات الواردة تاريخيًا في الأصل.

Fedora

sudo dnf install https://dl.influxdata.com/influxdb/releases/influxdb-1.3.1.x86_64.rpm \
https://dl.influxdata.com/telegraf/releases/telegraf-1.3.4-1.x86_64.rpm \
https://dl.influxdata.com/kapacitor/releases/kapacitor-1.3.1.x86_64.rpm

CentOS 7 / RHEL 7

sudo yum install https://dl.influxdata.com/influxdb/releases/influxdb-1.3.1.x86_64.rpm \
https://dl.influxdata.com/telegraf/releases/telegraf-1.3.4-1.x86_64.rpm \
https://dl.influxdata.com/kapacitor/releases/kapacitor-1.3.1.x86_64.rpm

Ubuntu / Debian

wget https://dl.influxdata.com/influxdb/releases/influxdb_1.3.1_amd64.deb \
https://dl.influxdata.com/telegraf/releases/telegraf_1.3.4-1_amd64.deb \
https://dl.influxdata.com/kapacitor/releases/kapacitor_1.3.1_amd64.deb
sudo dpkg -i influxdb_1.3.1_amd64.deb telegraf_1.3.4-1_amd64.deb kapacitor_1.3.1_amd64.deb

وللتوزيعات الأخرى، راجع صفحة التنزيل في إحالات الأصل.

شاهد البيانات وعش معها

بعد تثبيت الأدوات، يمكنك تجربتها. ويتوافر توثيق رسمي واسع للمشروعات الثلاثة: InfluxDB وTelegraf وKapacitor. ولمزيد من المساعدة، زر منتديات مجتمع InfluxData. تجارب موفقة!

المراجع

  • https://www.influxdata.com/
  • https://www.informit.com/articles/article.aspx?p=377067&seqNum=3
  • https://en.wikipedia.org/wiki/ACID
  • https://docs.influxdata.com/influxdb/v1.3/write_protocols/line_protocol_tutorial/
  • https://docs.influxdata.com/influxdb/v1.3/tools/api/#query
  • https://blog.timescale.com/what-the-heck-is-time-series-data-and-why-do-i-need-a-time-series-database-dcf3b1b18563
  • https://www.influxdata.com/modern-time-series-platform/
  • https://www.influxdata.com/time-series-platform/influxdb/
  • https://www.influxdata.com/time-series-platform/telegraf/
  • https://graphiteapp.org/
  • https://collectd.org/
  • https://opentsdb.net/
  • https://db-engines.com/en/ranking/time+series+dbms
  • https://github.com/influxdata/influxdb
  • https://www.influxdata.com/time-series-platform/
  • https://docs.influxdata.com/influxdb/
  • https://docs.influxdata.com/influxdb/v1.3/query_language
  • https://docs.influxdata.com/telegraf/
  • https://github.com/influxdata/telegraf
  • https://github.com/influxdata/telegraf#input-plugins
  • https://docs.influxdata.com/kapacitor/
  • https://docs.influxdata.com/kapacitor/v1.3/nodes/alert_node/
  • https://github.com/influxdata/kapacitor
  • https://github.com/influxdata/kapacitor/blob/master/README.md
  • https://portal.influxdata.com/downloads
  • https://community.influxdata.com/

اقتبس هذا المقال

جاستن دبليو. ويلر (2018). «كيف تساعد قواعد بيانات السلاسل الزمنية على فهم بيانات المستشعرات؟». مجلة المعلوماتية، العدد 64. https://informaticsjournal.net/?p=50398

مشاركة:

مقالات ذات صلة