انتقل إلى المحتوى الرئيسي

الفصل 11.1 - مراقبة Kubernetes

أهداف التعلم​

في نهاية هذا الفصل، ستكون قادرًا على:

  • فهم أهمية المراقبة في Kubernetes
  • تثبيت Prometheus لجمع المقاييس
  • تكوين Grafana للتصور
  • فهم المقاييس الأساسية لـ Kubernetes
  • تكوين ServiceMonitors
  • إنشاء لوحات تحكم مخصصة

مقدمة​

المراقبة ضرورية لفهم حالة الصحة وأداء عنقود Kubernetes وتطبيقاتها.


أدوات المراقبة​

Prometheus​

نظام مراقبة وإنذار مفتوح المصدر يجمع ويخزن المقاييس في شكل سلاسل زمنية.

الخصائص:

  • جمع المقاييس عبر السحب
  • تخزين فعال
  • لغة استعلام PromQL
  • تكامل أصلي مع Kubernetes

Grafana​

منصة تصور تتيح إنشاء لوحات تحكم تفاعلية من مقاييس Prometheus.

الخصائص:

  • لوحات تحكم قابلة للتخصيص
  • إنذارات بصرية
  • دعم لمصادر بيانات متعددة
  • مشاركة وتعاون

تثبيت Prometheus​

عبر Helm​

# إضافة المستودع
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

# تثبيت Prometheus
helm install prometheus prometheus-community/kube-prometheus-stack \
--namespace monitoring \
--create-namespace

التحقق​

# عرض الـ Pods
kubectl get pods -n monitoring

# عرض الخدمات
kubectl get svc -n monitoring

# الوصول إلى Prometheus
kubectl port-forward -n monitoring svc/prometheus-kube-prometheus-prometheus 9090:9090

المقاييس المهمة​

مقاييس المجموعة​

  • CPU: استخدام CPU للعقد والـ Pods
  • الذاكرة: استخدام الذاكرة للعقد والـ Pods
  • الشبكة: حركة المرور الشبكية الواردة/الصادرة
  • التخزين: استخدام التخزين

مقاييس التطبيق​

  • طلبات HTTP: معدل الطلبات، التأخير، الأخطاء
  • اتصالات قاعدة البيانات: تجمع الاتصالات، وقت الاستجابة
  • الطابور: حجم الطوابير، وقت المعالجة

مقاييس Kubernetes​

  • Pods: الحالة، إعادة التشغيل، جاهز/غير جاهز
  • التوزيعات: النسخ المطلوبة مقابل الحالية
  • الخدمات: النقاط النهائية المتاحة

ServiceMonitors​

تسمح ServiceMonitors لـ Prometheus باكتشاف وجمع مقاييس الخدمات.

مثال: ServiceMonitor​

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: my-app-metrics
namespace: default
spec:
selector:
matchLabels:
app: my-app
endpoints:
- port: metrics
interval: 30s
path: /metrics

خدمة مع مقاييس​

apiVersion: v1
kind: Service
metadata:
name: my-app-service
labels:
app: my-app
spec:
selector:
app: my-app
ports:
- name: http
port: 8080
- name: metrics
port: 9090

تثبيت Grafana​

عبر Helm (مضمن مع kube-prometheus-stack)​

Grafana مضمن في kube-prometheus-stack.

الوصول​

# Port-forward
kubectl port-forward -n monitoring svc/prometheus-grafana 3000:80

# بيانات الاعتماد الافتراضية
# اسم المستخدم: admin
# كلمة المرور: prom-operator

لوحات التحكم المحددة مسبقًا​

  • مراقبة عنقود Kubernetes
  • Node Exporter
  • مراقبة Pod
  • إلخ.

إنشاء لوحات التحكم​

لوحة تحكم أساسية​

{
"dashboard": {
"title": "My App Dashboard",
"panels": [
{
"title": "Request Rate",
"targets": [
{
"expr": "rate(http_requests_total[5m])",
"legendFormat": "{{method}}"
}
]
},
{
"title": "Error Rate",
"targets": [
{
"expr": "rate(http_requests_total{status=~\"5..\"}[5m])"
}
]
}
]
}
}

PromQL (لغة استعلام Prometheus)​

استعلامات أساسية​

# معدل الطلبات
rate(http_requests_total[5m])

# مجموع حسب التسمية
sum(rate(http_requests_total[5m])) by (method)

# نسبة الأخطاء
sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) * 100

# استخدام CPU
100 - (avg(rate(container_cpu_usage_seconds_total[5m])) * 100)

أوامر مفيدة​

Prometheus​

# الوصول إلى Prometheus
kubectl port-forward -n monitoring svc/prometheus-kube-prometheus-prometheus 9090:9090

# عرض الأهداف
# في واجهة Prometheus: Status > Targets

Grafana​

# الوصول إلى Grafana
kubectl port-forward -n monitoring svc/prometheus-grafana 3000:80

# استيراد لوحة تحكم
# في Grafana: + > Import > ID لوحة التحكم

أفضل الممارسات​

1. المقاييس الأساسية​

مراقبة المقاييس الحرجة: CPU، الذاكرة، التأخير، الأخطاء.

2. الاحتفاظ​

تكوين احتفاظ مناسب للمقاييس.

3. لوحات التحكم​

إنشاء لوحات تحكم لكل تطبيق/خدمة.

4. الإنذارات​

تكوين إنذارات للمقاييس الحرجة.

5. الأداء​

تجنب جمع البيانات بشكل متكرر لتجنب التحميل الزائد.


ملخص​

في هذا الفصل، تعلمت:

المراقبة: ضرورية لصحة المجموعة
Prometheus: جمع وتخزين المقاييس
Grafana: التصور باستخدام لوحات التحكم
المقاييس: المجموعة، التطبيق، Kubernetes
ServiceMonitors: اكتشاف تلقائي للمقاييس
PromQL: لغة استعلام للمقاييس
لوحات التحكم: تصور قابل للتخصيص
أفضل الممارسات: المقاييس الأساسية، الاحتفاظ، الإنذارات


الخطوات التالية​

الفصل 11.2: السجلات
الفصل 11.3: الإنذارات
المختبر 11.1: تثبيت Prometheus وGrafana


تم إنشاء الفصل في: ديسمبر 2024