Grafana لوحة القيادة لنظام BeerTender البيرة

تفسير. BeerTender - جهاز لتبريد وتعبئة زجاجات البيرة من كروبس وهاينكين. وفقًا للمصنعين ، فإنه يحافظ على جودة البيرة الطازجة لمدة 30 يومًا بعد فتح البرميل. وبطبيعة الحال ، من المناسب لمسؤولي النظام والمسؤولين رصد درجة الحرارة ومستوى البيرة في براميلهم باستخدام لوحات المعلومات المعتادة عبر الإنترنت. وصف المقال السابق كيفية توصيل BeerTender بـ Warp 10 ، والآن سنقوم بإعداد لوحة معلومات Grafana



تستخدم OVHcloud ، أكبر مضيف وموفر سحابة أوروبي ، بفاعلية منصة Warp 10. تتدفق جميع بيانات المراقبة الخاصة بها إلى مجموعة واحدة من مجموعات Warp 10. هذه 400000 خادم ، 27 مركز بيانات ، أي ما مجموعه عدة ملايين من المقاييس في الثانية!

لديهم العديد من لوحات المعلومات ، والآن OVHcloud هو المشرف على البرنامج المساعد مفتوح المصدر Warp 10 Grafana ، الذي بدأنا في تطويره منذ بعض الوقت. سنتحدث عنه. إذا كنت تريد تجربتها بنفسك ، فالبيانات موجودة في المجال العام - يمكنك نسخ WarpScript أدناه.


تحدثنا بالفعل عن كيفية توصيل BeerTender بـ Warp 10.

تركيب


أولاً ، قم بتثبيت Grafana. اتبع التعليمات على موقعه على الانترنت .

نتصل http://localhost:3000/ الافتراضي http://localhost:3000/ ، انتقل إلى admin / admin كلمة المرور الافتراضية ، ثم قم بتغيير كلمة مرور المسؤول.

للحصول على أحدث إصدار من Grafana ، يجب تثبيت المكون الإضافي يدويًا. الطريقة مع grafana-cli لن تعمل. كل ما تحتاجه هو استنساخ مستودع المكونات الإضافية في دليل Grafana plugin وإصلاح الأذونات في كل مكان.

 sudo systemctl stop grafana-server.service sudo chown -R grafana:mygroup /var/lib/grafana/ sudo chmod g+rw /var/lib/grafana/plugins git clone git@github.com:ovh/ovh-warp10-datasource.git /var/lib/grafana/plugins/ovh-warp10-datasource sudo chown -R grafana:mygroup /var/lib/grafana/plugins sudo systemctl start grafana-server.service 

ترتيب


في تكوين Grafana ، انتقل إلى قسم Datasources وإضافة مصدر بيانات من النوع Warp 10. تأكد من أنه يشير إلى المثيل المطلوب لـ Warp 10. يمكنك تحديد نفس الإعدادات مثل إعداداتنا:



حان الوقت لأخذ البيانات من BeerTender ...

عرض درجة الحرارة


قم بإنشاء لوحة معلومات جديدة ، وقم بإضافة لوحة بنوع رسم Graph وأدخل وضع الاستعلامات:


درجة الحرارة الأولية (القيم الصحيحة من المستشعر)

  • في مصدر البيانات ، حدد Warp 10 (أو القيمة الافتراضية)
  • قم بتشغيل محرر WarpScript
  • انسخ WarpScript أدناه
  • في الزاوية اليمنى العليا ، حدد "آخر 30 يومًا"
  • احفظ النتيجة

 "gCA1SVjbDkaxtmTx9ydI4TI2iGc5hFgcbCWnzMRZSt45XW8dZ53Z7VK_if28i0kXwNDLazXHgLrXUKgxLK0RbS79eJmBCpyBlIxw9US7bPfdWH4Fta51.kXN.D4Hsk5OZOwl.vLRBzMpP7F2pAMfclMXSGtCOT6F" 'rt' STORE [ $rt 'beertender.rawtemperature' {} NOW 30 d ] FETCH 0 GET 

سيعرض هذا البرنامج النصي القيم الأولية من مستشعر ADC. يرجى ملاحظة أن محرر WarpScript في Grafana ليس قوياً كما كان من قبل ، لا يوجد المزيد من الإكمال التلقائي هنا. يمكنك كتابة برنامج نصي في WarpStudio أو VSCode ، بحيث يكون لديك تسليط الضوء على بناء الجملة والوثائق عبر الإنترنت ، ثم نسخ النتيجة ولصقها في Grafana.

تباعد تلقائي


في هذا المثال ، حدد الفاصل الزمني لمدة 30 يومًا وقم بتعيين وضع العرض في غرافان على مدار الثلاثين يومًا الماضية. إذا حددنا وضع العرض لليوم الأخير أو العام ، فستطلب WarpScript دائمًا البيانات كل 30 يومًا. البرنامج المساعد يحل هذه المشكلة: متغيرين متاحين للاستخدام في WarpScript - $end و $interval .

 [ $rt 'beertender.rawtemperature' {} $end $interval ] FETCH 0 

درجة حرارة البيرة


لقد أجريت العديد من قياسات الماء والجليد والماء الساخن ، مقارنةً بمستشعر مرجعي ... وكانت النتيجة ما يلي:

  T (درجة مئوية) القيمة الأولية
 18.3 680
 41.5 870
 37.6 841
 10 586
 11 596
 8 559
 1467
 4.5 500
 6.5 535 

أدخل هذه القيم في سلسلة التوقيت GTS وفرز النتيجة حسب القيم الأولية من المستشعر:

 NEWGTS 'linearInterpolation' RENAME 680 NaN NaN NaN 18.3 ADDVALUE 870 NaN NaN NaN 41.5 ADDVALUE 841 NaN NaN NaN 37.6 ADDVALUE 586 NaN NaN NaN 10 ADDVALUE 596 NaN NaN NaN 11 ADDVALUE 559 NaN NaN NaN 8 ADDVALUE 467 NaN NaN NaN 1 ADDVALUE 500 NaN NaN NaN 4.5 ADDVALUE 535 NaN NaN NaN 6.5 ADDVALUE SORT 


الاستيفاء المتوقع

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

الاستيفاء في WarpScript سهل. نحن نصنع مجموعة لضبط الفترة المطلوبة ، ثم نبدأ الاستيفاء ، ونملأ القيم المفقودة.

 [ $linearInterpolation bucketizer.last 0 1 0 ] BUCKETIZE 0 GET INTERPOLATE 'truthtableGTS' STORE 




ممتاز. أنت الآن بحاجة إلى كتابة المخطط الخاص بك من أجل استبدال كل قيمة من المستشعر بقيمة درجة حرارة فعلية حقيقية ، وتقديم النتيجة إلى التنسيق المستخدم بواسطة الجرافان.

تحذير : تصل القيم كل 10 ثوانٍ. في ثلاثة أشهر ، سوف تتراكم 270 ألف قيمة. كثير جدًا بالنسبة إلى Grafana ... فقط احتفظ بالقيمة القصوى لكل ساعة. في WarpScript ، هذا هو BUCKETIZE مع bucketizer.max bucketizer .

يمكنك نسخ WarpScript هذا إلى Grafana:

 // raw value interpolation "gCA1SVjbDkaxtmTx9ydI4TI2iGc5hFgcbCWnzMRZSt45XW8dZ53Z7VK_if28i0kXwNDLazXHgLrXUKgxLK0RbS79eJmBCpyBlIxw9US7bPfdWH4Fta51.kXN.D4Hsk5OZOwl.vLRBzMpP7F2pAMfclMXSGtCOT6F" 'rt' STORE NEWGTS 'linearInterpolation' RENAME 680 NaN NaN NaN 18.3 ADDVALUE 870 NaN NaN NaN 41.5 ADDVALUE 841 NaN NaN NaN 37.6 ADDVALUE 586 NaN NaN NaN 10 ADDVALUE 596 NaN NaN NaN 11 ADDVALUE 559 NaN NaN NaN 8 ADDVALUE 467 NaN NaN NaN 1 ADDVALUE 500 NaN NaN NaN 4.5 ADDVALUE 535 NaN NaN NaN 6.5 ADDVALUE SORT 'linearInterpolation' STORE [ $linearInterpolation bucketizer.last 0 1 0 ] BUCKETIZE 0 GET INTERPOLATE 'truthtableGTS' STORE [ $rt 'beertender.rawtemperature' {} NOW $end $interval ] FETCH // subsampling, keep max of every hour [ SWAP bucketizer.max 0 1 h 0 ] BUCKETIZE UNBUCKETIZE // do not try to interpolate missing buckets. // interpolation [ SWAP <% 'l' STORE [ $l 0 GET //same tick NaN NaN NaN //no latitude/longitude/elevation $truthtableGTS $l 7 GET 0 GET ATTICK 4 GET //take the interpolated value ] %> MACROMAPPER 0 0 0 ] MAP 'temperature (°C)' RENAME 


5 درجات مئوية ، طبيعي للبيرة


BeerTender لوحة القيادة ، الإصدار الأول

مستوى برميل


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

نصيحة: يسترد المكون الإضافي Warp 10 البيانات من GTS فقط. حتى إذا كنت تريد عرض قيمة واحدة ، فأنت بحاجة إلى تقديمها في نقطة واحدة في بيانات GTS.

هنا هو WarpScript ، الذي يأخذ آخر نقطة بيانات ويحولها إلى نسبة مئوية ، ويخلق أيضًا سلسلة زمنية بنقطة واحدة:

 "gCA1SVjbDkaxtmTx9ydI4TI2iGc5hFgcbCWnzMRZSt45XW8dZ53Z7VK_if28i0kXwNDLazXHgLrXUKgxLK0RbS79eJmBCpyBlIxw9US7bPfdWH4Fta51.kXN.D4Hsk5OZOwl.vLRBzMpP7F2pAMfclMXSGtCOT6F" 'rt' STORE //read for beer level [ $rt 'beertender.rawvalue' {} NOW -1 ] FETCH 0 GET VALUES 0 GET 'rawSensorValue' STORE //raw correction: // empty: 30.8e6 // full (and cold): 30.5e6 30.8e6 $rawSensorValue - 0 MAX 2800 / 100 MIN 'beerlevelPercent' STORE $beerlevelPercent NEWGTS 'Barre Level (%25)' RENAME 1 NaN NaN NaN $beerlevelPercent ADDVALUE 

استخدم WarpScript هذا كطلب لوحة مع نوع تصور Gauge:


مؤشر لطيف

إذا كنت مهتمًا ، يمكنك الاطلاع على البيانات المصدر ... الآن لدينا رمز مميز للوصول إلى إحصائيات فريدة حول استهلاك البيرة!

النتائج



Source: https://habr.com/ru/post/ar477870/


All Articles