מצב: מופסק
מאמר זה נמחק ואינו מתוחזק יותר.
סיבה
השלבים במדריך זה עדיין עובדים, אך ייצור תצורה שכזו כעת קשה לתחזוקה מיותר.
ראה במקום זאת
מאמר זה עדיין עשוי להיות שימושי כמקור להפניה, אך עשוי לא לעקוב אחרי הפרקטיקות הטובות ביותר. אנו ממליצים בחום להשתמש במאמר יותר חדש.
מבוא
יחד עם העקיפה וההתעקבות, המעקב וההתראה הם רכיבים איתנים של חבילת האפשרויות של Kubernetes. הקמת מעקב עבור אשכול Kubernetes שלך ב-DigitalOcean מאפשרת לך לעקוב אחר שימוש במשאבים שלך, ולנתח ולתקן שגיאות ביישום.
A monitoring system usually consists of a time-series database that houses metric data and a visualization layer. In addition, an alerting layer creates and manages alerts, handing them off to integrations and external services as necessary. Finally, one or more components generate or expose the metric data that will be stored, visualized, and processed for alerts by the stack.
פתרון מעקב פופולרי הוא מערכת הקוד הפתוחה Prometheus, Grafana, ו- Alertmanager, המוקמת בצד של kube-state-metrics ו- node_exporter כדי לחשוף מטריקות עצם של Kubernetes ברמת האשכול וגם מטריקות ברמת המכונה כמו שימוש ב-CPU וזיכרון.
לשים בתוך קמפיין המעקב הזה באשכול Kubernetes דורש הגדרת רכיבים פרטניים, מניפסטים, מטריקות של Prometheus, ולוחות בקרה של Grafana, שיכול לקחת זמן מסוים. ערוץ התחלה מהיר למעקב ב-DigitalOcean Kubernetes Cluster Monitoring Quickstart, שפורסם על ידי צוות החינוך של מפתחי קהילת DigitalOcean, מכיל מניפסטים מוגדרים לחלוטין עבור אשכול המעקב של Prometheus-Grafana-Alertmanager, וגם אוסף של התראות מוגדרות מראש ולוחות בקרה של Grafana. זה יכול לעזור לך להתחיל לרוץ במהירות, ומהווה יסוד איתן ממנו לבנות את הערכה שלך.
במדריך הזה, נציב את אשכול המראש הזה על DigitalOcean Kubernetes, ניגש אל ממשקי ה-Prometheus, Grafana, ו-Alertmanager, ונתאר כיצד להתאים אותו.
דרישות קדם
לפני שתתחיל, יהיה עליך להביא קיבוץ Kubernetes של DigitalOcean שזמין עבורך, ולהתקין את הכלים הבאים בסביבת הפיתוח המקומית שלך:
- ממשק השורת פקודה
kubectl
מותקן על המכשיר המקומי שלך ומוגדר להתחבר לקיבוץ שלך. ניתן לקרוא עוד על התקנה והגדרתkubectl
ב-תיעוד הרשמי שלו. - מערכת הבקרה לגרסה git מותקנת על המכשיר המקומי שלך. כדי ללמוד איך להתקין git על Ubuntu 18.04, נא להתייעץ עם איך להתקין git על Ubuntu 18.04.
- כלי ה־base64 של Coreutils מותקן על המכשיר המקומי שלך. אם אתה משתמש במכשיר Linux, כנראה זה כבר יהיה מותקן. אם אתה משתמש ב-OS X, ניתן להשתמש ב־
openssl base64
, שמותקן כבר כחלק מההתקנה.
<$>[הערה]
הערה: נבדקה רק על קיבוצי Kubernetes של DigitalOcean. כדי להשתמש במהיר בקבוצה עם קיבוצי Kubernetes אחרים, עשויות להיות נדרשות שינויים בקבצי ההגדרה.
<$>
שלב 1 — שכפול המאגר ב-GitHub והגדרת משתני סביבה
להתחלה, שכפל את מאגר ה-GitHub של מערכת ניטור קבוצת Kubernetes של DigitalOcean על מכונת המחשב המקומית שלך באמצעות git:
לאחר מכן, נווט אל המאגר:
תראה את מבנה הספריות הבא:
OutputLICENSE
README.md
changes.txt
manifest
הספרייה manifest
מכילה רישומי Kubernetes עבור כל רכיבי מחסניית הניטור, כולל חשבונות שירות, איחסונים, קבוצות רשת, Map-ים לתצורה, וכו'. כדי ללמוד עוד על קבצי הרישום האלה וכיצד להגדיר אותם, עבור ל-הגדרת סט הניטורים.
אם רוצים פשוט להפעיל את הדברים, התחילו על ידי להגדיר את המשתנים הסביבתיים APP_INSTANCE_NAME
ו־NAMESPACE
, שיכולים לשמש לתצורת שם ייחודי עבור רכיבי הסטאק ולהגדיר את ה־Namespace שבו יותקן הסטאק:
במדריך זה, אנו מגדירים את APP_INSTANCE_NAME
ל־sammy-cluster-monitoring
, שישים לכל אחד מרכיבי ה־Kubernetes של הסטאק את שמותיו. עליך להחליף בקידומת תיאורית ייחודית עבור הסטאק המעקב שלך. אנו גם מגדירים את ה־Namespace ל־default
. אם ברצונך להטמיע את הסטאק ל־Namespace שאינו default
, ודא שיצרת אותו בקרוב שלך:
עליך לראות את הפלט הבא:
Outputnamespace/sammy created
במקרה זה, המשתנה הסביבתי NAMESPACE
הוגדר ל־sammy
. לאורך שאר המדריך, נניח ש־NAMESPACE
הוגדר ל־default
.
עכשיו, השתמשו בפקודת base64
כדי להצפין בבסיס 64 את הסיסמה המאובטחת של Grafana. ודאו להחליף את הסיסמה לבחירתכם במקום your_grafana_password
:
אם אתם משתמשים ב־macOS, ניתן להחליף את הפקודה openssl base64
שמותקנת כבר כתקנית.
בנקודה זו, כבר עברתם על המנפצים של קובצי ה־Kubernetes של הסטאק והגדרתם את המשתנים הסביבתיים הנדרשים, כך שאתם מוכנים כעת להחליף את המשתנים המוגדרים לתוך קבצי ה־Kubernetes וליצור את הסטאק בקרבת הקרבה הקובנית שלכם.
שלב 2 — יצירת הערך של מערכת הניטור
המאגר לקוד הפתיחה המהיר של ניטור Kubernetes של DigitalOcean מכיל תיקיות עבור הרכיבים הבאים של ניטור, גריפינג והצגה:
- Prometheus הוא מסד נתונים לסדרת זמן וכלי ניטור שעובד על ידי סקירת נקודות קצה לסטטיסטיקות וחילוץ ועיבוד הנתונים המוצגים על ידי נקודות קצה אלו. הוא מאפשר לך לשאול את הנתונים הללו באמצעות PromQL, שפת שאילתות לנתוני סדרת זמן. פרומתיאוס יופעל בתוך האשכול כ־StatefulSet עם 2 עותקים שמשתמשים ב־נפחים קבועים עם אחסון בלוק של DigitalOcean. בנוסף, סט מוגדר מראש של התראות, כללים ועבודות של Prometheus יאוחסנו כ־ConfigMap. כדי לקבל מידע נוסף על אלו, עבור אל הקטע Prometheus של קביעת ערך הניטור.
- Alertmanager, שכיחות מותקנת לצד Prometheus, מהווה את שכבת ההתראה של המחסנית, מטפלת בהתראות שנוצרו על ידי Prometheus ומשכפלת, מקבצת וממסרת אותן לאינטגרציות כמו אימייל או PagerDuty. Alertmanager יותקן כ־StatefulSet עם 2 עותקים. כדי ללמוד עוד על Alertmanager, יש להתייעץ עם התראה מתוך התיעוד של Prometheus.
- Grafana היא כלי ויזואליזציה וניתוח נתונים המאפשר לך לבנות לוחות מחוונים וגרפים עבור הנתונים שלך. Grafana יותקן כ־StatefulSet עם עותק אחד. בנוסף, סט מוגדר מראש של לוחות מחוונים שנוצרו על ידי kubernetes-mixin יאוחסן כ־ConfigMap.
- kube-state-metrics הוא סוכן תוספתי שמקשיב לשרת ה־API של Kubernetes ויוצר מדדים על מצבו של אובייקטים ב־Kubernetes כמו פרישויות ו־Pods. מדדים אלו מופצים כטקסט פשוט בנקודות קצה של HTTP ומוצרבים על ידי Prometheus. kube-state-metrics יותקן כ־Deployment המתאצל באופן אוטומטי עם עותק אחד.
- node-exporter, מייצא Prometheus שרצה על צמתי האשכול ומספק מדדים על מערכת ההפעלה והחומרה כמו שימוש במעבד ובזיכרון ל־Prometheus. מדדים אלו מוצגים גם כטקסט פשוט בנקודות קצה של HTTP ומוצרבים על ידי Prometheus. node-exporter יותקן כ־DaemonSet.
ברירת המחדל, לצד גיליון הנתונים שנוצרים על ידי node-exporter, kube-state-metrics, והרכיבים האחרים שמפורטים לעיל, Prometheus יוגדר כך שיאסוף נתונים מהרכיבים הבאים:
- kube-apiserver, שרת ה-API של Kubernetes.
- kubelet, הסוכן הראשי של הקוד שמתקשר עם kube-apiserver לניהול קבוצות ומיכלים בתוך צמתים.
- cAdvisor, סוכן צומת שמזהה מיכלים שרצים ואוסף את הנתונים שלהם על שימוש במעבד, זיכרון, מערכת הקבצים ונתוני רשת.
כדי ללמוד עוד על תצורת הרכיבים הללו ועל עבודות גירוש הנתונים של Prometheus, עבור אל הגדרת מערכת הניטור. נעבור כעת להחלפת המשתנים הסביבתיים שהוגדרו בשלב הקודם לתוך קבצי המניפסט של המאגר, ונחבר את קבצי המניפסט היחידיים לקובץ מאסטר אחד.
התחל על ידי שימוש ב־awk
ו־envsubst
כדי למלא במשתנים APP_INSTANCE_NAME
, NAMESPACE
, ו־GRAFANA_GENERATED_PASSWORD
בקבצי המניפסט שבמאגר. לאחר החלפת ערכי המשתנים, הקבצים יאוחדו וישמרו בקובץ מניפסט ראשי בשם sammy-cluster-monitoring_manifest.yaml
.
כדאי לשקול לאחסן את הקובץ הזה בבקרת גרסאות כך שתוכל לעקוב אחרי שינויים בערכת המעקב ולגלות לגרסאות קודמות. אם תבצע זאת, הקפד לנקות את המשתנה admin-password
מהקובץ כדי שלא תבדוק את הסיסמה שלך של Grafana לבקרת גרסאות.
עכשיו שיצרת את קובץ המניפסט הראשי, השתמש ב־kubectl apply -f
כדי ליישם את המניפסט וליצור את הערימה ב-Namespace שהגדרת:
תראה פלט דומה לזה:
Outputserviceaccount/alertmanager created
configmap/sammy-cluster-monitoring-alertmanager-config created
service/sammy-cluster-monitoring-alertmanager-operated created
service/sammy-cluster-monitoring-alertmanager created
. . .
clusterrolebinding.rbac.authorization.k8s.io/prometheus created
configmap/sammy-cluster-monitoring-prometheus-config created
service/sammy-cluster-monitoring-prometheus created
statefulset.apps/sammy-cluster-monitoring-prometheus created
תוכל לעקוב אחרי התקדמות פרסום הערימה באמצעות kubectl get all
. לאחר שכל רכיבי הערימה רצים, תוכל לגשת ללוחות בקרה של Grafana המוגדרים מראש דרך ממשק האינטרנט של Grafana.
שלב 3 — גישה ל-Grafana וחקירת נתוני מטריקס
המניפסט של שירות Grafana חושף את Grafana כשירות ClusterIP
, מה שאומר שהיא נגישה רק דרך כתובת IP פנימית של האשכול. כדי לגשת ל-Grafana מחוץ לאשכול Kubernetes שלך, אתה יכול להשתמש ב-kubectl patch
כדי לעדכן את השירות במקום לסוג המוצג לציבור כמו NodePort
או LoadBalancer
, או kubectl port-forward
כדי להעביר פתחת מקומית לפתחת Pod של Grafana. במדריך זה נעביר פתחות, כך שתוכל לדלג למראש ל-העברת פתחת מקומית לגישה לשירות Grafana. הסעיף הבא המציג את Grafana באופן חיצוני כלול לצורך התייחסות.
חשיפת השירות של Grafana באמצעות מאזנת מעמד (אופציונלי)
אם ברצונך ליצור מאזנת מעמד של DigitalOcean עבור Grafana עם כתובת IP ציבורית חיצונית, השתמש ב-kubectl patch
כדי לעדכן את השירות הקיים של Grafana במקום לסוג של השירות LoadBalancer
:
הפקודה kubectl patch
מאפשרת לך לעדכן אובייקטים ב-Kubernetes במקום כדי לבצע שינויים מבלי לצפות את האובייקטים. ניתן גם לשנות את קובץ המניפסט הראשי ישירות, ולהוסיף פרמטר type: LoadBalancer
לפרטי השירות של Grafana. כדי לקבל מידע נוסף על kubectl patch
וסוגי השירותים של Kubernetes, ניתן להתייעץ עם משאבי ה-Update API Objects in Place Using kubectl patch ו-Services במסמכי המדריך הרשמי של Kubernetes.
לאחר הרצת הפקודה לעיל, יש לראות את התוצאות הבאות:
Outputservice/sammy-cluster-monitoring-grafana patched
עשוי לקחת מספר דקות ליצירת המאזן האוטומטי ולהקצאת כתובת IP ציבורית לו. ניתן לעקוב אחר התקדמותו באמצעות הפקודה הבאה עם הדגל -w
כדי לצפות בשינויים:
לאחר שהמאזן האוטומטי של DigitalOcean נוצר וניתן לו כתובת IP חיצונית, ניתן לאחזר את כתובת ה-IP החיצונית שלו באמצעות הפקודות הבאות:
כעת ניתן לגשת לממשק ה-Grafana על ידי ניווט אל http://SERVICE_IP/
.
הפניית פורט מקומי כדי לגשת לשירות Grafana
אם אינך רוצה לחשוף את שירות Grafana לציבור, אפשר גם להפנות את הפורט המקומי 3000
ישירות אל ה־cluster לתוך Pod של Grafana באמצעות kubectl port-forward
.
תראה את הפלט הבא:
OutputForwarding from 127.0.0.1:3000 -> 3000
Forwarding from [::1]:3000 -> 3000
זה יפנה את הפורט המקומי 3000
אל containerPort
3000
של ה־Grafana Pod sammy-cluster-monitoring-grafana-0
. כדי ללמוד עוד על הפניית פורטים אל תוך cluster של Kubernetes, ראה שימוש בהפניית פורטים כדי לגשת ליישומים ב־Cluster.
גש ל־http://localhost:3000
בדפדפן האינטרנט שלך. תראה את דף הכניסה של Grafana הבא:
כדי להתחבר, השתמש בשם משתמש ברירת המחדל admin
(אם לא שינית את הפרמטר admin-user
), ובסיסמה שהגדרת בשלב 1.
תועבר אל לוח המחוונים הראשי הבא:
בתפריט הניווט השמאלי, בחר בכפתור לוחות מחוונים, ואז לחץ על נהל:
תועבר אל ממשק ניהול הלוחות המחוונים הבא, שמפרט את הלוחות המחוונים שהוגדרו בקובץ ה־manifest dashboards-configmap.yaml
:
הלוחות הללו נוצרים על ידי kubernetes-mixin
, פרוייקט מקורי פתוח שמאפשר לך ליצור אוסף איסוף סטנדרטי של לוחות מסקרנה לצפייה במערכת הפקודות וההתראות של Prometheus. כדי לדעת עוד, ניתן להתייעץ עם המאגר הנתונים של GitHub של kubernetes-mixin.
לחץ על הלוח Kubernetes / Nodes, שמציג שימוש ב-CPU, זיכרון, דיסק ורשת עבור צומת נתונה:
לתאר כיצד להשתמש בלוחות אלה נמצא מחוץ לטווח של המדריך הזה, אך תוכל להתייעץ עם המקורות הבאים למידע נוסף:
- כדי לדעת עוד על שיטת USE לניתוח ביצועי המערכת, ניתן להתייעץ עם עמוד שיטת השימוש, השפעה ושגיאות (USE) של ברנדן גרג.
- ספר ה-SRE של Google הוא מקור נוסף ושימושי, בפרט פרק 6: ניטור של מערכות מבוזרות.
- כדי ללמוד כיצד לבנות את הלוחות המסקרנים שלך, עיין ב-דף ההתחלה של Grafana.
בשלב הבא, נמשיך לעקוב אחר תהליך דומה לחיבור ולחקירה של מערכת הניטורים של Prometheus.
שלב 4 — גישה ל־Prometheus ולAlertmanager
כדי להתחבר ל־Prometheus Pods, ניתן להשתמש ב־kubectl port-forward
כדי להעביר פורט מקומי. אם סיימת לחקור את Grafana, תוכל לסגור את המנהל הצפוני על ידי לחיצה על CTRL-C
. כאלו או שניתן לפתוח מסלול חדש וליצור חיבור צפון חדש.
התחל על ידי לרשום את ה־Pods הרצים ב־default
namespace:
תראה את ה־Pods הבאים:
Outputsammy-cluster-monitoring-alertmanager-0 1/1 Running 0 17m
sammy-cluster-monitoring-alertmanager-1 1/1 Running 0 15m
sammy-cluster-monitoring-grafana-0 1/1 Running 0 16m
sammy-cluster-monitoring-kube-state-metrics-d68bb884-gmgxt 2/2 Running 0 16m
sammy-cluster-monitoring-node-exporter-7hvb7 1/1 Running 0 16m
sammy-cluster-monitoring-node-exporter-c2rvj 1/1 Running 0 16m
sammy-cluster-monitoring-node-exporter-w8j74 1/1 Running 0 16m
sammy-cluster-monitoring-prometheus-0 1/1 Running 0 16m
sammy-cluster-monitoring-prometheus-1 1/1 Running 0 16m
אנו מתכוונים להעביר פורט מקומי 9090
לפורט 9090
של ה־Pod sammy-cluster-monitoring-prometheus-0
:
תראה את הפלט הבא:
OutputForwarding from 127.0.0.1:9090 -> 9090
Forwarding from [::1]:9090 -> 9090
זה מציין כי הפורט המקומי 9090
מועבר בהצלחה ל־Prometheus Pod.
כנס ל־http://localhost:9090
בדפדפן האינטרנט שלך. אתה צריך לראות את דף ה־Graph של Prometheus הבא:
מכאן ניתן להשתמש ב־PromQL, שפת השאילתות של Prometheus, כדי לבחור ולצבור מטריקות סדרות זמן שמאוחסנות במסד הנתונים שלו. כדי ללמוד עוד על PromQL, יש לעיין ב־שאילתת Prometheus מתיעוד ה־Prometheus הרשמי.
בשדה Expression, הקלד kubelet_node_name
ולחץ בצע. אתה צריך לראות רשימת סדרי זמן עם המדד kubelet_node_name
שמדווחים על הצמתים באשכולת Kubernetes שלך. ניתן לראות איזה צומת הפיקה את המדד ואיזה משימה גוררת את המדד בתוויות המדד:
לבסוף, בסרגל הניווט העליון, לחץ על סטטוס ואז על יעדים כדי לראות את רשימת היעדים שהוגדרו ל- Prometheus לסרוק. אתה צריך לראות רשימת יעדים המתאימים לרשימת נקודות המעקב שתוארה בתחילת שלב 2.
כדי ללמוד עוד על Prometheus וכיצד לשאול את מדדי האשכול שלך, יש להתייעץ עם ה- מסמכי Prometheus הרשמיים.
כדי להתחבר ל- Alertmanager, אשר מנהל התראות שנוצרו על ידי Prometheus, נמשיך בתהליך דומה לזה שהשתמשנו בו כדי להתחבר ל- Prometheus. בכלל, ניתן לחקור את התראות Alertmanager על ידי לחיצה על התראות בסרגל הניווט העליון של Prometheus.
כדי להתחבר לקופסאות ה- Alertmanager, נשתמש שוב ב- kubectl port-forward
כדי להעביר פורט מקומי. אם סיימת לחקור את Prometheus, תוכל לסגור את המנהרה של פורט-הקדימה על ידי לחיצה על CTRL-C
או לפתוח מסוף חדש כדי ליצור חיבור חדש.
אנו הולכים להעביר את פתח היבוא 9093
לפתח 9093
של ה־Pod sammy-cluster-monitoring-alertmanager-0
:
עליך לראות את הפלט הבא:
OutputForwarding from 127.0.0.1:9093 -> 9093
Forwarding from [::1]:9093 -> 9093
זה מציין שפתח היבוא המקומי 9093
מועבר בהצלחה ל־Pod של Alertmanager.
כדי לצפות בזה בדפדפן שלך, עבור לכתובת http://localhost:9093
. עליך לראות את עמוד ה־Alerts הבא:
מכאן, תוכל לחקור התראות שמופעלות ואפשר גם להשתיק אותן. כדי ללמוד עוד על Alertmanager, עיין ב־תיעוד הרשמי של Alertmanager.
בשלב הבא, תלמד כיצד להגדיר אופציונלית ולהתקין כמה מרכיבי עריכה בערוץ המעקב.
שלב 6 — הגדרת ערוץ המעקב (אופציונלי)
ההגדרות הכלולות במאגר התחלתי המהיר של ערוץ המעקב בקלאסטר Kubernetes של DigitalOcean ניתן לשנות כך שישמשו תמונות של מיכל שונות, מספרים שונים של כתמים של Pod, פתחים שונים וקבצי הגדרה שונים.
בשלב זה, נספק מבט כללי על מטרת כל מאגר, ואז נדגים כיצד להגדיר את Prometheus עד ל־3 כתמים על ידי שינוי בקובץ המאגר הראשי.
להתחיל, נווטו אל תת־הספרייה manifests
במאגר, ורשמו את תוכן התיקייה:
Outputalertmanager-0serviceaccount.yaml
alertmanager-configmap.yaml
alertmanager-operated-service.yaml
alertmanager-service.yaml
. . .
node-exporter-ds.yaml
prometheus-0serviceaccount.yaml
prometheus-configmap.yaml
prometheus-service.yaml
prometheus-statefulset.yaml
כאן תמצאו מנפקים עבור רכיבי קופסת הכלים לניטור שונים. כדי ללמוד עוד על פרמטרים ספציפיים במנפקים, לחצו על הקישורים והתייעצו עם ההערות הכלולות בקבצי ה־YAML:
Alertmanager
-
alertmanager-0serviceaccount.yaml
: חשבון השירות של Alertmanager, המשמש לתת ל־Pods של Alertmanager זהות ב־Kubernetes. כדי ללמוד עוד על חשבונות השירות, התייעצו עם הגדרת חשבונות שירות ל־Pods. -
alertmanager-configmap.yaml
: קובץ התצורה של Alertmanager, המכיל תצורה מינימלית של ConfigMap, נקראalertmanager.yml
. הגדרת Alertmanager חורגת מהיקף המדריך הזה, אך תוכל ללמוד עוד על ידי התייעצות עם קטע ה-תצורה בתיעוד של Alertmanager. -
alertmanager-operated-service.yaml
: שירות Alertmanagermesh
, המשמש לניתוב בקשות בין תיבות פודים של Alertmanager בהגדרת זמינות גבוהה עם 2 תצורות כפולות. -
alertmanager-service.yaml
: שירות האזהרות של Alertmanager, המשמש לגישה לממשק האינטרנט של Alertmanager, שאולי עשית בשלב הקודם. -
alertmanager-statefulset.yaml
: ה-StatefulSet של Alertmanager, מוגדר עם 2 עותקים.
Grafana
-
dashboards-configmap.yaml
: ConfigMap שמכיל את ה־dashboards של ניטור Grafana המוגדרים מראש. הפיקוד ליצירת סט חדש של dashboards והתראות מאפס עולה מעבר לטווח של המדריך הזה, אך למידע נוסף ניתן להתייעץ עם כרטיסיית ה־GitHub של kubernetes-mixin. -
grafana-0serviceaccount.yaml
: חשבון השירות של Grafana. -
grafana-configmap.yaml
: קובץ ConfigMap המכיל סט ברירת מחדל של קבצי תצורה מינימליים של Grafana. -
grafana-secret.yaml
: Secret של Kubernetes המכיל את משתמש המנהל והסיסמה של Grafana. למידע נוסף אודות סודות של Kubernetes, ראו Secrets. -
grafana-service.yaml
: המפענח שמגדיר את שירות ה-Grafana. -
grafana-statefulset.yaml
: StatefulSet של Grafana, מוגדר עם רפליקה אחת, שאינה ניתנת להרחבה. להרחבת Grafana חורגת מהטווח של המדריך הזה. כדי ללמוד כיצד ליצור קבוצת Grafana הזמינה ביותר, ניתן להתייעץ עם איך להגדיר Grafana עבור זמינות גבוהה מתוך תיעוד הרשמי של Grafana.
kube-state-metrics
-
kube-state-metrics-0serviceaccount.yaml
: חשבון שירות kube-state-metrics ו ClusterRole. כדי ללמוד עוד על ClusterRoles, ניתן להתייעץ עם תפקיד ו ClusterRole מתוך תיעוד Kubernetes. -
קובץ kube-state-metrics-deployment.yaml: תבנית ההתקנה העיקרית של kube-state-metrics, מוגדרת עם רפליקה דינמית אחת באמצעות addon-resizer.
-
קובץ kube-state-metrics-service.yaml: השירות שמחשף את ההתקנה kube-state-metrics.
node-exporter
-
node-exporter-0serviceaccount.yaml
: חשבון השירות של node-exporter. -
node-exporter-ds.yaml
: רישום ה-DaemonSet של node-exporter. מאחר ו-node-exporter הוא DaemonSet, Pod של node-exporter רץ על כל צומת באשכול.
###Prometheus
-
prometheus-0serviceaccount.yaml
: חשבון השירות, ClusterRole ו-ClusterRoleBinding של Prometheus. -
prometheus-configmap.yaml
: קובץ ConfigMap שמכיל שלושה קבצי הגדרה:alerts.yaml
: מכיל סט מוגדר מראש של התראות שנוצרו על ידיkubernetes-mixin
(שנמצא גם בשימוש ליצירת דפי ניטור ב-Grafana). כדי ללמוד עוד על הגדרת כללי ההתראה, יש לעיין במדריך כללי התראה במסמכי ה- Prometheus.prometheus.yaml
: קובץ הגדרת המרכז של Prometheus. Prometheus הוגדר מראש לגלקות את כל הרכיבים הרשומים בתחילת שלב 2. הגדרת Prometheus חורגת מטווח המאמר הזה, אך כדי ללמוד עוד, ניתן לעיין במדריך הגדרה ממדריכי Prometheus הרשמיים.rules.yaml
: סט של כללי רישום של Prometheus שמאפשרים ל-Prometheus לחשב ביטויים שנדרשים בתדירות או שמותכנים במחשבה, ולשמור את התוצאות שלהם כסט חדש של סדרות זמן. אלו גם נוצרים על ידיkubernetes-mixin
, והגדרתם חורגת מטווח המאמר הזה. כדי ללמוד עוד, ניתן לעיין במדריך כללי הרישום מתיעוד Prometheus הרשמי.
-
prometheus-service.yaml
: השירות שמחשף את Prometheus StatefulSet. -
prometheus-statefulset.yaml
: Prometheus StatefulSet, מוגדר עם 2 תמונות שכפול. פרמטר זה יכול להיות מתאים לצורכים שלך.
דוגמה: התכנסות של Prometheus
כדי להדגים איך לשנות את המחסנית של הניטור, נכפיל את מספר התמונות של Prometheus מ-2 ל-3.
פתח את קובץ המניפסט הראשי sammy-cluster-monitoring_manifest.yaml
בעזרת עורך הטקסט שלך:
גלה למטה לקטע ה- StatefulSet של Prometheus במניפסט:
Output. . .
apiVersion: apps/v1beta2
kind: StatefulSet
metadata:
name: sammy-cluster-monitoring-prometheus
labels: &Labels
k8s-app: prometheus
app.kubernetes.io/name: sammy-cluster-monitoring
app.kubernetes.io/component: prometheus
spec:
serviceName: "sammy-cluster-monitoring-prometheus"
replicas: 2
podManagementPolicy: "Parallel"
updateStrategy:
type: "RollingUpdate"
selector:
matchLabels: *Labels
template:
metadata:
labels: *Labels
spec:
. . .
שנה את מספר התמונות השכפול מ-2 ל-3:
Output. . .
apiVersion: apps/v1beta2
kind: StatefulSet
metadata:
name: sammy-cluster-monitoring-prometheus
labels: &Labels
k8s-app: prometheus
app.kubernetes.io/name: sammy-cluster-monitoring
app.kubernetes.io/component: prometheus
spec:
serviceName: "sammy-cluster-monitoring-prometheus"
replicas: 3
podManagementPolicy: "Parallel"
updateStrategy:
type: "RollingUpdate"
selector:
matchLabels: *Labels
template:
metadata:
labels: *Labels
spec:
. . .
כשתסיים, שמור וסגור את הקובץ.
החלפת השינויים באמצעות kubectl apply -f
:
ניתן לעקוב אחר התקדמות באמצעות kubectl get pods
. באמצעות השיטה זו ניתן לעדכן מספר רב של פרמטרים של Kubernetes וקונפיגורציה רבה יותר לערך של הערכת הניצול.
מסקנה
במדריך זה, התקנת צבירת מספרי Prometheus, Grafana, ו-Alertmanager אל תוך קבוצת Kubernetes של DigitalOcean עם קבוצה סטנדרטית של לוחות מחוונים, כללי Prometheus, והתראות.
ניתן גם לבחור להפעיל ערימת מוניטורינג זו באמצעות Helm, מנהל החבילות של Kubernetes. למידע נוסף, יש להתייעץ עם איך להגדיר ניטור של קבוצת DigitalOcean Kubernetes עם Helm ו-Prometheus. אופציה אלטרנטיבית להפעלת קבוצת דמויות דומה היא להשתמש בפתרון מאגר פתרונות ניטור Kubernetes של DigitalOcean, כיום בבטא.
המאגר של DigitalOcean Kubernetes Cluster Monitoring Quickstart מבוסס במידה רבה על ומשונה מפתרון ה-click-to-deploy של Google Cloud Platform. ניתן למצוא את רשימת השינויים וההתאמות המלאה מהמאגר המקורי בקובץ changes.md
במאגר המהיר של Quickstart.