يتناول هذا الدليل عملية المشغّل نفسها (مدير وحدة التحكم). أما مقاييس ClickHouse server (الاستعلامات، والأجزاء، وتأخر النسخ المتماثل)، فاستخدم نقطة نهاية Prometheus في ClickHouse لجمعها بشكل منفصل.
نقاط النهاية
تكون نقطة نهاية المقاييس معطّلة افتراضيًا عند تشغيل الملف التنفيذي للمشغّل مباشرةً (
--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
Service لمنفذ المقاييس، ويمكنه اختياريًا أيضًا إنشاء ServiceMonitor لـ prometheus-operator.
تكون نقطة نهاية المقاييس نفسها مفعّلة افتراضيًا (metrics.enable: true، والمنفذ 8080، وتُخدَّم عبر HTTPS باستخدام metrics.secure: true). وعادةً ما يكون الإعداد الوحيد الذي تحتاج إلى تغييره هو prometheus.enable لكي ينشئ الـ chart مورد ServiceMonitor نيابةً عنك:
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 على كل عملية جمع للمقاييس. يجب أن تقوم أدوات الجلب بما يلي:
- تقديم رمز Bearer صالح لـ Kubernetes.
- أن تنتمي إلى ServiceAccount مرتبط بدور على مستوى المجموعة يمنح إذن
getعلى عنوان URL غير المرتبط بمورد/metrics.
مرجع ServiceMonitor
prometheus.enable: true:
tlsConfig.insecureSkipVerify: true واعتمد فقط على المصادقة باستخدام bearer token — إذ ينفّذ الـ chart ذلك بالفعل عندما تكون القيمة certManager.enable: false.
مثال Prometheus مستقل
examples/prometheus_secure_metrics_scraper.yaml. ويُنشئ هذا المثال ServiceAccount، وRBAC اللازم، وPrometheus CR يختار ServiceMonitor الخاص بالمشغّل.
نقاط نهاية مسبار الصحة
يُسجَّل كلا نقطتي النهاية باستخدام فحص Ping بسيط واحد (
healthz.Ping من sigs.k8s.io/controller-runtime). لذلك، فإن فشل المسبار يعني “أن عملية manager لا تخدم HTTP على :8081” — وليس “أن وحدات التحكم غير سليمة”. لاكتشاف المشكلات على مستوى وحدات التحكم، استخدم مقاييس المواءمة بدلًا من ذلك.
تُخدَّم كلتا نقطتي النهاية على المنفذ 8081 افتراضيًا. وهما موصولتان بكائن النشر كما يلي:
unable to start manager، أو حالات فشل RBAC، أو أخطاء cache did not sync.
فهرس المقاييس
controller-runtime وclient-go الأساسيتان. وفيما يلي السلاسل الأكثر فائدة، مُجمَّعة حسب الغرض:
نشاط المطابقة
تُشتق التسمية
controller في controller-runtime من نوع المورد المسجَّل باستخدام For(...). في الشيفرة الحالية ضمن internal/controller/clickhouse وinternal/controller/keeper، تكون النتيجة clickhousecluster وkeepercluster على التوالي. إذا كنت قد خصّصت المُشغِّل، فتحقّق من ذلك عبر إجراء جمع لمرة واحدة لنقطة النهاية /metrics.
قائمة انتظار العمل
يحمل الوسمان
name وcontroller القيمة نفسها (اسم وحدة التحكم).
حركة مرور خادم واجهة برمجة التطبيقات
انتخاب القائد
يُفعِّل مخطط Helm الخيار
--leader-elect افتراضيًا، لذلك يظهر هذا المقياس في عمليات التثبيت القياسية باستخدام Helm. وعند تشغيل الملف التنفيذي مباشرةً من دون هذا الخيار، لا يكون هذا المقياس موجودًا.
بيئة التشغيل
go_goroutines, go_memstats_*, process_cpu_seconds_total, process_resident_memory_bytes، وما إلى ذلك.
استعلامات PromQL المفيدة
لمحة عامة عن الحالة الصحية
كشف التراكم
تقييد المعدل والضغط على واجهة برمجة التطبيقات
حالة العقدة القائدة (نشر عالي التوفّر)
التنبيهات المقترحة
التحقق من الإعداد
clickhouse-operator-system: