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

نقاط النهاية

تعرض عملية المشغّل نقطتي نهاية HTTP داخل جراب manager: تكون نقطة نهاية المقاييس معطّلة افتراضيًا عند تشغيل الملف التنفيذي للمشغّل مباشرةً (--metrics-bind-address=0). ويُفعّلها مخطط Helm باستخدام metrics.enable: true و metrics.port: 8080. تكون نقطة نهاية مسبار الصحة مفعّلة دائمًا؛ إذ يربط قالب النشر /healthz و /readyz بمسباري الحيوية والجاهزية للجراب على المنفذ 8081.

خيارات الملف التنفيذي للمشغّل

خيارات manager ذات الصلة (المعرّفة في cmd/main.go):
إن اصطلاح 8443 ‏(HTTPS) / 8080 ‏(HTTP) في نص المساعدة الخاص بالخيار هو مجرد تلميح. يقدّم مخطط Helm بروتوكول HTTPS على 8080 لأنه يضبط كلًا من metrics.port: 8080 وmetrics.secure: true. لا يوجد اكتشاف للوضع بناءً على المنفذ — فالخيار --metrics-secure هو الذي يحدد استخدام HTTPS أو HTTP.

تفعيل المقاييس عبر Helm

ينشئ الـ chart بالفعل مورد Service لمنفذ المقاييس، ويمكنه اختياريًا أيضًا إنشاء ServiceMonitor لـ prometheus-operator. تكون نقطة نهاية المقاييس نفسها مفعّلة افتراضيًا (metrics.enable: true، والمنفذ 8080، وتُخدَّم عبر HTTPS باستخدام metrics.secure: true). وعادةً ما يكون الإعداد الوحيد الذي تحتاج إلى تغييره هو prometheus.enable لكي ينشئ الـ chart مورد ServiceMonitor نيابةً عنك:
إذا كنت لا تستخدم cert-manager، فعيّن أيضًا certManager.enable: false، وسيقوم ServiceMonitor بجمع المقاييس باستخدام insecureSkipVerify: true، مع الاعتماد فقط على المصادقة عبر bearer-token. المجموعة الكاملة من القيم الافتراضية المتعلقة بالمقاييس هي:
تطبيق:
بعد التثبيت، ينشئ chart ما يلي:
  • Service/<resource-prefix>-metrics-service — يعرض المنفذ 8080 (HTTPS عندما تكون metrics.secure: true).
  • ServiceMonitor/<resource-prefix>-controller-manager-metrics-monitor — عند تعيين prometheus.enable: true.
  • ClusterRole/<resource-prefix>-metrics-reader — عنوان URL غير خاص بمورد /metrics مع الفعل get.

تأمين نقطة نهاية المقاييس

عندما تكون metrics.secure: true، يفرض خادم المقاييس استخدام TLS و المصادقة/التخويل في Kubernetes على كل عملية جمع للمقاييس. يجب أن تقوم أدوات الجلب بما يلي:
  1. تقديم رمز Bearer صالح لـ Kubernetes.
  2. أن تنتمي إلى ServiceAccount مرتبط بدور على مستوى المجموعة يمنح إذن get على عنوان URL غير المرتبط بمورد /metrics.
ويوفّر المخطط دورًا على مستوى المجموعة من هذا النوع:
اربطه بـ ServiceAccount الذي يستخدمه جامع المقاييس لديك (عادةً Prometheus):
إذا ظهرت لك 401 Unauthorized أو 403 Forbidden من نقطة نهاية المقاييس، فهذا يعني أن الجامع يستخدم HTTPS لكنه يفتقر إلى Bearer token خاص بـ Kubernetes أو غير مخوّل لاستخدامه، أو أن حساب الخدمة الخاص به يفتقر إلى الربط المذكور أعلاه. لا يُنصح بتعطيل الأمان عبر تعيين metrics.secure: false في العناقيد المشتركة، لأن أي شخص لديه وصول شبكي إلى الـ pod يمكنه جمع المقاييس من نقطة النهاية.

مرجع ServiceMonitor

يعرض Helm chart مورد ServiceMonitor بهذا الشكل عندما تكون prometheus.enable: true:
إذا كان مثيل Prometheus لديك لا يشغّل cert-manager، فاضبط tlsConfig.insecureSkipVerify: true واعتمد فقط على المصادقة باستخدام bearer token — إذ ينفّذ الـ chart ذلك بالفعل عندما تكون القيمة certManager.enable: false.

مثال Prometheus مستقل

إذا كنت لا تستخدم kube-prometheus-stack، فإن المستودع يتضمّن مثالًا متكاملًا في examples/prometheus_secure_metrics_scraper.yaml. ويُنشئ هذا المثال ServiceAccount، وRBAC اللازم، وPrometheus CR يختار ServiceMonitor الخاص بالمشغّل.

نقاط نهاية مسبار الصحة

يُسجَّل كلا نقطتي النهاية باستخدام فحص Ping بسيط واحد (healthz.Ping من sigs.k8s.io/controller-runtime). لذلك، فإن فشل المسبار يعني “أن عملية manager لا تخدم HTTP على :8081” — وليس “أن وحدات التحكم غير سليمة”. لاكتشاف المشكلات على مستوى وحدات التحكم، استخدم مقاييس المواءمة بدلًا من ذلك. تُخدَّم كلتا نقطتي النهاية على المنفذ 8081 افتراضيًا. وهما موصولتان بكائن النشر كما يلي:
عادةً ما يعني تكرار فشل الـ probe أن خادم الـ probe نفسه لم يبدأ العمل أصلًا — على سبيل المثال، قد يكون الـ manager قد خرج مبكرًا أثناء بدء التشغيل. تحقّق من سجلات الـ manager بحثًا عن unable to start manager، أو حالات فشل RBAC، أو أخطاء cache did not sync.

فهرس المقاييس

لا يسجّل المُشغِّل أي مُجمِّعات Prometheus مخصّصة. كل ما يلي تُتيحه مكتبَتا controller-runtime وclient-go الأساسيتان. وفيما يلي السلاسل الأكثر فائدة، مُجمَّعة حسب الغرض:

نشاط المطابقة

تُشتق التسمية controller في controller-runtime من نوع المورد المسجَّل باستخدام For(...). في الشيفرة الحالية ضمن internal/controller/clickhouse وinternal/controller/keeper، تكون النتيجة clickhousecluster وkeepercluster على التوالي. إذا كنت قد خصّصت المُشغِّل، فتحقّق من ذلك عبر إجراء جمع لمرة واحدة لنقطة النهاية /metrics.

قائمة انتظار العمل

يحمل الوسمان name وcontroller القيمة نفسها (اسم وحدة التحكم).

حركة مرور خادم واجهة برمجة التطبيقات

انتخاب القائد

يُفعِّل مخطط Helm الخيار --leader-elect افتراضيًا، لذلك يظهر هذا المقياس في عمليات التثبيت القياسية باستخدام Helm. وعند تشغيل الملف التنفيذي مباشرةً من دون هذا الخيار، لا يكون هذا المقياس موجودًا.

بيئة التشغيل

مجمّعات عملية Go القياسية ومجمّعات بيئة التشغيل — go_goroutines, go_memstats_*, process_cpu_seconds_total, process_resident_memory_bytes، وما إلى ذلك.

استعلامات PromQL المفيدة

لمحة عامة عن الحالة الصحية

كشف التراكم

تقييد المعدل والضغط على واجهة برمجة التطبيقات

حالة العقدة القائدة (نشر عالي التوفّر)

التنبيهات المقترحة

نقطة انطلاق لـ PrometheusRule (اضبط العتبات بما يناسب بيئتك):
لا تكون القاعدة الأخيرة ذات معنى إلا عند تمكين آلية انتخاب القائد.

التحقق من الإعداد

فحص سريع شامل، على افتراض أن الحزمة قد ثُبِّتت في clickhouse-operator-system:
إذا أعادت عملية الجمع المقاييس بتنسيق عرض Prometheus، فإن نقطة النهاية وRBAC موصولان على نحو صحيح.
  • التثبيت — قيم Helm ذات الصلة بالمراقبة.
  • الإعداد — إعدادات TLS المشتركة مع خادم المقاييس.
آخر تعديل في ٢٩ يونيو ٢٠٢٦