במדריך הזה נסביר איך להגדיר בדיקות פעילות למיקרו-שירותים של אפליקציות שנפרסו ב-Google Kubernetes Engine (GKE) באמצעות Prometheus בקוד פתוח.
במדריך הזה נעשה שימוש ב-Prometheus בקוד פתוח. עם זאת, בכל אשכול GKE Autopilot נפרס באופן אוטומטי שירות מנוהל ל-Prometheus, שהוא פתרון מנוהל מלא, מרובה עננים וחוצה פרויקטים למדדי Prometheus.Google Cloudהשירות המנוהל ל-Prometheus מאפשר לכם לעקוב אחרי עומסי העבודה שלכם ולשלוח התראות לגביהם באופן גלובלי באמצעות Prometheus, בלי שתצטרכו לנהל ולהפעיל את Prometheus באופן ידני בהיקף גדול.
אפשר גם להשתמש בכלים של קוד פתוח כמו Grafana כדי להציג באופן חזותי את המדדים שנאספים על ידי Prometheus.
מטרות
- יוצרים אשכול.
- פורסים את Prometheus.
- פורסים את האפליקציה לדוגמה, Bank of Anthos.
- מגדירים בדיקות תקינות (liveness probes) של Prometheus.
- הגדרת התראות ב-Prometheus.
- הגדרת Alertmanager לקבלת התראה בערוץ Slack.
- מדמים הפסקת חשמל כדי לבדוק את Prometheus.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
Roles required to create a project
To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. -
Verify that billing is enabled for your Google Cloud project.
Enable the GKE API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
Roles required to create a project
To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. -
Verify that billing is enabled for your Google Cloud project.
Enable the GKE API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.- מתקינים את Helm CLI
הכנת הסביבה
במדריך הזה משתמשים ב-Cloud Shell כדי לנהל משאבים שמתארחים ב-Google Cloud.
מגדירים את משתני הסביבה שמוגדרים כברירת מחדל:
gcloud config set project PROJECT_ID gcloud config set compute/region CONTROL_PLANE_LOCATIONמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud. -
CONTROL_PLANE_LOCATION: האזור של Compute Engine במישור הבקרה של האשכול. במדריך הזה, האזור הואus-central1. בדרך כלל, כדאי לבחור אזור שקרוב אליכם.
-
משכפלים את המאגר לדוגמה שבו השתמשנו במדריך הזה:
git clone https://github.com/GoogleCloudPlatform/bank-of-anthos.git cd bank-of-anthos/יצירת אשכול:
gcloud container clusters create-auto CLUSTER_NAME \ --release-channel=CHANNEL_NAME \ --location=CONTROL_PLANE_LOCATIONמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם לאשכול החדש. -
CHANNEL_NAME: השם של ערוץ הפצה.
-
פריסת Prometheus
מתקינים את Prometheus באמצעות תרשים Helm לדוגמה:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install tutorial prometheus-community/kube-prometheus-stack \
--values extras/prometheus/oss/values.yaml \
--wait
הפקודה הזו מתקינה את Prometheus עם הרכיבים הבאים:
- Prometheus Operator: דרך פופולרית לפריסה ולהגדרה של Prometheus בקוד פתוח.
- Alertmanager: מטפל בהתראות שנשלחות משרת Prometheus ומנתב אותן לאפליקציות, כמו Slack.
- Blackbox exporter: מאפשר ל-Prometheus לבדוק נקודות קצה באמצעות HTTP, HTTPS, DNS, TCP, ICMP ו-gRPC.
פריסת Bank of Anthos
פורסים את האפליקציה לדוגמה Bank of Anthos:
kubectl apply -f extras/jwt/jwt-secret.yaml
kubectl apply -f kubernetes-manifests
התראות ב-Slack
כדי להגדיר התראות ב-Slack, צריך ליצור אפליקציית Slack, להפעיל את התכונה Incoming Webhooks באפליקציה ולהתקין את האפליקציה בסביבת עבודה של Slack.
יצירת אפליקציית Slack
הצטרפות למרחב עבודה ב-Slack, באמצעות הרשמה עם כתובת האימייל או באמצעות הזמנה שנשלחה על ידי אדמין של מרחב העבודה.
נכנסים ל-Slack באמצעות שם סביבת העבודה ופרטי הכניסה לחשבון Slack.
-
- בתיבת הדו-שיח יצירת אפליקציה, לוחצים על מאפס.
- מציינים שם אפליקציה ובוחרים את סביבת העבודה שלכם ב-Slack.
- לחצו על Create App.
- בקטע הוספת תכונות ופונקציונליות, לוחצים על Incoming Webhooks (הודעות webhook נכנסות).
- לוחצים על המתג הפעלת וווב-הוקים לשיחות נכנסות.
- בקטע Webhook URLs for Your Workspace (כתובות URL של Webhook לסביבת העבודה), לוחצים על Add New Webhook to Workspace (הוספת Webhook חדש לסביבת העבודה).
- בדף ההרשאה שנפתח, בוחרים ערוץ לקבלת התראות.
- לוחצים על אישור.
- Webhook לאפליקציית Slack מוצג בקטע Webhook URLs for Your Workspace (כתובות webhook לאזור העבודה). שומרים את כתובת ה-URL למועד מאוחר יותר.
הגדרת Alertmanager
יוצרים סוד של Kubernetes כדי לאחסן את כתובת ה-webhook:
kubectl create secret generic alertmanager-slack-webhook --from-literal webhookURL=SLACK_WEBHOOK_URL
kubectl apply -f extras/prometheus/oss/alertmanagerconfig.yaml
מחליפים את SLACK_WEBHOOK_URL בכתובת ה-URL של ה-webhook מהקטע הקודם.
הגדרת Prometheus
בודקים את קובץ המניפסט הבא:
קובץ המניפסט הזה מתאר בדיקות חיות של Prometheus וכולל את השדות הבאים:
-
spec.jobName: שם המשימה שהוקצה למדדים שנאספו. -
spec.prober.url: כתובת ה-URL של השירות של blackbox exporter. זה כולל את יציאת ברירת המחדל של הכלי blackbox exporter, שמוגדרת בתרשים Helm. -
spec.prober.path: נתיב איסוף המדדים. -
spec.targets.staticConfig.labels: התוויות שהוקצו לכל המדדים שחולצו מהיעדים. spec.targets.staticConfig.static: רשימת המארחים לבדיקה.
-
מחילים את המניפסט על האשכול. כי אתם משתמשים בתרשים Helm של קהילת Prometheus, היציאה והשם של שירות Blackbox exporter השתנו. כדי לתקן את כתובת ה-URL שמוגדרת בהגדרות הקשיחות במניפסט שהורדתם לפני שמחילים אותו, מריצים את הפקודה הבאה
sed:sed```sh sed -i 's/tutorial-kube-prometheus-blackbox-exporter:19115/tutorial-prometheus-blackbox-exporter:9115/g' extras/prometheus/oss/probes.yaml kubectl apply -f extras/prometheus/oss/probes.yaml ```- בודקים את קובץ המניפסט הבא:
קובץ המניפסט הזה מתאר
PrometheusRuleוכולל את השדות הבאים:-
spec.groups.[*].name: השם של קבוצת הכללים. -
spec.groups.[*].interval: התדירות שבה מתבצעת הערכה של הכללים בקבוצה. -
spec.groups.[*].rules[*].alert: שם ההתראה. -
spec.groups.[*].rules[*].expr: ביטוי PromQL להערכה. -
spec.groups.[*].rules[*].for: משך הזמן שצריך להמתין עד שההתראות יחזרו לפני שהן נחשבות להפעלה. -
spec.groups.[*].rules[*].annotations: רשימה של הערות להוספה לכל התראה. ההגדרה הזו תקפה רק לכללי התראה. -
spec.groups.[*].rules[*].labels: התוויות שרוצים להוסיף או להחליף.
מחילים את המניפסט על האשכול. הערה: לפני שמריצים את הפקודה הבאה, צריך לבדוק אם יש שגיאות בביטויי PromQL או בהגדרות ההתראות בקובץ
rules.yamlולתקן אותן.kubectl apply -f extras/prometheus/oss/rules.yaml
סימולציה של הפסקת שירות
כדי לדמות הפסקת חשמל, משנים את קנה המידה של הפריסה
contactsלאפס:kubectl scale deployment contacts --replicas 0הודעת התראה אמורה להופיע בערוץ בסביבת העבודה שלכם ב-Slack. יכול להיות שיחלפו עד 5 דקות עד ש-GKE ישנה את קנה המידה של הפריסה.
שחזור הפריסה של
contacts:kubectl scale deployment contacts --replicas 1אמורה להופיע הודעה על פתרון ההתראה בערוץ שלכם בסביבת העבודה ב-Slack. יכול להיות שיחלפו עד 5 דקות עד ש-GKE ישנה את קנה המידה של הפריסה.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת הפרויקט
כדי למחוק Google Cloud פרויקט:
gcloud projects delete PROJECT_ID
מחיקת משאבים בודדים
מוחקים את משאבי Kubernetes:
kubectl delete -f kubernetes-manifestsמסירים את Prometheus:
helm uninstall tutorialמחיקת אשכול GKE:
gcloud container clusters delete CLUSTER_NAME --quiet
המאמרים הבאים
- Google Cloud שירות מנוהל ל-Prometheus הוא פתרון גלובלי מנוהל למדדים, שמבוסס על Prometheus ומוטמע כברירת מחדל בכל אשכולות Autopilot.
- כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.