כיצד להגדיר ערכת ניטור Kubernetes עם Prometheus, Grafana ו-Alertmanager ב- DigitalOcean

מצב: מופסק

מאמר זה נמחק ואינו מתוחזק יותר.

סיבה

השלבים במדריך זה עדיין עובדים, אך ייצור תצורה שכזו כעת קשה לתחזוקה מיותר.

ראה במקום זאת

מאמר זה עדיין עשוי להיות שימושי כמקור להפניה, אך עשוי לא לעקוב אחרי הפרקטיקות הטובות ביותר. אנו ממליצים בחום להשתמש במאמר יותר חדש.

מבוא

יחד עם העקיפה וההתעקבות, המעקב וההתראה הם רכיבים איתנים של חבילת האפשרויות של 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:

  1. git clone https://github.com/do-community/doks-monitoring.git

לאחר מכן, נווט אל המאגר:

  1. cd doks-monitoring

תראה את מבנה הספריות הבא:

  1. ls
Output
LICENSE README.md changes.txt manifest

הספרייה manifest מכילה רישומי Kubernetes עבור כל רכיבי מחסניית הניטור, כולל חשבונות שירות, איחסונים, קבוצות רשת, Map-ים לתצורה, וכו'. כדי ללמוד עוד על קבצי הרישום האלה וכיצד להגדיר אותם, עבור ל-הגדרת סט הניטורים.

אם רוצים פשוט להפעיל את הדברים, התחילו על ידי להגדיר את המשתנים הסביבתיים APP_INSTANCE_NAME ו־NAMESPACE, שיכולים לשמש לתצורת שם ייחודי עבור רכיבי הסטאק ולהגדיר את ה־Namespace שבו יותקן הסטאק:

  1. export APP_INSTANCE_NAME=sammy-cluster-monitoring
  2. export NAMESPACE=default

במדריך זה, אנו מגדירים את APP_INSTANCE_NAME ל־sammy-cluster-monitoring, שישים לכל אחד מרכיבי ה־Kubernetes של הסטאק את שמותיו. עליך להחליף בקידומת תיאורית ייחודית עבור הסטאק המעקב שלך. אנו גם מגדירים את ה־Namespace ל־default. אם ברצונך להטמיע את הסטאק ל־Namespace שאינו default, ודא שיצרת אותו בקרוב שלך:

  1. kubectl create namespace "$NAMESPACE"

עליך לראות את הפלט הבא:

Output
namespace/sammy created

במקרה זה, המשתנה הסביבתי NAMESPACE הוגדר ל־sammy. לאורך שאר המדריך, נניח ש־NAMESPACE הוגדר ל־default.

עכשיו, השתמשו בפקודת base64 כדי להצפין בבסיס 64 את הסיסמה המאובטחת של Grafana. ודאו להחליף את הסיסמה לבחירתכם במקום your_grafana_password:

  1. export GRAFANA_GENERATED_PASSWORD="$(echo -n 'your_grafana_password' | base64)"

אם אתם משתמשים ב־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.

  1. awk 'FNR==1 {print "---"}{print}' manifest/* \
  2. | envsubst '$APP_INSTANCE_NAME $NAMESPACE $GRAFANA_GENERATED_PASSWORD' \
  3. > "${APP_INSTANCE_NAME}_manifest.yaml"

כדאי לשקול לאחסן את הקובץ הזה בבקרת גרסאות כך שתוכל לעקוב אחרי שינויים בערכת המעקב ולגלות לגרסאות קודמות. אם תבצע זאת, הקפד לנקות את המשתנה admin-password מהקובץ כדי שלא תבדוק את הסיסמה שלך של Grafana לבקרת גרסאות.

עכשיו שיצרת את קובץ המניפסט הראשי, השתמש ב־kubectl apply -f כדי ליישם את המניפסט וליצור את הערימה ב-Namespace שהגדרת:

  1. kubectl apply -f "${APP_INSTANCE_NAME}_manifest.yaml" --namespace "${NAMESPACE}"

תראה פלט דומה לזה:

Output
serviceaccount/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:

  1. kubectl patch svc "$APP_INSTANCE_NAME-grafana" \
  2. --namespace "$NAMESPACE" \
  3. -p '{"spec": {"type": "LoadBalancer"}}'

הפקודה kubectl patch מאפשרת לך לעדכן אובייקטים ב-Kubernetes במקום כדי לבצע שינויים מבלי לצפות את האובייקטים. ניתן גם לשנות את קובץ המניפסט הראשי ישירות, ולהוסיף פרמטר type: LoadBalancer לפרטי השירות של Grafana. כדי לקבל מידע נוסף על kubectl patch וסוגי השירותים של Kubernetes, ניתן להתייעץ עם משאבי ה-Update API Objects in Place Using kubectl patch ו-Services במסמכי המדריך הרשמי של Kubernetes.

לאחר הרצת הפקודה לעיל, יש לראות את התוצאות הבאות:

Output
service/sammy-cluster-monitoring-grafana patched

עשוי לקחת מספר דקות ליצירת המאזן האוטומטי ולהקצאת כתובת IP ציבורית לו. ניתן לעקוב אחר התקדמותו באמצעות הפקודה הבאה עם הדגל -w כדי לצפות בשינויים:

  1. kubectl get service "$APP_INSTANCE_NAME-grafana" -w

לאחר שהמאזן האוטומטי של DigitalOcean נוצר וניתן לו כתובת IP חיצונית, ניתן לאחזר את כתובת ה-IP החיצונית שלו באמצעות הפקודות הבאות:

  1. SERVICE_IP=$(kubectl get svc $APP_INSTANCE_NAME-grafana \
  2. --namespace $NAMESPACE \
  3. --output jsonpath='{.status.loadBalancer.ingress[0].ip}')
  4. echo "http://${SERVICE_IP}/"

כעת ניתן לגשת לממשק ה-Grafana על ידי ניווט אל http://SERVICE_IP/.

הפניית פורט מקומי כדי לגשת לשירות Grafana

אם אינך רוצה לחשוף את שירות Grafana לציבור, אפשר גם להפנות את הפורט המקומי 3000 ישירות אל ה־cluster לתוך Pod של Grafana באמצעות kubectl port-forward.

  1. kubectl port-forward --namespace ${NAMESPACE} ${APP_INSTANCE_NAME}-grafana-0 3000

תראה את הפלט הבא:

Output
Forwarding 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, זיכרון, דיסק ורשת עבור צומת נתונה:

לתאר כיצד להשתמש בלוחות אלה נמצא מחוץ לטווח של המדריך הזה, אך תוכל להתייעץ עם המקורות הבאים למידע נוסף:

בשלב הבא, נמשיך לעקוב אחר תהליך דומה לחיבור ולחקירה של מערכת הניטורים של Prometheus.

שלב 4 — גישה ל־Prometheus ולAlertmanager

כדי להתחבר ל־Prometheus Pods, ניתן להשתמש ב־kubectl port-forward כדי להעביר פורט מקומי. אם סיימת לחקור את Grafana, תוכל לסגור את המנהל הצפוני על ידי לחיצה על CTRL-C. כאלו או שניתן לפתוח מסלול חדש וליצור חיבור צפון חדש.

התחל על ידי לרשום את ה־Pods הרצים ב־default namespace:

  1. kubectl get pod -n default

תראה את ה־Pods הבאים:

Output
sammy-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:

  1. kubectl port-forward --namespace ${NAMESPACE} sammy-cluster-monitoring-prometheus-0 9090

תראה את הפלט הבא:

Output
Forwarding 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:

  1. kubectl port-forward --namespace ${NAMESPACE} sammy-cluster-monitoring-alertmanager-0 9093

עליך לראות את הפלט הבא:

Output
Forwarding 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 במאגר, ורשמו את תוכן התיקייה:

  1. cd manifest
  2. ls
Output
alertmanager-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: שירות Alertmanager mesh, המשמש לניתוב בקשות בין תיבות פודים של 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

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 בעזרת עורך הטקסט שלך:

  1. nano 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:

  1. kubectl apply -f sammy-cluster-monitoring_manifest.yaml --namespace default

ניתן לעקוב אחר התקדמות באמצעות 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.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-kubernetes-monitoring-stack-with-prometheus-grafana-and-alertmanager-on-digitalocean