إنشاء تقارير مخصصة لمشغل القياس

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







لإنشاء التقرير المطلوب بتردد محدد ، يكفي كتابة مورد تقرير مخصص مطابق.



سيناريوهات الاستخدام



هناك حاجة لتقارير القياس المخصص ، على سبيل المثال ، في الحالات التالية:



  1. OpenShift, , (worker nodes) . . CPU , , -, , .
  2. OpenShift. Metering, , , , . , , , .
  3. بالإضافة إلى ذلك ، في حالة وجود مجموعات عامة ، سيكون قسم العمليات مفيدًا ليكون قادرًا على الاحتفاظ بالسجلات في سياق الفرق والإدارات من خلال إجمالي وقت تشغيل الكبسولات الخاصة بهم (أو حسب مقدار موارد وحدة المعالجة المركزية أو الذاكرة التي تم إنفاقها عليها). بمعنى آخر ، نحن مهتمون مرة أخرى بمعلومات حول من يمتلك هذا الفرع أو ذاك.


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



كيف يعمل القياس



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



  1. ReportDataSources (RDS) - تسمح لك هذه الآلية بتحديد البيانات التي ستكون متاحة ويمكن استخدامها في ReportQuery أو موارد التقارير المخصصة. يسمح لك RDS أيضًا باستخراج البيانات من مصادر متعددة. في OpenShift ، يتم سحب البيانات من بروميثيوس بالإضافة إلى موارد ReportQuery (RQ) المخصصة.
  2. ReportQuery (rq) – SQL- , RDS. RQ- Report, RQ- , . RQ- RDS-, RQ- Metering view Presto ( Metering) .
  3. Report – , , ReportQuery. , , , Metering. Report .


يتوفر الكثير من RDS و RQ خارج الصندوق. نظرًا لأننا مهتمون بشكل أساسي بالتقارير على مستوى العقدة ، فسننظر في التقارير التي ستساعدك في كتابة استفساراتك المخصصة. قم بتشغيل الأمر التالي أثناء مشروع "openshift-metering":



$ oc project openshift-metering
$ oc get reportdatasources | grep node
node-allocatable-cpu-cores
node-allocatable-memory-bytes
node-capacity-cpu-cores
node-capacity-memory-bytes
node-cpu-allocatable-raw
node-cpu-capacity-raw
node-memory-allocatable-raw
node-memory-capacity-raw 


نحن هنا مهتمون بـ RDS: node-Capacity-cpu-core و node-capput-Capacity - القدرة الخام ، لأننا نريد الحصول على تقرير عن استهلاك وحدة المعالجة المركزية. لنبدأ بـ node-Capacity-cpu-core ونشغل الأمر التالي لنرى كيف يجمع البيانات من Prometheus:



$ oc get reportdatasource/node-capacity-cpu-cores -o yaml
<showing only relevant snippet below>
spec:
  prometheusMetricsImporter:
query: |
   kube_node_status_capacity_cpu_cores * on(node) group_left(provider_id) max(kube_node_info) by (node, provider_id)


هنا نرى طلب Prometheus يقوم بجلب البيانات من Prometheus وتخزينها في Presto. دعنا ننفذ نفس الطلب في وحدة تحكم مقاييس OpenShift ونرى النتيجة. لدينا مجموعة OpenShift مع عقدتين عاملة (كل منهما تحتوي على 16 مركزًا) وثلاث عقد رئيسية (كل منها بها 8 مراكز). يحتوي العمود الأخير ، القيمة ، على عدد النوى المخصصة للعقدة.







لذلك ، يتم استلام البيانات وتخزينها في جداول Presto. الآن دعنا نرى الموارد المخصصة reportquery (RQ):



$ oc project openshift-metering
$ oc get reportqueries | grep node-cpu 
node-cpu-allocatable                    
node-cpu-allocatable-raw                
node-cpu-capacity                       
node-cpu-capacity-raw                   
node-cpu-utilization              


نحن هنا مهتمون بـ RQS التالية: node-cpu-Capacity و node-cpu-Capacity-raw. كما يوحي الاسم ، تحتوي هذه المقاييس على بيانات وصفية (مدة تشغيل العقدة ، وعدد المعالجات التي خصصتها ، وما إلى ذلك) والبيانات المجمعة.



ترتبط كل من RDS واثنين من RQS التي نهتم بها بالسلسلة التالية:



node-cpu-capacity (rq) <b>uses</b> node-cpu-capacity-raw (rds) <b>uses</b> node-cpu-capacity-raw (rq) <b>uses</b> node-capacity-cpu-cores (rds)


تقارير قابلة للتخصيص



لنكتب الآن نسختنا المخصصة من RDS و RQ. نحتاج إلى تغيير طلب Prometheus بحيث يعرض وضع العقدة (الرئيسي / العامل) وتسمية العقدة المقابلة ، والتي تشير إلى الفريق الذي تنتمي إليه هذه العقدة. يتم تضمين وضع تشغيل العقدة في مقياس kube_node_role Prometheus ، انظر عمود الدور:







وترد جميع الملصقات المخصصة للعقدة في تصنيفات بروميثيوس المتري kube_node_labels ، حيث يتم تشكيلها باستخدام قالب _ label. على سبيل المثال ، إذا كانت العقدة تحتوي على تسمية node_lob ، فستظهر في مقياس بروميثيوس كـ label_node_lob.







الآن علينا فقط تعديل الاستعلام الأصلي باستخدام استعلام بروميثيوس هذين للحصول على البيانات التي نحتاجها ، مثل هذا:



 ((kube_node_status_capacity_cpu_cores * on(node) group_left(provider_id) max(kube_node_info) by (node, provider_id)) * on(node) group_left (role) kube_node_role{role='worker'}) * on(node) group_right(provider_id, role) kube_node_labels


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







لذلك ، نحتاج إلى كتابة أربعة موارد مخصصة (يمكنك تنزيلها من القائمة أدناه):



  1. rds-custom-node-capacity-cpu-cores.yaml - تحدد طلب بروميثيوس.
  2. rq-custom-node-cpu-capacity-raw.yaml - يشير إلى الطلب من الخطوة 1 وإخراج البيانات الأولية.
  3. rds-custom-node-cpu-capacity-raw.yaml - يشير إلى RQ من الخطوة 2 وينشئ كائن عرض في Presto.
  4. rq-custom-node-cpu-capacity-with-cpus-labels.yaml - يشير إلى RDS من الفقرة 3 وتخرج البيانات مع مراعاة تاريخي البدء والانتهاء اللذين تم إدخالهما في التقرير. بالإضافة إلى ذلك ، يتم استخراج أعمدة الدور والتسمية إلى نفس الملف.


بعد إنشاء ملفات yaml الأربعة هذه ، انتقل إلى مشروع openhift-metering وقم بتنفيذ الأوامر التالية:



$ oc project openshift-metering
$ oc create -f rds-custom-node-capacity-cpu-cores.yaml 
$ oc create -f rq-custom-node-cpu-capacity-raw.yaml
$ oc create -f rds-custom-node-cpu-capacity-raw.yaml 
$ oc create -f rq-custom-node-cpu-capacity-with-cpus-labels.yaml


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



$ cat report_immediate.yaml
apiVersion: metering.openshift.io/v1
kind: Report
metadata:
  name: custom-role-node-cpu-capacity-lables-immediate
  namespace: openshift-metering
spec:
  query: custom-role-node-cpu-capacity-labels
  reportingStart: "2020-09-15T00:00:00Z"
  reportingEnd: "2020-09-30T00:00:00Z"
  runImmediately: true

$ oc create -f report-immediate.yaml


بعد تنفيذ هذا التقرير ، يمكن تنزيل ملف النتيجة (csv أو json) من عنوان URL التالي (فقط



استبدل DOMAIN_NAME بالملف الخاص بك): metering-openshift-metering.DOMAIN_NAME / api / v1 / reports / get؟ Name = custom-role-node-cpu- Capacity-hourly & namespace = openshift-metering & format = csv



كما ترى في لقطة الشاشة لملف CSV ، فهو يحتوي على كل من الدور و node_lob. للحصول على وقت تشغيل العقدة بالثواني ، قسّم node_capacity_cpu_core_seconds على node_capacity_cpu_cores:







خاتمة



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



All Articles