כיצד להגדיר את TOBS, מערכת הקפטור עבור ניטור Kubernetes

סטטוס: מופסק

מאמר זה מופסק ואינו נתמך עוד.

סיבה

מתקין TOBS הופסק מראשי המקור.

ראה במקום זאת

התיעוד הרשמי של TOBS.

הקדמה

TOBS, בר-קיצור The Observability Stack, הוא חלוקת תוכנה מוכנה מראש של כלי מעקב וממשקי לוח שניתן להתקין בכל אשף Kubernetes קיים. זה כולל רבים מהכלים למעקב הפתוחים ביותר עם Prometheus ו-Grafana כבסיס, כולל Promlens, TimescaleDB, Alertmanager, ואחרים. יחד, כל אלו מספקים פתרון ישיר וניתן לתחזוקה לניתוח תעבורת שרת וזיהוי כל בעיות פוטנציאליות עם פריסה עד לסקאלה גדולה מאוד.

TOBS משתמשת בתרגילי התקנה סטנדרטיים של Kubernetes מגרפי Helm כדי להגדיר ולעדכן פיתוחים. ניתן להתקין אותו בכל אשכול Kubernetes, אך יש כוח דמונסטרציה יותר יעיל אם אתה מפעיל kubectl לניהול האשכול שלך ממכונת מקומית במקום מהשרת המרוחק. Managed Kubernetes של דיגיטל אושן תספק לך הגדרה כזו כברירת מחדל.

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

דרישות מוקדמות

כדי לעקוב אחרי המדריך הזה, יהיה עליך לצרף:

שלב 1 — אימות התצורה שלך ב-Kubernetes

כדי להתקין את TOBS, עליך להגדיר תצורת Kubernetes תקינה תחילה עם kubectl ממנה תוכל לעשות ping לצומתי העבודה שלך. ניתן לבדוק זאת על ידי הרצת kubectl get nodes:

  1. kubectl get nodes

אם kubectl מצליח להתחבר לאשכול Kubernetes שלך והוא פועל כמצופה, הפקודה הזו תחזיר רשימת צמתים עם סטטוס Ready:

Output
NAME STATUS ROLES AGE VERSION pool-uqv8a47h0-ul5a7 Ready <none> 22m v1.21.5 pool-uqv8a47h0-ul5am Ready <none> 21m v1.21.5 pool-uqv8a47h0-ul5aq Ready <none> 21m v1.21.5

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

בברירת מחדל, kubectl יחפש קובץ בנתיב ~/.kube/config כדי להבין את הסביבה שלך. כדי לוודא שהקובץ הזה קיים ומכיל תחביר YAML תקף, תוכל להריץ את head עליו כדי להציג את השורות הראשונות שלו:

  1. head ~/.kube/config
Output
apiVersion: v1 clusters: - cluster: certificate-authority-data: …

אם הקובץ לא קיים, ודא שאתה מחובר כאותו משתמש שהגדרת Kubernetes איתו. נתיבים של ~/ מתייחסים לספריות הבית של משתמשים ספציפיים, והגדרות Kubernetes נשמרות לפי ברירת מחדל לכל משתמש.

אם אתה משתמש ב- Managed Kubernetes של DigitalOcean, ודא שהרצת את הפקודה doctl kubernetes cluster kubeconfig save לאחר הגדרת האשכול כך שהמכונה המקומית שלך תוכל לאמת אליו. זה ייצור קובץ ~/.kube/config:

  1. doctl kubernetes cluster kubeconfig save your-cluster-name

אם אתה משתמש במכונה זו כדי לגשת למספר אשכולות, עליך לבדוק את תיעוד ה-Kubernetes לגבי שימוש במשתני סביבה ובקבצי תצורה מרובים כדי למנוע עקומות. לאחר הגדרת סביבת ה-kubectl שלך, תוכל להמשיך להתקין את TOBS בשלב הבא.

שלב 2 — התקנת TOBS ובדיקת נקודות הסיום שלך

TOBS כולל את הרכיבים הבאים:

  • Prometheus הוא מסד נתונים של סדרות זמן וכלי לניטור שעובד על ידי איסוף של נקודות המדידה וגילוי נתונים מקושרים על ידי נקודות אלה. זה מאפשר לך לשאול את הנתונים האלה באמצעות PromQL, שפת שאילתות לנתוני סדרות זמן.
  • Alertmanager, שבדרך כלל מותקן לצד Prometheus, מהווה את שכבת ההתראה של המערכת, מטפל בהתראות שנוצרו על ידי Prometheus ומבצע הכפלה, קיבוץ וניתוב שלהן לאינטגרציות כגון אימייל או PagerDuty. כדי לקבל מידע נוסף על Alertmanager, יש לעיין ב- מסמך התיעוד של Prometheus על התראות.
  • Grafana הוא כלי לתצוגת נתונים ולניתוחים שמאפשר לך לבנות לוחות מחוונים וגרפים עבור נתוני המדריכים שלך.
  • kube-state-metrics הוא סוכן תוספתי שמקשיב לשרת ה- API של Kubernetes ויוצר מדדים על מצב עצם Kubernetes כמו הפצות וכדורים. נתוני המדידה הללו מוצגים כטקסט פשוט על נקודות הסיום של HTTP ומיוצרים על ידי Prometheus.
  • לבסוף הוא node-exporter, מייצא של Prometheus שרץ על צמתי הקבוצה ומספק מדדי מערכת ההפעלה והחומרה כמו שימוש במעבד ובזיכרון לPrometheus. מדדים אלו מוצגים גם כטקסט פשוט בנקודות קצה של HTTP ומתפסים על ידי Prometheus.

כדי להתקין TOBS, עליך תחילה להריץ את מתקין TOBS על עמדת השליטה שלך. זה יקים את הפקודה tobs ואת ספריות התצורה. כפי שנאמר בתנאי הדרישה המוקדמים, הפקודה tobs מיועדת רק לעבוד על מערכות Linux/macOS/BSD (כמו הבינאריים הרשמיים של Kubernetes), לכן אם עד עכשיו השתמשת ב-Windows, עליך לעבוד בסביבת Windows Subsystem for Linux.

אחזר והרץ את מתקין TOBS:

  1. curl --proto '=https' --tlsv1.2 -sSLf https://tsdb.co/install-tobs-sh |sh
Output
tobs 0.7.0 was successfully installed ? Binary is available at /root/.local/bin/tobs.

כעת ניתן לדחוף TOBS אל קבוצת ה-Kubernetes שלך. זה נעשה על ידי שורת פקודה אחת באמצעות הפקודה tobs החדשה שסופקה לך:

  1. tobs install

זה יפיק מספר שורות פלט ועשוי לקחת מספר רגעים. בהתאם לגרסת Kubernetes הדיוק שלך, ייתכנו מספר אזהרות בפלט, אך תוכל להתעלם מהם כל עוד בסופו של דבר תקבל את הודעת ה-Welcome to tobs:

Output
WARNING: Using a generated self-signed certificate for TLS access to TimescaleDB. This should only be used for development and demonstration purposes. To use a signed certificate, use the "--tls-timescaledb-cert" and "--tls-timescaledb-key" flags when issuing the tobs install command. Creating TimescaleDB tobs-certificate secret Creating TimescaleDB tobs-credentials secret skipping to create TimescaleDB s3 backup secret as backup option is disabled. 2022/01/10 11:25:34 Transport: unhandled response frame type *http.http2UnknownFrame 2022/01/10 11:25:35 Transport: unhandled response frame type *http.http2UnknownFrame 2022/01/10 11:25:35 Transport: unhandled response frame type *http.http2UnknownFrame Installing The Observability Stack 2022/01/10 11:25:37 Transport: unhandled response frame type *http.http2UnknownFrame W0110 11:25:55.438728 75479 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ W0110 11:25:55.646392 75479 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ … ?? Welcome to tobs, The Observability Stack for Kubernetes …

מכאן ואילך, הפלט יכיל הוראות להתחברות לכל אחת מנקודות הקצה של Prometheus, TimescaleDB, PromLens, ו-Grafana בדפדפן שלך. הוא משוכף במלואו למטרות התייחסות:

Output
############################################################################### ? PROMETHEUS NOTES: ############################################################################### Prometheus can be accessed via port 9090 on the following DNS name from within your cluster: tobs-kube-prometheus-prometheus.default.svc.cluster.local Get the Prometheus server URL by running these commands in the same shell: tobs prometheus port-forward The Prometheus alertmanager can be accessed via port 9093 on the following DNS name from within your cluster: tobs-kube-prometheus-alertmanager.default.svc.cluster.local Get the Alertmanager URL by running these commands in the same shell: export POD_NAME=$(kubectl get pods --namespace default -l "app=alertmanager,alertmanager=tobs-kube-prometheus-alertmanager" -o jsonpath="{.items[0].metadata.name}") kubectl --namespace default port-forward $POD_NAME 9093 WARNING! Persistence is disabled on AlertManager. You will lose your data when the AlertManager pod is terminated. ############################################################################### ? TIMESCALEDB NOTES: ############################################################################### TimescaleDB can be accessed via port 5432 on the following DNS name from within your cluster: tobs.default.svc.cluster.local To get your password for superuser run: tobs timescaledb get-password -U <user> To connect to your database, chose one of these options: 1. Run a postgres pod and connect using the psql cli: tobs timescaledb connect -U <user> 2. Directly execute a psql session on the master node tobs timescaledb connect -m ############################################################################### ? PROMLENS NOTES: ############################################################################### PromLens is a PromQL query builder, analyzer, and visualizer. You can access PromLens via a local browser by executing: tobs promlens port-forward Then you can point your browser to http://127.0.0.1:8081/. ############################################################################### ? GRAFANA NOTES: ############################################################################### 1. The Grafana server can be accessed via port 80 on the following DNS name from within your cluster: tobs-grafana.default.svc.cluster.local You can access grafana locally by executing: tobs grafana port-forward Then you can point your browser to http://127.0.0.1:8080/. 2. The 'admin' user password can be retrieved by: tobs grafana get-password 3. You can reset the admin user password with grafana-cli from inside the pod. tobs grafana change-password <password-you-want-to-set>

כל אחד מהם מצויד עם שם DNS פנימי לקבוצה שלך כך שניתן לגשת אליהם מכל נודי העבודה שלך, לדוגמה tobs-kube-prometheus-alertmanager.default.svc.cluster.local עבור Prometheus. בנוסף, ישנו פקודת הפנייה שמוגדרת עבור כל אחד מהם שמאפשרת לך לגשת אליהם מדפדפן אינטרנט מקומי.

בחלון טרמינל חדש, הריצו tobs prometheus port-forward:

  1. tobs prometheus port-forward

זה יתפס את הטרמינל כל עוד התהליך של פניית הפורט פעיל. ניתן ללחוץ על Ctrl+C כדי לסיים בצורה חלקה תהליך חסימה כזה כאשר ברצונך להפסיק את הפניית הפורט. לאחר מכן, בדפדפן אינטרנט, פתחו את הכתובת http://127.0.0.1:9090/. תראו את ממשק ה-Prometheus המלא רץ ויוצר מטריקות מהקבוצה שלך:

באפשרותך לעשות את אותו הדבר עבור Grafana, שזמינה בכתובת http://127.0.0.1:8080/ כל עוד פניית הפורט פעילה בתהליך אחר. תחילה, עליך להשתמש בפקודת get-password המסופקת על ידי פלט ההתקנה:

  1. tobs grafana get-password
Output
your-grafana-password

אז תוכל להשתמש בסיסמה זו כדי להתחבר לממשק של Grafana על ידי הרצת פקודת פניית הפורט שלו ופתיחת http://127.0.0.1:8080/ בדפדפן שלך.

  1. tobs grafana port-forward

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

שלב 3 — עריכת תצורות TOBS ושדרוג

התצורה של TOBS מכילה פרמטרים ליישומים היחידיים בערמת המערכת, כמו גם פרמטרים לפרט עצמו של ההפצה של TOBS. התצורה נוצרת ומאוחסנת כתבנית קוברנטס קובץ ה- Helm. ניתן להדפיס את התצורה הנוכחית שלך על ידי הרצת tobs helm show-values. אולם, זה ידפיס את כל התצורה הארוכה לטרמינל שלך, שיכולה להיות קשה לקריאה. ניתן במקום להפנות את הפלט לקובץ עם סיומת .yaml, מאחר וקבצי Helm הם כלפי YAML תקפים:

  1. tobs helm show-values > values.yaml

תוכן הקובץ יראה כך:

~/values.yaml
2022/01/10 11:56:37 Transport: unhandled response frame type *http.http2UnknownFrame
# ערכים להגדרת ההתקנה של TimescaleDB
# README של הקובץ נמצא ב:
#    https://github.com/timescale/timescaledb-kubernetes/tree/master/charts/timescaledb-single
# כדאי לעיין באפשרויות ההגדרה השונות (מדריך מנהל)
#    https://github.com/timescale/timescaledb-kubernetes/blob/master/charts/timescaledb-single/admin-guide.md
cli: false

# דרך הגדרת מרחב ההתקנה
namespaceOverride: ""
…

ניתן לבדוק את הפרמטרים הנוספים הזמינים לתצורה של TOBS על ידי קריאה ב- מסמך התיעוד של TOBS

אם תשנה אי פעם את הקובץ כדי לעדכן את ההתקנה שלך, תוכל להתקין את TOBS שוב על עצמו באמצעות הקונפיגורציה המעודכנת. פשוט העבר את האפשרות -f לפקודת tobs install עם הקובץ YAML כארגומנט נוסף:

  1. tobs install -f values.yaml

סוף כל סוף, תוכל לשדרג TOBS עם הפקודה הבאה:

  1. tobs upgrade

זה מבצע את השוואת המקבילה של helm upgrade על ידי גישה לגרסה העדכנית ביותר של התבנית מהשרת המרכזי.

מסקנה

במדריך זה, למדת להפעיל ולהגדיר TOBS, The Observability Stack, על קשת Kubernetes קיימת. TOBS עוזר במיוחד מאחר שהוא מסיר את הצורך לשמור בנפרד על פרטי התצורה עבור כל אחד מאפליקציות אלו, תוך ספק איכות סטנדרטית לניטור עבור האפליקציות שרצות על הקלאסטר שלך.

בשלב הבא, עשוי לרצות ללמוד כיצד להשתמש ב- Cert-Manager כדי לטפל בכניסת HTTPS לקלאסטר Kubernetes שלך.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-tobs-the-observability-stack-for-kubernetes-monitoring