הקדמה
ארגונים שמאיצים יותר ויותר את שימושם ב־Kubernetes כדי לנהל את המיכלים שלהם זקוקים לפתרון לניטור בריאות המערכת המבוזרת שלהם. מכאן, נכנסת הפרומתאוס – כלי פתוח ועוצמתי לניטור של אפליקציות מבוזרות במיכלים בסביבת K8s שלך.
במדריך זה, תלמד כיצד להתקין ולהגדיר את מערכת הפרומתאוס כדי לנטר את כל ה־pods מהאשכול שלך של DOKS, כמו גם את המדדי מצב של אשכול Kubernetes. לאחר מכן, תחבר את הפרומתאוס עם גרפאנה כדי להמחיש את כל המדדים ולבצע שאילתות באמצעות שפת PromQL. לבסוף, תגדיר אחסון קבוע עבור מופע הפרומתאוס שלך כדי לשמור על כל נתוני מדדי האשכול והאפליקציה של DOKS שלך.
תוכן עניינים
- דרישות מקדימות
- שלב 1 – התקנת מערכת הפרומתאוס
- שלב 2 – הגדרת פרומתאוס וגרפאנה
- שלב 3 – PromQL (שפת שאילתות של פרומתאוס)
- שלב 4 – המחשת מדדים באמצעות גרפאנה
- שלב 5 – הגדרת אחסון עמיד עבור Prometheus
- שלב 6 – הגדרת אחסון עמיד עבור Grafana
- מסקנות
דרישות מראש
כדי להשלים את המדריך הזה, תצטרכו לקיים:
- A Git client to clone the Starter Kit repository.
- Helm לניהול שחרורים ושדרוגים של מערכת Prometheus.
- Kubectl לאינטראקציה עם Kubernetes.
- Curl לבדיקת הדוגמאות (יישומי השרת).
- Emojivoto יישום דוגמה הופק באשכול. נא לעקוב אחר השלבים בקובץ README של המאגר שלו.
וודאו שההקשר של kubectl
מוגדר לנקודת האשכול שלכם ב-Kubernetes. נא לעיין ב־שלב 3 – יצירת אשכול DOKS ממדריך ההתקנה של DOKS.
שלב 1 – התקנת מערכת המוניטורים של Prometheus
בשלב זה, תתקין את מערכת המוניטורים kube-prometheus
, שהיא מערכת מוניטורים מלאה ומסודרת עבור Kubernetes. היא כוללת את המפעיל של Prometheus, kube-state-metrics
, קבצי Manifest מובנים, Node Exporters, Metrics API, Alerts Manager ו-Grafana.
תשתמש במנהל החבילות Helm כדי לבצע את המשימה הזו. מדובר בתרשים Helm הזמין כאן ללמידה.
ראשית, העתק את תיק הכלים הראשוני ושנה את התיקייה להעתקה המקומית שלך.
באשף המשך, הוסף את ריפוזיטורי ה-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
שיתקין את Prometheus, Promtail, Alertmanager ו-Grafana על האשף. נא לבקר בדף kube-prometheus-stack לקבלת מידע נוסף אודות התרשים הזה.
אז, פתחו ובדקו את הקובץ 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
המסופק במאגר Starter Kit באמצעות עורך לבחירתכם (מומלץ עם תמיכה ב־YAML lint). כברירת מחדל, מדדי 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
– הסדרן מנסה למצוא צומת שעונה על הכלל. אם אין צומת התואמת זמינה, הסדרן עדיין מתזמן את ה־Pod.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 של חסכון פרומתאוס:
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 זמינים לפרומתאוס:
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
. הפלט דומה למה שבתמונה:
לאחר מכן, תוכל להתחבר לגרפנה (באמצעות פרטי כניסה ברירתיים: admin/prom-operator
– ראה את הקובץ prom-stack-values-v35.5.1), על ידי הפניה של הפורט למכונה המקומית:
אתה לא צריך להסתיר את גרפנה מהרשת הציבורית (לדוגמה, ליצור התאמת כניסה או שירות LB) עם כניסה/סיסמת ברירת מחדל
.
התקנת Grafana מגיעה עם מספר לוחות בקרה. פתח דפדפן אינטרנט על localhost:3000. פעם שנמצאים שם, תוכל לעבור אל לוחות בקרה -> עיון, ולבחור לוחות בקרה שונים.
בחלק הבא, תגלה כיצד להגדיר את Prometheus כדי לגלות מטרות לצורך מעקב. כדי לדוגם, ישמש אפליקציית הדוגמה Emojivoto
. תלמד מהו ServiceMonitor
גם.
שלב 2 – הגדרת Prometheus ו-Grafana
כבר הטמנת את Prometheus ו-Grafana באשכול. בשלב זה, תלמד כיצד להשתמש ב-ServiceMonitor
. ServiceMonitor הוא אחד מהדרכים המועדפות להודיע ל-Prometheus כיצד לגלות מטרה חדשה למעקב.
הDP של 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> – מאפשר לקבל מטרות גילוי מ-API ה־REST של Kubernetes ולהישאר תמיד מסונכרן עם מצב האשכול.
הפעלת Prometheus – מקלה על המעקב אחר Prometheus בתוך אשכול Kubernetes דרך CRDs.
לאחר מכן, תשתמש ב־CRD של ServiceMonitor
המחושב על ידי הפעלת Prometheus כדי להגדיר מטרה חדשה למעקב.
לפני כן, שנה את התיקייה (אם עדיין לא) שבה הועתק סטרטר קיט של מאגר Git:
אחר כך, פתח את הקובץ 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
שסופק במאגר התחלה באמצעות עורך טקסט לבחירתך (מועדף עם תמיכת 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 לצורך גידול. נא ליצור הפניה לפרומתיאוס על פורט 9090
:
פתח דפדפן אינטרנט על localhost:9090. לאחר מכן, נא לנווט אל הדף Status -> Targets, ולבדוק את התוצאות (שים לב לנתיב serviceMonitor/monitoring/emojivoto-monitor/0
):
קיימים 2 ערכים תחת היעדים שנמצאו מאחר שהפיתוח של Emojivoto
כולל שני שירותים שחושפים את נקודת הסיום של הנתונים.
בשלב הבא, תגלה PromQL יחד עם דוגמאות פשוטות, כדי להתחיל ולגלות את השפה.
שלב 3 – PromQL (שפת שאילתות של Prometheus)
בשלב זה, תלמד את היסודות של שפת שאילתות של Prometheus (PromQL). PromQL מסייעת לך לבצע שאילתות על מטריקות שונות הבאות מכל ה-Pods והיישומים מאשר קבוצת ה-DOKS שלך.
PromQL היא שפת מסמך (DSL) או שפת מסמך כלשהי המוקדשת במיוחד ל-Prometheus ומאפשרת לך לבצע שאילתות על מטריקות. הביטוי הכללי מגדיר את הערך הסופי, בעוד ביטויים מקוננים מייצגים ערכים עבור ארגומנטים ומפרשי פעולה. לפרטים נוספים, בקר בעמוד הרשמי של PromQL.
הבא, תבחן את אחת מהמטריקות של Emojivoto
, בדיוק emojivoto_votes_total
, המייצגת את מספר ההצבעות הכולל של כלל הבקשות נגד נקודת הקצה של ההצבעה של Emojivoto
. זו ערך מונה המתרם עם כל בקשה לנקודת הקצה של ההצבעה של Emojivoto
.
ראשית, צור העברה עבור Prometheus בפורט 9090
:
הבא, פתח את מעקב הביטויים.
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 התקין אותה עבורך. כל שעליך לעשות הוא פורוארד כמו בקוד הבא, ולקבל גישה מיידית ללוחות המחוונים (פרטי כניסה ברירת מחדל: admin/prom-monitor
):
כדי לראות את כל המדדים של Emojivoto
, תשתמש באחד מלוחות המחוונים המותקנים כברירת מחדל מ-Grafana.
נווט אל חלק לוחות המחוונים של Grafana.
באחריות, חפש את לוח המחוונים כללי/קוברנטיס/משאבי חישוב/שם המרחב המשני (קפצי) וגש אליו.
לבסוף, בחר במקור הנתונים של Prometheus והוסף את מרחב השמות emojivoto
.
ניתן לשחק ולהוסיף פאנלים נוספים ב-Grafana להצגת מקורות נתונים נוספים, וכן לקבץ אותם על פי היקף. בנוסף, ניתן לחקור את לוחות המחוונים הזמינים עבור Kubernetes מפרויקט kube-mixin ב-Grafana.
בשלב הבא, תכנן אחסון קבוע עבור Prometheus באמצעות אחסון גבוה ב-DigitalOcean כדי לשמור על הנתונים של DOKS והיישומים שלך במהלך הפעלות מחדש של השרת או כשישנם כשלים באשכול.
שלב 5 – הגדרת אחסון קבוע עבור Prometheus
בשלב זה, תלמד כיצד להפעיל אחסון קבוע עבור Prometheus כך שנתוני המטריקות יישמרו מעבר לאיפוסים של השרת, או במקרה של כשלים באשכול.
ראשית, עליך לקבוע storage class כדי להמשיך. הרץ את הפקודה הבאה כדי לבדוק איזה סוגי אחסון זמינים.
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
do-block-storage (default) dobs.csi.digitalocean.com Delete Immediate true 4d2h
הפלט צריך להיראות דומה להבא. שים לב שאחסון DigitalOcean Block זמין לשימוש.
לבסוף, שנה את התיקייה (אם עדיין לא נמצאית) שבה התקנתה תיק ה-Git של Starter Kit:
אז, פתחו את הקובץ 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
המסופק במאגר הקוד של קיט ההתחלה באמצעות עורך טקסט לבחירתכם (מומלץ עם תמיכת YAML lint). חפשו את השורה storageSpec
ובטלו את ההערה בחלק הנדרש לפרומיתיאוס. הגדרת storageSpec
צריכה להיראות כך:
- הסברים להגדרה לעיל:
volumeClaimTemplate
– מגדיר PVC חדש.storageClassName
– מגדיר את storage class (עליכם להשתמש באותה ערך שניתן מפלט הפקודה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 ג'יגה (PVC), באמצעות אחסון בלוק של DigitalOcean. השלבים הבאים זהים ל שלב 5 – הגדרת אחסון עמיד עבור Prometheus.
ראשית, פתח את קובץ ה-04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
המסופק במאגר הקוד של Starter Kit, באמצעות עורך טקסט לבחירתך (מועדף עם תמיכת YAML lint). חלק האחסון העמיד עבור Grafana צריך להיראות כך:
לאחר מכן, החל את ההגדרות באמצעות Helm:
לאחר השלמת השלבים הנ"ל, בדוק את מצב ה-PVC:
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
.
תרגולים מומלצים לגודל של ה- PV
- כדי לחשב את הגודל הדרוש לנפח על פי הצרכים שלך, יש לעקוב אחר ההנחיות הרשמיות והנוסחא:
- הפרומתיאוס מאחסן ממוצע של רק 1-2 בתים לדוגמה. לכן, כדי לתכנן את קיבולת שרת פרומתיאוס, ניתן להשתמש בנוסחה הערומה:
נדרשת_קיבולת_דיסק = זמן_שמירה_בשניות * דוגמאות_מוכנסות_לשנייה * בתים_לדוגמה
כדי להוריד את קצב הדוגמאות שמוכנסות, ניתן להפחית את מספר סדרות הזמן שמנותבות (פחות יעדים או פחות סדרות לכל יעד), או להגדיל את המרווח בין הניתובים. עם זאת, הפחתת מספר הסדרות כנראה תהיה יעילה יותר, עקב דחיסת הדוגמאות בתוך סדרה.