كيفية إعداد مكدس مراقبة Kubernetes باستخدام Prometheus و Grafana و Alertmanager على DigitalOcean

الحالة: مهجور

هذا المقال مهجور ولا يتم صيانته بعد الآن.

السبب

الخطوات في هذا البرنامج التعليمي لا تزال تعمل، ولكنها ستنتج تكوينًا يصعب الآن الحفاظ عليه بشكل غير ضروري.

انظر بدلاً من ذلك

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

المقدمة

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

A monitoring system usually consists of a time-series database that houses metric data and a visualization layer. In addition, an alerting layer creates and manages alerts, handing them off to integrations and external services as necessary. Finally, one or more components generate or expose the metric data that will be stored, visualized, and processed for alerts by the stack.

إحدى الحلول الشهيرة للمراقبة هي مجموعة البرامج ذات المصدر المفتوح Prometheus، Grafana، و Alertmanager، التي يتم نشرها جنبًا إلى جنب مع kube-state-metrics و node_exporter لتعريض مقاييس كائنات Kubernetes على مستوى العنقود وكذلك مقاييس مستوى الآلة مثل استخدام وحدة المعالجة المركزية والذاكرة.

يتطلب تنفيذ هذه المجموعة من البرامج على عنقود Kubernetes تكوين مكونات فردية وملفات تعريف، ومقاييس Prometheus، ولوحات معلومات Grafana، والتي قد تأخذ بعض الوقت. يحتوي “دليل بدء التشغيل السريع لمراقبة عنقود Kubernetes في DigitalOcean”، الذي أصدره فريق تعليم المطورين في مجتمع DigitalOcean، على ملفات تعريف محددة تمامًا لمجموعة مراقبة عنقود Prometheus-Grafana-Alertmanager، بالإضافة إلى مجموعة من التنبيهات المُعدة مسبقًا ولوحات معلومات Grafana. يمكن أن يساعدك هذا الدليل في البدء بسرعة، ويشكل أساسًا راسخًا لبناء مجموعة مراقبة لك.

في هذا البرنامج التعليمي، سنقوم بنشر هذه المجموعة المُعدة مُسبقًا على عنقود DigitalOcean Kubernetes، والوصول إلى واجهات Prometheus وGrafana وAlertmanager، ووصف كيفية تخصيصها.

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

قبل البدء، ستحتاج إلى توفر عقد DigitalOcean Kubernetes لديك، وتثبيت الأدوات التالية في بيئة التطوير المحلية الخاصة بك:

  • واجهة سطر الأوامر kubectl مثبتة على جهاز الكمبيوتر المحلي الخاص بك ومكونة للاتصال بعقدك. يمكنك قراءة المزيد حول تثبيت وتكوين kubectl في الوثائق الرسمية له.
  • نظام التحكم بالنسخ git مثبت على جهاز الكمبيوتر المحلي الخاص بك. لمعرفة كيفية تثبيت git على Ubuntu 18.04، استشر كيفية تثبيت Git على Ubuntu 18.04.
  • أداة Coreutils base64 مثبتة على جهاز الكمبيوتر المحلي الخاص بك. إذا كنت تستخدم جهاز Linux، فمن المحتمل أن يكون قد تم تثبيته بالفعل. إذا كنت تستخدم نظام OS X، يمكنك استخدام openssl base64، والذي يأتي مثبتًا بشكل افتراضي.

<$>[ملاحظة]
ملاحظة: تم اختبار Quickstart لرصد العقد فقط على عقود DigitalOcean Kubernetes. لاستخدام Quickstart مع عقود Kubernetes الأخرى، قد تكون هناك بعض التعديلات على ملفات التوضيح مطلوبة.
<$>

الخطوة ١ — استنساخ مستودع GitHub وتكوين المتغيرات البيئية

للبدء، انسخ مستودع DigitalOcean Kubernetes Cluster Monitoring على جهازك المحلي باستخدام git:

  1. git clone https://github.com/do-community/doks-monitoring.git

ثم، انتقل إلى المستودع:

  1. cd doks-monitoring

يجب أن ترى هيكل المجلدات التالي:

  1. ls
Output
LICENSE README.md changes.txt manifest

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

إذا كنت ترغب فقط في البدء بتشغيل الأمور، فابدأ بتعيين متغيرات البيئة APP_INSTANCE_NAME و NAMESPACE، والتي ستُستخدم لتكوين اسم فريد لمكونات الستاك وتكوين مساحة الأسماء التي سيتم نشر الستاك فيها:

  1. export APP_INSTANCE_NAME=sammy-cluster-monitoring
  2. export NAMESPACE=default

في هذا البرنامج التعليمي، نقوم بتعيين APP_INSTANCE_NAME إلى sammy-cluster-monitoring، الذي سيُضاف إلى جميع أسماء كائنات Kubernetes في ستاك المراقبة. يجب أن تقوم بتعويض بادئ وصفي فريد لستاك المراقبة الخاص بك. نقوم أيضًا بتعيين مساحة الأسماء إلى default. إذا كنت ترغب في نشر ستاك المراقبة في مساحة أسماء أخرى غير default، فتأكد من إنشائها أولاً في عنقودك:

  1. kubectl create namespace "$NAMESPACE"

يجب أن ترى الناتج التالي:

Output
namespace/sammy created

في هذه الحالة، تم تعيين متغير البيئة NAMESPACE إلى sammy. طوال بقية البرنامج التعليمي، سنفترض أن NAMESPACE تم تعيينها إلى default.

الآن، استخدم أمر base64 لتشفير كلمة مرور غرافانا بشكل base64. تأكد من استبدال كلمة مرور اختيارك بـ your_grafana_password:

  1. export GRAFANA_GENERATED_PASSWORD="$(echo -n 'your_grafana_password' | base64)"

إذا كنت تستخدم نظام macOS، يمكنك استبدال الأمر openssl base64 الذي يأتي مثبتًا افتراضيًا.

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

الخطوة 2 — إنشاء مجموعة المراقبة

مستودع البدء السريع لمراقبة Kubernetes في DigitalOcean يحتوي على ملفات تظهر المكونات التالية للمراقبة والاستخراج والتصوير:

  • Prometheus هو قاعدة بيانات لسلاسل الزمن وأداة للمراقبة تعمل من خلال استطلاع نقاط البيانات واستخراج ومعالجة البيانات التي تم الكشف عنها من خلال هذه النقاط. يتيح لك استعلام هذه البيانات باستخدام PromQL، لغة استعلام بيانات السلاسل الزمنية. سيتم نشر Prometheus في العقدة كـ StatefulSet بـ 2 نسخة تستخدم الأقراص المتواصلة مع تخزين الكتل في DigitalOcean. بالإضافة إلى ذلك، ستتم تخزين مجموعة معدلة مسبقًا من تنبيهات Prometheus وقواعد ووظائف كـ ConfigMap. لمعرفة المزيد عن هذه، انتقل إلى القسم Prometheus في تكوين مجموعة المراقبة.
  • Alertmanager، التي عادة ما يتم نشرها جنبا إلى جنب مع بروميثيوس، تشكل طبقة التنبيه في النظام، حيث تتعامل مع التنبيهات التي تم إنشاؤها بواسطة بروميثيوس وتقوم بتكرارها وتجميعها وتوجيهها إلى التكاملات مثل البريد الإلكتروني أو PagerDuty. سيتم تثبيت Alertmanager كـ StatefulSet بنسختين. لمعرفة المزيد حول Alertmanager، اطلع على التنبيه من وثائق بروميثيوس.
  • Grafana هو أداة لتصور البيانات وتحليلها تسمح لك ببناء لوحات معلومات ورسوم بيانية لبيانات القياس الخاصة بك. سيتم تثبيت Grafana كـ StatefulSet بنسخة واحدة. بالإضافة إلى ذلك، سيتم تخزين مجموعة مسبقة تم تكوينها من اللوحات التي تم إنشاؤها بواسطة kubernetes-mixin كـ ConfigMap.
  • kube-state-metrics هو وكيل إضافي يستمع إلى خادم API لكوبرنيتيس ويولد مقاييس حول حالة كائنات كوبرنيتيس مثل النشر والبودز. يتم تقديم هذه المقاييس على شكل نص عادي على نقاط نهاية HTTP ويتم استهلاكها بواسطة بروميثيوس. سيتم تثبيت kube-state-metrics كـ Deployment قابل للتوسع تلقائيًا بنسخة واحدة.
  • node-exporter، مصدر بروميثيوس الذي يعمل على عقد العقد ويوفر مقاييس نظام التشغيل والأجهزة مثل استخدام وحدة المعالجة المركزية والذاكرة إلى بروميثيوس. تتم تقديم هذه المقاييس أيضًا على شكل نص عادي على نقاط نهاية HTTP ويتم استهلاكها بواسطة بروميثيوس. سيتم تثبيت node-exporter كـ DaemonSet.

افتراضيًا، جنبًا إلى جنب مع جمع البيانات القياسية التي يتم إنشاؤها بواسطة node-exporter و kube-state-metrics، والمكونات الأخرى المذكورة أعلاه، سيتم تكوين Prometheus لجمع البيانات القياسية من المكونات التالية:

  • kube-apiserver، خادم API Kubernetes.
  • kubelet، وكيل العقدة الأساسي الذي يتفاعل مع kube-apiserver لإدارة البودات والحاويات على العقدة.
  • cAdvisor، وكيل العقدة الذي يكتشف الحاويات الجارية ويجمع بيانات استخدام وحدة المعالجة المركزية والذاكرة ونظام الملفات والشبكة الخاصة بها.

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

ابدأ باستخدام awk و envsubst لملء المتغيرات APP_INSTANCE_NAME، NAMESPACE، و GRAFANA_GENERATED_PASSWORD في ملفات التوضيح (المستندات) في المستودع. بعد استبدال قيم المتغيرات، ستتم دمج الملفات وحفظها في ملف توضيح رئيسي يسمى sammy-cluster-monitoring_manifest.yaml.

  1. awk 'FNR==1 {print "---"}{print}' manifest/* \
  2. | envsubst '$APP_INSTANCE_NAME $NAMESPACE $GRAFANA_GENERATED_PASSWORD' \
  3. > "${APP_INSTANCE_NAME}_manifest.yaml"

يجب عليك النظر في تخزين هذا الملف في التحكم بالإصدارات حتى تتمكن من تتبع التغييرات في كومة المراقبة والعودة إلى الإصدارات السابقة. إذا قمت بذلك، تأكد من تنظيف المتغير admin-password من الملف بحيث لا تقوم بفحص كلمة مرور Grafana الخاصة بك إلى التحكم بالإصدارات.

الآن بعد إنشاء ملف التوضيح الرئيسي، استخدم kubectl apply -f لتطبيق التوضيح وإنشاء الكومة في النطاق الذي قمت بتكوينه:

  1. kubectl apply -f "${APP_INSTANCE_NAME}_manifest.yaml" --namespace "${NAMESPACE}"

يجب أن ترى إخراجًا مشابهًا للتالي:

Output
serviceaccount/alertmanager created configmap/sammy-cluster-monitoring-alertmanager-config created service/sammy-cluster-monitoring-alertmanager-operated created service/sammy-cluster-monitoring-alertmanager created . . . clusterrolebinding.rbac.authorization.k8s.io/prometheus created configmap/sammy-cluster-monitoring-prometheus-config created service/sammy-cluster-monitoring-prometheus created statefulset.apps/sammy-cluster-monitoring-prometheus created

يمكنك تتبع تقدم نشر الكومة باستخدام kubectl get all. بمجرد أن تكون جميع مكونات الكومة RUNNING، يمكنك الوصول إلى لوحات القيادة المعدة مسبقًا في واجهة ويب Grafana.

الخطوة 3 — الوصول إلى Grafana واستكشاف بيانات القياس

تعرض الخدمة المصنفة لـ Grafana الـ Service كـ ClusterIP، مما يعني أنها متاحة فقط عبر عنوان IP داخلي للعنقود. للوصول إلى Grafana خارج عنقود Kubernetes الخاص بك، يمكنك استخدام kubectl patch لتحديث الخدمة في المكان إلى نوع يواجه الجمهور مثل NodePort أو LoadBalancer، أو استخدام kubectl port-forward لتوجيه منفذ محلي إلى منفذ Pod Grafana. في هذا البرنامج التعليمي، سنقوم بتوجيه المنافذ، لذا يمكنك تخطي إلى توجيه منفذ محلي للوصول إلى خدمة Grafana. يتم تضمين القسم التالي حول تعريض Grafana بشكل خارجي لأغراض الإشارة.

تعريض خدمة Grafana باستخدام موازن الحمل (اختياري)

إذا كنت ترغب في إنشاء موازن حمل DigitalOcean لـ Grafana بعنوان IP العام الخارجي، استخدم kubectl patch لتحديث الخدمة الحالية لـ Grafana في المكان إلى نوع الخدمة LoadBalancer:

  1. kubectl patch svc "$APP_INSTANCE_NAME-grafana" \
  2. --namespace "$NAMESPACE" \
  3. -p '{"spec": {"type": "LoadBalancer"}}'

أمر patch في kubectl يسمح لك بتحديث كائنات Kubernetes في المكان لإجراء تغييرات دون الحاجة إلى إعادة نشر الكائنات. يمكنك أيضًا تعديل ملف التخطيط الرئيسي مباشرةً، وإضافة معلمة type: LoadBalancer إلى مواصفات خدمة Grafana. لمعرفة المزيد عن kubectl patch وأنواع خدمات Kubernetes، يمكنك الاطلاع على مصادر تحديث كائنات واجهة برمجة التطبيقات في المكان باستخدام kubectl patch و خدمات في وثائق Kubernetes الرسمية.

بعد تشغيل الأمر أعلاه، يجب أن ترى ما يلي:

Output
service/sammy-cluster-monitoring-grafana patched

قد يستغرق إنشاء الموازن الحمل وتعيينه عنوان IP عامًا عدة دقائق. يمكنك تتبع تقدمه باستخدام الأمر التالي مع العلم -w لمراقبة التغييرات:

  1. kubectl get service "$APP_INSTANCE_NAME-grafana" -w

بمجرد أن يتم إنشاء موازن الحمل في DigitalOcean وتعيين عنوان IP خارجي له، يمكنك الحصول على عنوانه الخارجي باستخدام الأوامر التالية:

  1. SERVICE_IP=$(kubectl get svc $APP_INSTANCE_NAME-grafana \
  2. --namespace $NAMESPACE \
  3. --output jsonpath='{.status.loadBalancer.ingress[0].ip}')
  4. echo "http://${SERVICE_IP}/"

يمكنك الآن الوصول إلى واجهة المستخدم الرسومية لـ Grafana عن طريق الانتقال إلى http://SERVICE_IP/.

توجيه منفذ محلي للوصول إلى خدمة Grafana

إذا لم ترغب في تعريض خدمة Grafana للخارج، يمكنك أيضًا توجيه المنفذ المحلي 3000 مباشرة إلى كتلة Grafana باستخدام kubectl port-forward.

  1. kubectl port-forward --namespace ${NAMESPACE} ${APP_INSTANCE_NAME}-grafana-0 3000

يجب عليك أن ترى الناتج التالي:

Output
Forwarding from 127.0.0.1:3000 -> 3000 Forwarding from [::1]:3000 -> 3000

سيقوم هذا بتوجيه المنفذ المحلي 3000 إلى containerPort 3000 من Pod Grafana sammy-cluster-monitoring-grafana-0. لمعرفة المزيد حول توجيه المنافذ إلى عنقود Kubernetes، استشر استخدام توجيه المنافذ للوصول إلى التطبيقات في العنقود.

قم بزيارة http://localhost:3000 في متصفح الويب الخاص بك. يجب أن ترى صفحة تسجيل الدخول إلى Grafana التالية:

لتسجيل الدخول، استخدم اسم المستخدم الافتراضي admin (إذا لم تقم بتعديل المعلمة admin-user)، وكلمة المرور التي قمت بتكوينها في الخطوة 1.

سيتم توجيهك إلى لوحة التحكم الرئيسية التالية:

في شريط التنقل على اليسار، حدد زر لوحات التحكم، ثم انقر فوق إدارة:

سيتم توجيهك إلى واجهة إدارة لوحة التحكم التالية، التي تعرض اللوحات التي تم تكوينها في ملف التكوين dashboards-configmap.yaml:

تم إنشاء هذه اللوحات الإحصائية بواسطة kubernetes-mixin، وهو مشروع مفتوح المصدر يسمح لك بإنشاء مجموعة موحدة من لوحات مراقبة العنقود وتنبيهات Prometheus. للمزيد من المعلومات، يرجى الاطلاع على مستودع GitHub لمكتبة Kubernetes-mixin.

انقر على لوحة Kubernetes / Nodes، التي تُظهر استخدام وحدة المعالجة المركزية، والذاكرة، والقرص، وشبكة معينة للعقدة المعطاة:

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

في الخطوة التالية، سنتبع عملية مماثلة للاتصال بنظام مراقبة Prometheus واستكشافه.

الخطوة 4 — الوصول إلى بروميثيوس ومدير التنبيهات

للاتصال بـ تجاويف بروميثيوس ، يمكننا استخدام kubectl port-forward لتوجيه منفذ محلي. إذا انتهيت من استكشاف غرافانا ، يمكنك إغلاق نفق التوجيه عن طريق الضغط على CTRL-C. بديلًا عن ذلك ، يمكنك فتح قذيفة جديدة وإنشاء اتصال جديد لتوجيه المنفذ.

ابدأ بعرض الأطباق الجارية في مساحة الأسماء الافتراضية default:

  1. kubectl get pod -n default

يجب أن ترى الأطباق التالية:

Output
sammy-cluster-monitoring-alertmanager-0 1/1 Running 0 17m sammy-cluster-monitoring-alertmanager-1 1/1 Running 0 15m sammy-cluster-monitoring-grafana-0 1/1 Running 0 16m sammy-cluster-monitoring-kube-state-metrics-d68bb884-gmgxt 2/2 Running 0 16m sammy-cluster-monitoring-node-exporter-7hvb7 1/1 Running 0 16m sammy-cluster-monitoring-node-exporter-c2rvj 1/1 Running 0 16m sammy-cluster-monitoring-node-exporter-w8j74 1/1 Running 0 16m sammy-cluster-monitoring-prometheus-0 1/1 Running 0 16m sammy-cluster-monitoring-prometheus-1 1/1 Running 0 16m

سنقوم بتوجيه المنفذ المحلي 9090 إلى المنفذ 9090 للـ sammy-cluster-monitoring-prometheus-0 القائمة:

  1. kubectl port-forward --namespace ${NAMESPACE} sammy-cluster-monitoring-prometheus-0 9090

يجب أن ترى الإخراج التالي:

Output
Forwarding from 127.0.0.1:9090 -> 9090 Forwarding from [::1]:9090 -> 9090

هذا يشير إلى أن المنفذ المحلي 9090 يتم توجيهه بنجاح إلى تجاويف بروميثيوس.

قم بزيارة http://localhost:9090 في متصفح الويب الخاص بك. يجب أن ترى صفحة بروميثيوس الرسم البياني التالية:

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

في حقل التعبير، اكتب kubelet_node_name واضغط تنفيذ. يجب أن ترى قائمة من سلاسل زمنية مع المقياس kubelet_node_name الذي يُبلِغ عن العُقد في عُقدة Kubernetes الخاصة بك. يمكنك أن ترى أي عُقدة أنشأت المقياس وأي وظيفة قامت بجمع المقياس في تسميات المقياس:

وأخيرًا، في شريط التنقل العلوي، انقر فوق الحالة ثم الأهداف لرؤية قائمة الأهداف التي تم تكوين Prometheus لجمعها. يجب أن ترى قائمة من الأهداف تتوافق مع قائمة نقاط المراقبة الموصوفة في بداية الخطوة 2.

لمعرفة المزيد حول Prometheus وكيفية استعلام مقاييس عقدتك، استشر وثائق بروميثيوس الرسمية.

للاتصال بـ Alertmanager، الذي يدير التنبيهات التي تم إنشاؤها بواسطة Prometheus، سنتبع عملية مماثلة لما استخدمناه للاتصال بـ Prometheus. بشكل عام، يمكنك استكشاف تنبيهات Alertmanager عن طريق النقر فوق التنبيهات في شريط التنقل العلوي لـ Prometheus.

للاتصال بأجهزة الـ Alertmanager، سنستخدم مرة أخرى kubectl port-forward لإعادة توجيه منفذ محلي. إذا كنت قد انتهيت من استكشاف Prometheus، يمكنك إغلاق نفق إعادة التوجيه بالضغط على CTRL-C أو فتح محطة جديدة لإنشاء اتصال جديد.

سنقوم بتوجيه منفذ محلي 9093 إلى منفذ 9093 من Pod sammy-cluster-monitoring-alertmanager-0:

  1. kubectl port-forward --namespace ${NAMESPACE} sammy-cluster-monitoring-alertmanager-0 9093

يجب أن ترى الناتج التالي:

Output
Forwarding from 127.0.0.1:9093 -> 9093 Forwarding from [::1]:9093 -> 9093

يشير هذا إلى أنه يتم توجيه المنفذ المحلي 9093 بنجاح إلى Pod Alertmanager.

قم بزيارة http://localhost:9093 في متصفح الويب الخاص بك. يجب أن ترى صفحة Alerts Alertmanager التالية:

من هنا، يمكنك استكشاف إطلاق التنبيهات وكتمها اختياريًا. لمعرفة المزيد حول Alertmanager، استشر وثائق Alertmanager الرسمية.

في الخطوة التالية، ستتعلم كيفية تكوين وتوسيع بعض مكونات كومة الرصد اختياريًا.

الخطوة 6 — تكوين كومة الرصد (اختياري)

يمكن تعديل الملفات المدرجة في مستودع DigitalOcean Kubernetes Cluster Monitoring Quickstart لاستخدام صور حاويات مختلفة، وأعداد مختلفة من نسخ Pod، ومنافذ مختلفة، وملفات تكوين مخصصة.

في هذه الخطوة، سنقدم نظرة عامة عالية المستوى على غرض كل ملف، ثم نوضح كيفية توسيع Prometheus إلى 3 نسخ بتعديل ملف التكوين الرئيسي.

للبدء، انتقل إلى الدليل الفرعي manifests في المستودع، ثم قم بسرد محتويات الدليل:

  1. cd manifest
  2. ls
Output
alertmanager-0serviceaccount.yaml alertmanager-configmap.yaml alertmanager-operated-service.yaml alertmanager-service.yaml . . . node-exporter-ds.yaml prometheus-0serviceaccount.yaml prometheus-configmap.yaml prometheus-service.yaml prometheus-statefulset.yaml

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

Alertmanager

  • alertmanager-0serviceaccount.yaml: حساب خدمة Alertmanager، المستخدم لإعطاء العُقد الخاصة بـ Alertmanager هوية Kubernetes. لمعرفة المزيد حول حسابات الخدمة، استشر تكوين حسابات الخدمة للعُقد.

  • alertmanager-configmap.yaml: تحتوي ConfigMap على ملف تكوين Alertmanager الأساسي، يُسمى alertmanager.yml. تكوين Alertmanager يتخطى نطاق هذا البرنامج التعليمي، ولكن يمكنك معرفة المزيد من خلال الاطلاع على القسم التكوين من وثائق Alertmanager.

  • alertmanager-operated-service.yaml: خدمة Alertmanager mesh، والتي تُستخدم لتوجيه الطلبات بين حاويات Alertmanager في التكوين الحالي ذو العالية التوفر بعدد 2 نُسخة.

  • alertmanager-service.yaml: الخدمة web لـ Alertmanager، والتي تستخدم للوصول إلى واجهة الويب لـ Alertmanager، والتي قد قمت بها في الخطوة السابقة.

  • alertmanager-statefulset.yaml: Alertmanager StatefulSet، مُكوَّنة بـ 2 نسخة.

Grafana

  • dashboards-configmap.yaml: تحتوي على ConfigMap تحتوي على لوحات المراقبة المُعدَّة مُسبقًا لمراقبة Grafana بتنسيق JSON. إن إنشاء مجموعة جديدة من اللوحات والتنبيهات من البداية يتجاوز نطاق هذا البرنامج التعليمي، ولكن يمكنك للمزيد من المعلومات الاطلاع على مستودع الـGitHub لـkubernetes-mixin.

  • grafana-0serviceaccount.yaml: حساب خدمة Grafana.

  • grafana-configmap.yaml: مجموعة تهيئة تحتوي على مجموعة افتراضية من ملفات تكوين Grafana الحد الأدنى.

  • grafana-secret.yaml: سر Kubernetes يحتوي على مستخدم وكلمة مرور مسؤول Grafana. لمعرفة المزيد حول أسرار Kubernetes، اطلع على الأسرار.

  • grafana-service.yaml: البيان الصادر يحدد خدمة Grafana.

  • grafana-statefulset.yaml: حالة تكرار جرافانا StatefulSet ، مضبوطة بنسخة واحدة، والتي لا يمكن توسيعها. توسيع جرافانا خارج نطاق هذا البرنامج التعليمي. لتعلم كيفية إنشاء إعداد جرافانا متوفر بشكل عالٍ ، يمكنك الاطلاع على كيفية إعداد جرافانا لتوافر عال من مستندات جرافانا الرسمية.

kube-state-metrics

node-exporter

  • node-exporter-0serviceaccount.yaml: حساب الخدمة لـ node-exporter.

  • node-exporter-ds.yaml: تعريف ديمون الـ node-exporter. نظرًا لأن node-exporter هو ديمون مجموعة، يتم تشغيل Pod لـ node-exporter على كل عقدة في المجموعة.

###Prometheus

  • prometheus-0serviceaccount.yaml: حساب الخدمة، ClusterRole و ClusterRoleBinding لـ Prometheus.

  • prometheus-configmap.yaml: ConfigMap يحتوي على ثلاث ملفات تكوين:

    • alerts.yaml: يحتوي على مجموعة معدة مسبقًا من التنبيهات التي تم إنشاؤها بواسطة kubernetes-mixin (التي تم استخدامها أيضًا لإنشاء لوحات القيادة Grafana). لمعرفة المزيد حول تكوين قواعد التنبيهات، استشر قواعد التنبيهات من مستندات Prometheus.
    • prometheus.yaml: ملف تكوين Prometheus الرئيسي. تم تكوين Prometheus مسبقًا للخدمة على جميع المكونات المذكورة في بداية الخطوة 2. تكوين Prometheus يتجاوز نطاق هذه المقالة، ولكن لمعرفة المزيد، يمكنك الاطلاع على التكوين من مستندات Prometheus الرسمية.
    • rules.yaml: مجموعة من قواعد تسجيل Prometheus التي تمكّن Prometheus من حساب التعبيرات الشائعة المطلوبة بشكل متكرر أو المكلفة حسابياً، وحفظ نتائجها كمجموعة جديدة من سلاسل الزمن. تم إنشاؤها أيضًا بواسطة kubernetes-mixin، وتجاوز تكوينها نطاق هذه المقالة. لمعرفة المزيد، يمكنك الاطلاع على قواعد التسجيل من وثائق Prometheus الرسمية.
  • prometheus-service.yaml: الخدمة التي تكشف عن مجموعة حالة بروميثيوس.

  • prometheus-statefulset.yaml: مجموعة حالة بروميثيوس، مُعدة بـ 2 نسخة. يمكن تغيير هذا المعلم حسب احتياجاتك.

مثال: توسيع بروميثيوس

لتوضيح كيفية تعديل مجموعة المراقبة، سنقوم بتوسيع عدد نسخ بروميثيوس من 2 إلى 3.

افتح ملف المنشأ الرئيسي sammy-cluster-monitoring_manifest.yaml باستخدام محرر النص الخاص بك:

  1. nano sammy-cluster-monitoring_manifest.yaml

انتقل إلى قسم مجموعة حالة بروميثيوس في المنشأ:

Output
. . . apiVersion: apps/v1beta2 kind: StatefulSet metadata: name: sammy-cluster-monitoring-prometheus labels: &Labels k8s-app: prometheus app.kubernetes.io/name: sammy-cluster-monitoring app.kubernetes.io/component: prometheus spec: serviceName: "sammy-cluster-monitoring-prometheus" replicas: 2 podManagementPolicy: "Parallel" updateStrategy: type: "RollingUpdate" selector: matchLabels: *Labels template: metadata: labels: *Labels spec: . . .

قم بتغيير عدد النسخ من 2 إلى 3:

Output
. . . apiVersion: apps/v1beta2 kind: StatefulSet metadata: name: sammy-cluster-monitoring-prometheus labels: &Labels k8s-app: prometheus app.kubernetes.io/name: sammy-cluster-monitoring app.kubernetes.io/component: prometheus spec: serviceName: "sammy-cluster-monitoring-prometheus" replicas: 3 podManagementPolicy: "Parallel" updateStrategy: type: "RollingUpdate" selector: matchLabels: *Labels template: metadata: labels: *Labels spec: . . .

عند الانتهاء، احفظ وأغلق الملف.

قم بتطبيق التغييرات باستخدام kubectl apply -f:

  1. kubectl apply -f sammy-cluster-monitoring_manifest.yaml --namespace default

يمكنك تتبع التقدم باستخدام kubectl get pods. باستخدام نفس التقنية، يمكنك تحديث العديد من معلمات Kubernetes والكثير من التكوين لهذه العملية المراقبة.

الختام

في هذا البرنامج التعليمي، قمت بتثبيت مكدس المراقبة Prometheus و Grafana و Alertmanager في مجموعة DigitalOcean Kubernetes الخاصة بك بمجموعة قياسية من لوحات القيادة وقواعد Prometheus والتنبيهات.

يمكنك أيضًا اختيار نشر هذه المكدسة للمراقبة باستخدام إدارة الحزم Kubernetes Helm. لمعرفة المزيد، استشر كيفية إعداد مراقبة مجموعة DigitalOcean Kubernetes مع Helm و Prometheus. طريقة بديلة للحصول على مكدس مماثل يعمل هي استخدام DigitalOcean Marketplace حل Kubernetes Monitoring Stack، حاليًا في مرحلة البيتا.

مستودع بدء سريع لرصد عنقود Kubernetes في DigitalOcean مستند بشكل كبير إلى وتعديل من حل Prometheus الخاص بمنصة Google Cloud Platform’s click-to-deploy. يمكن العثور على قائمة كاملة بالتعديلات والتغييرات عن المستودع الأصلي في ملف changes.md في مستودع بدء سريع.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-kubernetes-monitoring-stack-with-prometheus-grafana-and-alertmanager-on-digitalocean