الفصل 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