مقدمة
المؤسسات التي تعتمد بشكل متزايد على Kubernetes لإدارة حاوياتها بحاجة إلى حل لمراقبة صحة نظامها الموزع. لهذا السبب، تأتي Prometheus – أداة مفتوحة المصدر قوية لمراقبة تطبيقات الحاويات في فضاء K8s الخاص بك.
في هذا البرنامج التعليمي، ستتعلم كيفية تثبيت وتكوين حزمة بروميثيوس لمراقبة جميع البودات من عنقود DOKS الخاص بك، بالإضافة إلى مقاييس حالة عنقود Kubernetes. بعد ذلك، ستقوم بربط Prometheus مع Grafana لتصور جميع المقاييس وإجراء الاستعلامات باستخدام لغة PromQL. وأخيرًا، ستقوم بتكوين تخزين مستمر لمثيل بروميثيوس الخاص بك، للحفاظ على جميع بيانات عنقود DOKS وتطبيق مقاييسك.
جدول المحتويات
- المتطلبات المسبقة
- الخطوة 1 – تثبيت حزمة بروميثيوس
- الخطوة 2 – تكوين بروميثيوس وغرافانا
- الخطوة 3 – لغة الاستعلامات PromQL (Prometheus Query Language)
- الخطوة 4 – تصور المقاييس باستخدام غرافانا
- الخطوة 5 – تكوين التخزين الدائم لـ Prometheus
- الخطوة 6 – تكوين التخزين الدائم لـ Grafana
- الاستنتاج
المتطلبات الأساسية
لإكمال هذا البرنامج التعليمي، ستحتاج إلى:
- A Git client to clone the Starter Kit repository.
- Helm لإدارة إصدارات وترقيات مجموعة Prometheus.
- Kubectl للتفاعل مع Kubernetes.
- Curl لاختبار الأمثلة (تطبيقات الخلفية).
- تطبيق Emojivoto Sample المنشور في العقد. يرجى اتباع الخطوات في دليل مستودعها.
يرجى التأكد من تكوين سياق kubectl
للإشارة إلى عقد Kubernetes الخاص بك. راجع الخطوة 3 – إنشاء عقد DOKS من دليل إعداد DOKS.
الخطوة 1 – تثبيت كومة بروميثيوس
في هذه الخطوة، ستقوم بتثبيت كومة kube-prometheus
، وهي كومة رصد كاملة لـ Kubernetes تعتمد على الرأي. تتضمن المشغل بروميثيوس، kube-state-metrics
، ملفات التجسيم المُبنية مسبقًا، مصدري البيانات للعقد، واجهة برمجة تطبيقات المقاييس، مدير التنبيهات، و Grafana.
ستستخدم مدير حزم Helm لإنجاز هذه المهمة. يتوفر مخطط Helm هنا للدراسة.
أولاً، قم بنسخ مستودع Starter Kit وقم بتغيير الدليل إلى نسختك المحلية.
بعد ذلك، أضف مستودع Helm واستعرض الخرائط المتاحة:
الناتج يبدو مشابهًا لما يلي:
NAME CHART VERSION APP VERSION DESCRIPTION
prometheus-community/alertmanager 0.18.1 v0.23.0 The Alertmanager handles alerts sent by client ...
prometheus-community/kube-prometheus-stack 35.5.1 0.56.3 kube-prometheus-stack collects Kubernetes manif...
...
المخطط ذو الاهتمام هو prometheus-community/kube-prometheus-stack
الذي سيقوم بتثبيت بروميثيوس، Promtail، Alertmanager، و Grafana على العقد. يرجى زيارة صفحة kube-prometheus-stack لمزيد من التفاصيل حول هذا المخطط.
ثم، قم بفتح وتفحص الملف 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
الموجود في مستودع Starter Kit باستخدام محرر اختيارك (بشكل أفضل مع دعم لتنسيق YAML). بشكل افتراضي، تكون مقاييس الـkubeSched
وetcd
معطلة – تتم إدارة هذه المكونات بواسطة DOKS
ولا يمكن الوصول إليها من قبل Prometheus. لاحظ أن التخزين مضبوط على emptyDir
. يعني ذلك أن الـتخزين سيفقد إذا أعيد تشغيل حاويات Prometheus (سوف تقوم بإصلاح هذا لاحقًا في القسم تكوين التخزين الثابت لـ Prometheus).
[اختياري] إذا قمت باتباع – الخطوة 4 – إضافة عقد مخصص للمراقبة من دليل إعداد مجموعة عقدة Kubernetes المدارة من DigitalOcean، فستحتاج إلى تحرير الملف 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
الموجود في مستودع Starter Kit وإلغاء تعليق أقسام affinity
لكل من Grafana و Prometheus.
شروحات للتكوين أعلاه:
preferredDuringSchedulingIgnoredDuringExecution
– يحاول المجدول العثور على عقدة تفي بالقاعدة. إذا كانت العقدة المطابقة غير متاحة، فإن المجدول ما زال يجدول الحاوية.preference.matchExpressions
– المحدد المستخدم لتطابق عقدة معينة بناءً على معيار ما. يخبر المثال أعلاه المجدول بوضع الأعباء العمل (مثل البودات) على العقد الموسوم باستخدام المفتاح –preferred
والقيمة –observability
.
أخيرًا ، قم بتثبيت kube-prometheus-stack
باستخدام Helm
:
A specific version of the Helm chart is used. In this case 35.5.1
was picked, which maps to the 0.56.3
version of the application (see output from Step 2.). It’s a good practice to lock on a specific version. This helps to have predictable results and allows versioning control via Git.
–create-namespace \
الآن ، تحقق من حالة إصدار Helm للكومة Prometheus:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
kube-prom-stack monitoring 1 2022-06-07 09:52:53.795003 +0300 EEST deployed kube-prometheus-stack-35.5.1 0.56.3
يبدو الإخراج مشابهًا للتالي. لاحظ قيمة عمود STATUS
– يجب أن تقول deployed
.
انظر ما هي الموارد المتاحة في Kubernetes لـ Prometheus:
NAME READY STATUS RESTARTS AGE
pod/alertmanager-kube-prom-stack-kube-prome-alertmanager-0 2/2 Running 0 3m3s
pod/kube-prom-stack-grafana-8457cd64c4-ct5wn 2/2 Running 0 3m5s
pod/kube-prom-stack-kube-prome-operator-6f8b64b6f-7hkn7 1/1 Running 0 3m5s
pod/kube-prom-stack-kube-state-metrics-5f46fffbc8-mdgfs 1/1 Running 0 3m5s
pod/kube-prom-stack-prometheus-node-exporter-gcb8s 1/1 Running 0 3m5s
pod/kube-prom-stack-prometheus-node-exporter-kc5wz 1/1 Running 0 3m5s
pod/kube-prom-stack-prometheus-node-exporter-qn92d 1/1 Running 0 3m5s
pod/prometheus-kube-prom-stack-kube-prome-prometheus-0 2/2 Running 0 3m3s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 3m3s
service/kube-prom-stack-grafana ClusterIP 10.245.147.83 <none> 80/TCP 3m5s
service/kube-prom-stack-kube-prome-alertmanager ClusterIP 10.245.187.117 <none> 9093/TCP 3m5s
service/kube-prom-stack-kube-prome-operator ClusterIP 10.245.79.95 <none> 443/TCP 3m5s
service/kube-prom-stack-kube-prome-prometheus ClusterIP 10.245.86.189 <none> 9090/TCP 3m5s
service/kube-prom-stack-kube-state-metrics ClusterIP 10.245.119.83 <none> 8080/TCP 3m5s
service/kube-prom-stack-prometheus-node-exporter ClusterIP 10.245.47.175 <none> 9100/TCP 3m5s
service/prometheus-operated ClusterIP None <none> 9090/TCP 3m3s
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/kube-prom-stack-prometheus-node-exporter 3 3 3 3 3 <none> 3m5s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/kube-prom-stack-grafana 1/1 1 1 3m5s
deployment.apps/kube-prom-stack-kube-prome-operator 1/1 1 1 3m5s
deployment.apps/kube-prom-stack-kube-state-metrics 1/1 1 1 3m5s
NAME DESIRED CURRENT READY AGE
replicaset.apps/kube-prom-stack-grafana-8457cd64c4 1 1 1 3m5s
replicaset.apps/kube-prom-stack-kube-prome-operator-6f8b64b6f 1 1 1 3m5s
replicaset.apps/kube-prom-stack-kube-state-metrics-5f46fffbc8 1 1 1 3m5s
NAME READY AGE
statefulset.apps/alertmanager-kube-prom-stack-kube-prome-alertmanager 1/1 3m3s
statefulset.apps/prometheus-kube-prom-stack-kube-prome-prometheus 1/1 3m3s
يجب أن يتم نشر الموارد التالية: prometheus-node-exporter
، kube-prome-operator
، kube-prome-alertmanager
، kube-prom-stack-grafana
، و kube-state-metrics
. يبدو الإخراج مشابهًا للتالي:
ثم ، يمكنك الاتصال بـ Grafana (باستخدام بيانات الاعتماد الافتراضية: admin/prom-operator
– انظر الملف prom-stack-values-v35.5.1) ، عن طريق توجيه البوابة للجهاز المحلي:
يجب عليك عدم تعريض Grafana للشبكة العامة (مثل إنشاء تعيين للدخول أو خدمة LB) باستخدام default login/password
.
تأتي تثبيت Grafana مع عدة لوحات تحكم. افتح متصفح ويب على localhost:3000. بمجرد الدخول، يمكنك الانتقال إلى Dashboards -> Browse، واختيار لوحات تحكم مختلفة.
في الجزء التالي، ستكتشف كيفية إعداد Prometheus لاكتشاف الأهداف للمراقبة. كمثال، سيتم استخدام تطبيق العينات Emojivoto
. ستتعرف أيضًا على ما هو ServiceMonitor
.
الخطوة 2 – تكوين Prometheus و Grafana
لقد نفذت بالفعل Prometheus و Grafana في العقدة. في هذه الخطوة، ستتعلم كيفية استخدام ServiceMonitor
. يُعتبر ServiceMonitor واحدًا من الطرق المفضلة لإخبار Prometheus كيفية اكتشاف هدف جديد للمراقبة.
إن نشر Emojivoto الذي تم إنشاؤه في الخطوة 5 من قسم الشروط الأساسية يوفر النقطة النهائية /metrics
بشكل افتراضي على منفذ 8801
من خلال خدمة Kubernetes.
بعد ذلك، ستكتشف خدمات Emojivoto المسؤولة عن تعريض بيانات القياس ليتم استهلاكها بواسطة Prometheus. الخدمات المعنية تسمى emoji-svc
و voting-svc
(لاحظ أنها تستخدم مساحة الاسم emojivoto
):
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
emoji-svc ClusterIP 10.245.135.93 <none> 8080/TCP,8801/TCP 22h
voting-svc ClusterIP 10.245.164.222 <none> 8080/TCP,8801/TCP 22h
web-svc ClusterIP 10.245.61.229 <none> 80/TCP 22h
يبدو الإخراج مشابهًا للتالي:
بعد ذلك، قم بتنفيذ port-forward
لفحص القياسات:
يمكن تصور البيانات المكشوفة عن طريق التنقل بمتصفح الويب إلى localhost أو عبر استخدام أمر curl:
يظهر الإخراج مشابه للتالي:
go_gc_duration_seconds{quantile="0"} 5.317e-05
go_gc_duration_seconds{quantile="0.25"} 0.000105305
go_gc_duration_seconds{quantile="0.5"} 0.000138168
go_gc_duration_seconds{quantile="0.75"} 0.000225651
go_gc_duration_seconds{quantile="1"} 0.016986437
go_gc_duration_seconds_sum 0.607979843
go_gc_duration_seconds_count 2097
# TYPE go_gc_duration_seconds summary
لتفحص البيانات المتوفرة لخدمة voting-svc
، قم بإيقاف إعادة توجيه منفذ emoji-svc
وقم بتنفيذ نفس الخطوات للخدمة الثانية.
- بعد ذلك، قم بربط Prometheus بخدمة متريات Emojivoto. هناك عدة طرق للقيام بذلك:
- <static_config> – تسمح بتحديد قائمة من الأهداف ومجموعة علامات مشتركة لها.
- <kubernetes_sd_config> – تسمح باسترجاع أهداف الحصول على البيانات من واجهة برمجة التطبيقات الرئيسية لـ Kubernetes والبقاء متزامنة دائمًا مع حالة العقدة.
Prometheus Operator – يبسط مراقبة Prometheus داخل عقدة Kubernetes من خلال CRDs.
بعد ذلك، ستستخدم ServiceMonitor
CRD المكشوفة بواسطة Prometheus Operator لتعريف هدف جديد للمراقبة.
أولاً، قم بتغيير الدليل (إذا لم يكن مغيرًا بالفعل) حيث تم استنساخ مستودع Starter Kit Git:
ثم، قم بفتح ملف 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
المقدم في مستودع Starter Kit باستخدام محرر نصوص من اختيارك (يفضل أن يكون مع دعم YAML lint). يرجى إزالة التعليقات المحيطة بقسم additionalServiceMonitors
. يبدو الإخراج مشابهاً لما يلي:
- تفسيرات لتكوين الأعلاف أعلاه:
selector -> matchExpressions
– يخبرServiceMonitor
أي خدمة يجب مراقبتها. سيستهدف جميع الخدمات التي تحمل مفتاح التصنيف app والقيمemoji-svc
وvoting-svc
. يمكن الحصول على التصنيفات عبر تشغيل:kubectl get svc --show-labels -n emojivoto
namespaceSelector
– هنا، ترغب في مطابقة النطاق حيث تم نشرEmojivoto
.
endpoints -> port
– يشير إلى منفذ الخدمة للمراقبة.
أخيرًا، قم بتطبيق التغييرات باستخدام Helm:
بعد ذلك، يرجى التحقق مما إذا كان الهدف Emojivoto
قد تمت إضافته إلى Prometheus للحصول على بيانات المسح. قم بإنشاء توجيه ميناء لـ Prometheus على الميناء 9090
:
افتح متصفح ويب على localhost:9090. ثم، انتقل إلى الصفحة Status -> Targets، وافحص النتائج (لاحظ مسار serviceMonitor/monitoring/emojivoto-monitor/0
):
هناك 2 إدخالات تحت الأهداف المكتشفة لأن نشر Emojivoto
يتكون من 2 خدمة تعرض نقطة البيانات للمقاييس.
في الخطوة التالية، ستكتشف PromQL مع بعض الأمثلة البسيطة، لتبدأ، وتكتشف اللغة.
الخطوة 3 – PromQL (لغة الاستعلام Prometheus)
في هذه الخطوة، ستتعلم أساسيات لغة الاستعلام Prometheus (PromQL). تساعدك PromQL على أداء الاستعلامات عن مقاييس مختلفة تأتي من جميع الـPods والتطبيقات من خادم DOKS الخاص بك.
PromQL هي لغة خاصة بالمجال (DSL) مصممة خصيصًا لـ Prometheus وتسمح لك بالاستعلام عن المقاييس. تحدد التعبير الكلي القيمة النهائية، بينما تمثل التعابير المتداخلة القيم للمعاملات والعمليات. لمزيد من التفسيرات العميقة، يرجى زيارة الصفحة الرسمية لـ PromQL.
بعد ذلك، ستفحص أحد مقاييس Emojivoto
، وهو emojivoto_votes_total
، الذي يمثل إجمالي عدد الأصوات. إنه قيمة عداد تزداد مع كل طلب ضد نقطة نهاية الأصوات في Emojivoto
.
أولاً، قم بإنشاء توجيه ميناء (port forward) لـ Prometheus على الميناء 9090
:
بعد ذلك، افتح متصفح التعبيرات (expression browser).
emojivoto_votes_total{container="voting-svc", emoji=":100:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 20
emojivoto_votes_total{container="voting-svc", emoji=":bacon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 17
emojivoto_votes_total{container="voting-svc", emoji=":balloon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 21
emojivoto_votes_total{container="voting-svc", emoji=":basketball_man:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beach_umbrella:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beer:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 11
في حقل إدخال الاستعلام، ألصق emojivoto_votes_total
، واضغط على enter. يبدو الإخراج مشابهًا ل:
انتقل إلى تطبيق Emojivoto
ومن الصفحة الرئيسية انقر على الإيموجي 100 للتصويت لصالحه.
emojivoto_votes_total{container="voting-svc", emoji=":100:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 21
emojivoto_votes_total{container="voting-svc", emoji=":bacon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 17
emojivoto_votes_total{container="voting-svc", emoji=":balloon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 21
emojivoto_votes_total{container="voting-svc", emoji=":basketball_man:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beach_umbrella:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beer:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 11
انتقل إلى صفحة نتائج الاستعلام من الخطوة 3 وانقر على زر تنفيذ. يجب أن ترى العداد للإيموجي 100 يزيد بواحد. يبدو الإخراج مشابهًا للتالي:
يُقسِّم PromQL البيانات المماثلة في ما يُعرف بالفيكتور. كما هو موضح أعلاه، يحتوي كل فيكتور على مجموعة من السمات التي تميزه عن الآخر. يمكنك تجميع النتائج استنادًا إلى سمة معينة تهمك. على سبيل المثال، إذا كنت تهتم فقط بالطلبات الواردة من خدمة voting-svc
، فضع من فضلك النص التالي في حقل الاستعلام:
emojivoto_votes_total{container="voting-svc", emoji=":100:", endpoint="prom", instance="10.244.6.91:8801", job="voting-svc", namespace="emojivoto", pod="voting-6548959dd7-hssh2", service="voting-svc"} 492
emojivoto_votes_total{container="voting-svc", emoji=":bacon:", endpoint="prom", instance="10.244.6.91:8801", job="voting-svc", namespace="emojivoto", pod="voting-6548959dd7-hssh2", service="voting-svc"} 532
emojivoto_votes_total{container="voting-svc", emoji=":balloon:", endpoint="prom", instance="10.244.6.91:8801", job="voting-svc", namespace="emojivoto", pod="voting-6548959dd7-hssh2", service="voting-svc"} 521
يبدو الإخراج مشابهًا للتالي (لاحظ أنه يختار فقط النتائج التي تطابق معاييرك):
النتيجة أعلاه تُظهر الطلبات الإجمالية لكل Pod من نشرة Emojivoto
التي تُطلق البيانات القياسية (التي تتألف من 2).
هذا مجرد مقدمة بسيطة لما يمكن أن يفعله PromQL وما يستطيع عمله. ولكن يمكنه فعل المزيد من ذلك، مثل عد البيانات القياسية، وحساب معدل الزيادة على فترة زمنية محددة مسبقًا، إلخ. يُرجى زيارة الصفحة الرسمية لـ PromQL لمزيد من ميزات اللغة.
في الخطوة التالية، ستتعلم كيفية استخدام Grafana لتصور البيانات القياسية لتطبيق Emojivoto
العينة.
الخطوة 4 – تصور المقاييس باستخدام Grafana
على الرغم من أن Prometheus لديه بعض الدعم المدمج لتصور البيانات، إلا أن الطريقة الأفضل للقيام بذلك هي من خلال Grafana وهو منصة مفتوحة المصدر للرصد والرصد، التي تتيح لك تصور واستكشاف حالة عنقودك.
تم وصف الصفحة الرسمية بأنها قادرة على:
استعلام وتصور وتنبيه وفهم بياناتك بغض النظر عن مكان تخزينها.
لا تحتاج إلى خطوات إضافية لتثبيت Grafana لأن الخطوة 1 – تثبيت مجموعة Prometheus قامت بتثبيت Grafana بالنسبة لك. كل ما عليك القيام به هو توجيه منفذ كما يلي، والحصول على الوصول الفوري إلى لوحات القيادة (اعتمادات الافتراضية: admin/prom-monitor
):
لرؤية جميع مقاييس Emojivoto
، ستستخدم إحدى لوحات القيادة المثبتة افتراضيًا من Grafana.
انتقل إلى قسم لوحات القيادة Grafana.
بعد ذلك، ابحث عن لوحة القيادة عام/كوبرنيتس/موارد الحوسبة/مساحة الأسماء(البودات) وقم بالوصول إليها.
وأخيرًا، حدد مصدر البيانات Prometheus وأضف مساحة الأسماء emojivoto
.
يمكنك التلاعب وإضافة مزيد من الألواح في Grafana لتصور مصادر البيانات الأخرى، بالإضافة إلى تجميعها بناءً على النطاق. كما يمكنك استكشاف لوحات القيادة المتاحة لـ Kubernetes من مشروع kube-mixin في Grafana.
في الخطوة التالية، ستقوم بتكوين تخزين دائم لـ Prometheus باستخدام تخزين الكتل الرقمية لـ DigitalOcean للاحتفاظ بمقاييس DOKS والتطبيق عبر إعادة تشغيل الخادم أو فشل العنقود.
الخطوة 5 – تكوين التخزين الدائم لـ Prometheus
في هذه الخطوة، ستتعلم كيفية تمكين التخزين الدائم لـ Prometheus بحيث يتم الاحتفاظ ببيانات المقاييس عبر إعادة تشغيل الخادم، أو في حالة فشل العنقود.
أولاً، تحتاج إلى فئة تخزين للمتابعة. قم بتشغيل الأمر التالي للتحقق من الفئة المتاحة.
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
do-block-storage (default) dobs.csi.digitalocean.com Delete Immediate true 4d2h
يجب أن يكون الإخراج مشابهًا للتالي. لاحظ أن تخزين DigitalOcean Block متاح لك للاستخدام.
بعد ذلك، قم بتغيير الدليل (إذا لم يكن بالفعل) حيث تم استنساخ مستودع Git لمجموعة البداية:
ثم، افتح ملف 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
الموجود في مستودع Starter Kit باستخدام محرر نصوص تفضله (مع دعم تنسيق YAML إذا أمكن). ابحث عن السطر storageSpec
، وقم بفك التعليق عن القسم المطلوب لـ Prometheus. يجب أن يبدو تعريف storageSpec
كالتالي:
- شروحات لتكوين أعلاه:
volumeClaimTemplate
– يعرف PVC جديد.storageClassName
– يعرف فئة التخزين (يجب استخدام نفس القيمة كما في نتيجة أمرkubectl get storageclass
).
resources
– يحدد قيمة طلبات التخزين. في هذه الحالة، يُطلب سعة إجمالية قدرها 5 جيجابايت للحجم الجديد.
أخيرًا، قم بتطبيق الإعدادات باستخدام Helm:
بعد الانتهاء من الخطوات أعلاه، تحقق من حالة PVC:
NAME STATUS VOLUME CAPACITY ACCESS MODES AGE
kube-prome-prometheus-0 Bound pvc-768d85ff-17e7-4043-9aea-4929df6a35f4 5Gi RWO do-block-storage 4d2h
A new Volume should appear in the Volumes web page from your DigitalOcean account panel:
يبدو الإخراج مشابهًا لما يلي. يجب أن يعرض العمود STATUS
القيمة Bound
.
الخطوة 6 – تكوين التخزين الدائم لـ Grafana
في هذه الخطوة، ستتعلم كيفية تمكين التخزين الدائم لـ Grafana بحيث يتم الاحتفاظ بالرسوم البيانية عبر إعادة تشغيل الخادم أو في حالة فشل العنقود. ستقوم بتحديد مطالبة حجم السعة الدائمة بحجم 5 جيجابايت، باستخدام تخزين DigitalOcean Block. الخطوات التالية هي نفسها كـ الخطوة 5 – تكوين التخزين الدائم لـ Prometheus.
أولاً، قم بفتح ملف 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
المقدم في مستودع Starter Kit، باستخدام محرر نصوص من اختيارك (مع دعم YAML lint مفضل). يجب أن يبدو قسم التخزين الدائم لـ Grafana كما يلي:
بعد ذلك، قم بتطبيق الإعدادات باستخدام Helm:
بعد إكمال الخطوات أعلاه، تحقق من حالة مطالبة السعة الدائمة:
NAME STATUS VOLUME CAPACITY ACCESS MODES AGE
kube-prom-stack-grafana Bound pvc-768d85ff-17e7-4043-9aea-4929df6a35f4 5Gi RWO do-block-storage 4d2h
A new Volume should appear in the Volumes web page from your DigitalOcean account panel:
يبدو الإخراج مشابهًا لما يلي. يجب أن يعرض العمود STATUS
قيمة Bound
.
أفضل الممارسات لتحديد حجم السعة الدائمة
- لحساب الحجم اللازم للحجم استنادًا إلى احتياجاتك، يرجى اتباع النصائح الرسمية والصيغة في الوثائق الرسمية:
- تخزن بروميثيوس متوسطًا من 1 إلى 2 بايت فقط لكل عينة. لذلك، يمكنك استخدام الصيغة التقريبية لتخطيط سعة خادم بروميثيوس:
المساحة_المطلوبة_على_القرص = الوقت_المحتفظ_به_بالثواني * العينات_المدخلة_في_الثانية * بايت_لكل_عينة
لتقليل معدل العينات المدخلة، يمكنك إما تقليل عدد سلاسل الزمن التي تقوم بجمعها (أقل عدد من الأهداف أو أقل عدد من السلاسل لكل هدف)، أو يمكنك زيادة فاصل الجمع. ومع ذلك، من المحتمل أن يكون تقليل عدد السلاسل أكثر فعالية، بسبب ضغط العينات داخل سلسلة.