نشر خدمات المراقبة على Kubernetes

يصف هذا الموضوع كيفية استخدام Prometheus لنشر خدمات المراقبة لمجموعة Milvus على Kubernetes.

مراقبة المقاييس باستخدام Prometheus

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

بشكل عام، يتم تخزين المقاييس في قاعدة بيانات السلاسل الزمنية (TSDB)، مثل Prometheus، ويتم تسجيل المقاييس بطابع زمني. في حالة مراقبة خدمات Milvus، يمكنك استخدام Prometheus لسحب البيانات من نقاط النهاية التي تم تعيينها بواسطة المصدرين. ثم يقوم Prometheus بتصدير مقاييس كل مكون من مكونات Milvus على http://<component-host>:9091/metrics.

ومع ذلك، قد يكون لديك العديد من النسخ المتماثلة لمكون واحد، مما يجعل التكوين اليدوي لـ Prometheus معقدًا للغاية. ولذلك، يمكنك استخدام Prometheus Operator، وهو امتداد لـ Kubernetes، للإدارة الآلية والفعالة لمثيلات مراقبة Prometheus. يوفر لك استخدام Prometheus Operator Prometheus عناء إضافة أهداف القياس وموفري الخدمة يدويًا.

يمكّنك تعريف المورد المخصص (CRD) الخاص ب ServiceMonitor من تحديد كيفية مراقبة مجموعة ديناميكية من الخدمات بشكل واضح. كما يسمح أيضًا بتحديد الخدمات التي ستتم مراقبتها مع التكوين المطلوب باستخدام تحديدات التسمية. باستخدام مشغل Prometheus Operator، يمكنك تقديم اصطلاحات تحدد كيفية كشف المقاييس. يمكن اكتشاف الخدمات الجديدة تلقائيًا باتباع الاصطلاحات التي قمت بتعيينها دون الحاجة إلى إعادة التكوين اليدوي.

توضح الصورة التالية سير عمل بروميثيوس.

Prometheus_architecture بروميثيوس_أرشيف

المتطلبات الأساسية

يستخدم هذا البرنامج التعليمي kube-prometheus ليوفر عليك عناء تثبيت وتهيئة كل مكون من مكونات المراقبة والتنبيه يدويًا.

يقوم Kube-prometheus بجمع بيانات Kubernetes، ولوحات معلومات Grafana، وقواعد Prometheus مع الوثائق والبرامج النصية.

قبل نشر خدمات المراقبة، تحتاج إلى إنشاء مكدس مراقبة باستخدام التكوين الموجود في دليل بيانات كيوب-بروميثيوس kube-prometheus.

$ git clone https://github.com/prometheus-operator/kube-prometheus.git
$ cd kube-prometheus
$ kubectl apply --server-side -f manifests/setup
$ kubectl wait \
        --for condition=Established \
        --all CustomResourceDefinition \
        --namespace=monitoring
$ kubectl apply -f manifests/
لا يمكن لمكدس بروميثيوس-k8s الافتراضي التقاط مقاييس ميلفوس، وتحتاج إلى التصحيح:
kubectl patch clusterrole prometheus-k8s --type=json -p='[{"op": "add", "path": "/rules/-", "value": {"apiGroups": [""], "resources": ["pods", "services", "endpoints"], "verbs": ["get", "watch", "list"]}}]'

لحذف مكدس، قم بتشغيل kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup.

نشر خدمات المراقبة على Kubernetes

1. الوصول إلى لوحات المعلومات

قم بإعادة توجيه خدمة Prometheus إلى المنفذ 9090 ، وخدمة Grafana إلى المنفذ 3000.

$ kubectl --namespace monitoring --address 0.0.0.0 port-forward svc/prometheus-k8s 9090
$ kubectl --namespace monitoring --address 0.0.0.0 port-forward svc/grafana 3000

2. تمكين ServiceMonitor

لا يتم تمكين ServiceMonitor لـ Milvus Helm افتراضيًا. بعد تثبيت مشغل Prometheus في مجموعة Kubernetes، يمكنك تمكينه عن طريق إضافة المعلمة metrics.serviceMonitor.enabled=true.

مع Helm

يمكنك تمكين ServiceMonitor عن طريق تعيين المعلمة metrics.serviceMonitor.enabled=true كما يلي إذا كنت قد قمت بتثبيت مخطط Milvus Helm.

```
$ helm upgrade my-release milvus/milvus --set metrics.serviceMonitor.enabled=true --reuse-values
```

عند اكتمال التثبيت، استخدم kubectl للتحقق من مورد ServiceMonitor.

مع مشغل Milvus Helm

يمكنك تمكين ServiceMonitor على النحو التالي إذا كنت قد قمت بتثبيت ملفوس باستخدام مشغل ملفوس.

  1. قم بتشغيل الأمر التالي لتحرير مورد ميلفوس المخصص. يفترض الأمر التالي أن المورد المخصص اسمه my-release.

    $ kubectl edit milvus my-release
    
  2. قم بتحرير الحقل spec.components.disableMetric إلى false.

    ...
    spec:
      components:
        disableMetric: false # set to true to disable metrics
    ...
    
  3. احفظ واخرج من المحرر.

  4. انتظر حتى يقوم المُشغِّل بتسوية التغييرات. يمكنك التحقق من حالة المورد المخصص ميلفوس عن طريق تشغيل الأمر التالي.

    $ kubectl get milvus my-release -o yaml
    

يجب أن يكون الحقل status.components.metrics.serviceMonitor.enabled هو true.

3. تحقق من المقاييس

بعد تمكين ServiceMonitor، يمكنك الوصول إلى لوحة تحكم بروميثيوس على http://localhost:9090/.

انقر على علامة التبويب Status ثم Targets. يجب أن ترى أهداف مكونات ميلفوس.

Prometheus_targets Prometheus_targets

انقر على علامة التبويب Graph وأدخل التعبير up{job="default/my-release"} في مربع إدخال التعبير. يجب أن ترى مقاييس مكونات ملفوس.

Prometheus_graph بروميثيوس_رسم بياني

4. تحقق من ServiceMonitor

$ kubectl get servicemonitor
NAME                           AGE
my-release-milvus              54s

ما التالي