דוגמה לארכיטקטורה
![תרשים שמדגים איך משתמשים בהתראות פרוגרמטיות לגבי תקציב כדי ליצור תשובות אוטומטיות של בקרת עלות.](https://cloud.google.com/static/billing/docs/images/budget-alert-diagram-pubsub2.png?authuser=5&hl=he)
אם העלויות חשובות לכם ואתם רוצים לנהל את הסביבה בהתחשב בתקציב שלכם, תוכלו להשתמש בהתראות פרוגרמטיות לגבי התקציב כדי לשלוח תשובות אוטומטיות של בקרת עלויות על סמך התראת התקציב.
בעזרת התראות לגבי תקציב שמבוססות על נושאי Pub/Sub תוכלו לדעת בזמן אמת מה הסטטוס של תקציב החיוב ב-Cloud, וליהנות מיכולת ההתאמה לעומס, מהגמישות ומהאמינות של תווכה ארגונית מכוונת-הודעות לענן.
במסמך הזה מוצגות דוגמאות והוראות מפורטות לניהול העלויות באופן אוטומטי באמצעות התראות לגבי תקציב באמצעות פונקציות Cloud Run.
הגדרה של התראות לגבי תקציב
בשלב הראשון מפעילים נושא Pub/Sub לתקציב. להסבר מפורט עיינו במאמר ניהול התראות פרוגרמטיות לגבי תקציב.
אחרי שמפעילים את התראות התקציב, חשוב לזכור:
- נושא Pub/Sub: זו נקודת הקצה של התראות לגבי תקציב.
- מזהה התקציב: זהו המזהה הייחודי של התקציב, שמצוין בכל ההתראות. אפשר למצוא את מזהה התקציב בהגדרות התקציב, בקטע Manage notifications. מזהה התקציב מוצג אחרי שבוחרים באפשרות Connect a Pub/Sub topic to this budget.
האזנה להתראות
בשלב הבא נרשמים לנושא ה-Pub/Sub כדי להאזין להתראות. אם אין אף אפליקציה רשומה, ההתראות שמתפרסמות ב-Pub/Sub לא יימסרו ולא תוכלו לשחזר אותן.
אמנם אפשר להירשם לנושא בהרבה דרכים, אבל בדוגמאות הבאות נשתמש בטריגרים לפונקציות Cloud Run.
יצירה של פונקציית Cloud Run
כך יוצרים פונקציית Cloud Run חדשה:
נכנסים לדף Cloud Run functions במסוף Google Cloud .
לוחצים על CREATE FUNCTION
ונותנים לפונקציה שם שמתייחס לתקציב.בקטע Trigger בוחרים באפשרות Pub/Sub topic.
בוחרים את הנושא שהגדרתם לתקציב.
מספקים את קוד המקור ואת יחסי התלות שדרושים להרצת הפונקציה.
חשוב לוודא שהגדרתם את Function to execute לשם הנכון של הפונקציה.
תיאור פונקציית Cloud Run
כדי להנחות את פונקציית Cloud Run מה לעשות כשמתקבלת התראה, צריך לכתוב קוד באמצעות העורך הישיר או להעלות קובץ. לפרטים לגבי ההתראות שהקוד יכול לקבל, קראו את המאמר פורמט של התראות.
דוגמה: כשפונקציה מופעלת על ידי התראת תקציב, היא עשויה לתעד את ההתראות שהתקבלו ב-Pub/Sub, יחד עם המאפיינים והנתונים שלהן. למידע נוסף קראו את המאמר טריגרים ב-Pub/Sub.
הצגת האירועים של פונקציות Cloud Run
אחרי ששומרים את פונקציית Cloud Run, אפשר ללחוץ על VIEW LOGS כדי להציג את התראות התקציב שנרשמו ביומן. הפעולה הזו תציג את היומנים מההפעלות של הפונקציה.
בדיקה של פונקציית Cloud Run
ההתראות נשלחות ל-Pub/Sub, והאפליקציות הרשומות מקבלות את ההודעות. כדי לבדוק התראה לדוגמה ולוודא שהפונקציה פועלת כמו שצריך, עליכם לפרסם הודעה ב-Pub/Sub ולהשתמש באובייקט הבא כגוף ההודעה:
{ "budgetDisplayName": "name-of-budget", "alertThresholdExceeded": 1.0, "costAmount": 100.01, "costIntervalStart": "2019-01-01T00:00:00Z", "budgetAmount": 100.00, "budgetAmountType": "SPECIFIED_AMOUNT", "currencyCode": "USD" }
אפשר גם להוסיף מאפיינים להודעה, כמו מספר החשבון לחיוב. למידע נוסף, תוכלו להיעזר בכל המאמרים בנושא פורמט של התראות.
שליחת התראות ל-Slack
אימייל הוא לא תמיד הדרך הטובה ביותר להתעדכן בעלויות בענן, במיוחד אם מדובר בתקציב קריטי שבו גם הזמן חשוב. בעזרת ההתראות אתם יכולים לשלוח הודעות שקשורות לתקציב דרך אמצעי תקשורת אחרים.
בדוגמה הזו מוסבר איך להעביר התראות לגבי תקציב ל-Slack. באופן כזה, בכל פעם שמתפרסמת התראה לגבי תקציב במערכת החיוב ב-Cloud, יש פונקציית Cloud Run שמפרסמת הודעה בערוץ Slack באמצעות בוט, בסביבת העבודה של הבוט.
הגדרת ערוץ והרשאות ב-Slack
בשלב הראשון יוצרים את סביבת העבודה ב-Slack ואת אסימוני המשתמשים שמשמשים את הבוטים כדי לשלוח קריאה ל-Slack API. אסימוני ה-API מנוהלים בכתובת https://api.slack.com/apps. תוכלו להיעזר בהוראות שבמאמר Bot Users באתר Slack.
כתיבה של פונקציית Cloud Run
תוכלו להיעזר בהוראות שבמאמר יצירה של פונקציית Cloud Run כדי ליצור פונקציות חדשות. חשוב לוודא שהגדרתם את הטריגר כך שישתמש באותו נושא Pub/Sub שהוגדר לשימוש בתקציב.
מוסיפים יחסי תלות:
Node.js
מעתיקים את הפרטים הבאים אל
package.json
:Python
מעתיקים את הפרטים הבאים אל
requirements.txt
:כותבים את הקוד הדרוש או משתמשים בדוגמה שלמטה כדי לפרסם התראות לגבי התקציב בערוץ הצ'אט ב-Slack באמצעות Slack API.
מוודאים שהפרמטרים הבאים של postMessage ב-Slack API מוגדרים בצורה נכונה:
- אסימון הגישה ל-OAuth של משתמש הבוט
- שם הערוץ
קוד לדוגמה
Node.js
Python
עכשיו אפשר לבדוק את פונקציית Cloud Run כדי לראות את ההודעה שמופיעה ב-Slack.
הגבלה (השבתה) של החיוב לצורך הפסקת השימוש
בדוגמה הזו מוסבר איך משביתים את החיוב ב-Cloud כדי להגביל את העלויות ולהפסיק את השימוש בפרויקט. השבתת החיוב בפרויקט תגרום לכך שכל שירותי Google Cloud בפרויקט יופסקו, כולל שירותים בתוכנית ללא תשלום.
למה להשבית את החיוב?
יכול להיות שתצטרכו להגביל את העלויות אם יש מגבלה קשיחה על ההוצאות שלכם ב- Google Cloud. המצב הזה אופייני לסטודנטים, לחוקרים ולמפתחים שעובדים בסביבות ארגז חול. במקרים כאלה כדאי להפסיק לצבור הוצאות, וכשתגיעו למגבלת התקציב תשביתו את כל שירותי Google Cloud ואת השימוש בהם.
לצורך הדוגמה שלנו, אנחנו משתמשים בפרויקט acme-backend-dev שלא נמצא בסביבת ייצור, ואפשר להשבית לו את החיוב ב-Cloud באופן בטוח.
לפני שמתחילים ליישם את הדוגמה הזו, חשוב לוודא שביצעתם את הפעולות האלה:
הפעלת Cloud Billing API. כדי להשבית את החיוב ב-Cloud בפרויקט, פונקציית Cloud Run צריכה להפעיל את Cloud Billing API.
הגדרת תקציב, כדי לעקוב אחרי העלויות בפרויקט ולהפעיל התראות לגבי תקציב.
כתיבה של פונקציית Cloud Run
בשלב הבא צריך להגדיר את פונקציית Cloud Run כך שתפעיל את Cloud Billing API. באופן כזה, פונקציית Cloud Run תוכל להשבית את החיוב ב-Cloud בפרויקט לדוגמה acme-backend-dev:
תוכלו להיעזר בהוראות שבמאמר יצירה של פונקציית Cloud Run כדי ליצור פונקציות חדשות. חשוב לוודא שהגדרתם את הטריגר כך שישתמש באותו נושא Pub/Sub שהוגדר לשימוש בתקציב.
מוסיפים את יחסי התלות הבאים:
Node.js
מעתיקים את הפרטים הבאים אל
package.json
:Python
מעתיקים את הפרטים הבאים אל
requirements.txt
:מעתיקים את הקוד הבא לפונקציית Cloud Run.
מגדירים את הפונקציה כך שתתבצע עד
stopBilling
(ב-Node) או עדstop_billing
(ב-Python).בהתאם לזמן הריצה, יכול להיות שמשתנה הסביבה
GOOGLE_CLOUD_PROJECT
יוגדר באופן אוטומטי. אתם צריכים לבדוק את רשימת משתני הסביבה שמוגדרים באופן אוטומטי כדי לקבוע אם צריך להגדיר באופן ידני את המשתנהGOOGLE_CLOUD_PROJECT
, כך שיכיל את הפרויקט שעבורו אתם רוצים להגביל (להשבית) את החיוב ב-Cloud.
Node.js
Python
הגדרת הרשאות לחשבון שירות
פונקציית Cloud Run מופעלת בתור חשבון שירות שנוצר באופן אוטומטי. כדי שחשבון השירות יוכל להשבית את החיוב, צריך לתת לו את ההרשאות הדרושות כמו אדמין לענייני חיוב.
כדי לזהות את חשבון השירות הנכון, תוכלו לבדוק את הפרטים של פונקציית Cloud Run. חשבון השירות מופיע בחלק התחתון של הדף.
אפשר לנהל את ההרשאות של האדמין לענייני חיוב בדף Billing במסוף Google Cloud .
כדי לתת לחשבון השירות הרשאות של "אדמין של חשבון לחיוב", בוחרים את השם של חשבון השירות.
בדיקה אם החיוב ב-Cloud מושבת
כשתישלח התראה לגבי התקציב, לפרויקט שצוין לא יהיה מוגדר יותר חשבון לחיוב ב-Cloud. כדי לבדוק את הפונקציה, תוכלו לפרסם הודעה לדוגמה עם ההודעה לבדיקה שמופיעה למעלה. הפרויקט לא יופיע יותר בחשבון לחיוב ב-Cloud והמשאבים שכלולים בפרויקט יושבתו, כולל פונקציית Cloud Run אם היא משויכת לאותו הפרויקט.
דרך מסוף Google Cloud אתם יכולים להפעיל מחדש באופן ידני את החיוב ב-Cloud לפרויקט.
שליטה סלקטיבית בשימוש
ההגבלה (השבתה) של החיוב ב-Cloud כפי שמתואר בדוגמה הקודמת היא בינארית וסופית. הפרויקט שלכם יכול להיות באחד משני מצבים: מופעל או מושבת. כשהפרויקט מושבת, כל השירותים מופסקים ובסופו של דבר כל המשאבים נמחקים.
אם אתם לא רוצים להגיב בצורה כל כך גורפת, תוכלו לשלוט באופן סלקטיבי במשאבים. לדוגמה, אם אתם רוצים להפסיק כמה משאבים של Compute Engine אבל להשאיר את Cloud Storage ללא שינוי, תוכלו לקבוע את השימוש באופן סלקטיבי. כך תוכלו להפחית את העלות לשעה בלי להשבית לחלוטין את הסביבה.
אתם יכולים לכתוב מדיניות מפורטת ככל שתצטרכו. אבל לצורך הדוגמה, הפרויקט שלנו מריץ מחקר על כמה מכונות וירטואליות של Compute Engine, והתוצאות מאוחסנות ב-Cloud Storage. בדוגמה הזו, פונקציית Cloud Run תשבית את כל המכונות של Compute Engine אבל לא תשפיע על התוצאות שמאוחסנות אחרי חריגה מהתקציב.
כתיבה של פונקציית Cloud Run
תוכלו להיעזר בהוראות שבמאמר יצירה של פונקציית Cloud Run כדי ליצור פונקציות חדשות. חשוב לוודא שהגדרתם את הטריגר כך שישתמש באותו נושא Pub/Sub שהוגדר לשימוש בתקציב.
מוודאים שהוספתם את יחסי התלות שמתוארים במאמר הגבלה (השבתה) של החיוב לצורך הפסקת השימוש.
מעתיקים את הקוד הבא לפונקציית Cloud Run.
מגדירים את הפונקציה כך שתתבצע עד
limitUse
(ב-Node) או עדlimit_use
(ב-Python).בהתאם לזמן הריצה, יכול להיות שמשתנה הסביבה
GCP_PROJECT
יוגדר באופן אוטומטי. אתם צריכים לבדוק את רשימת משתני הסביבה שמוגדרים באופן אוטומטי כדי לקבוע אם צריך להגדיר באופן ידני את המשתנהGCP_PROJECT
כך שיכיל את הפרויקט שבו פועלות המכונות הווירטואליות.מגדירים את הפרמטר ZONE. זהו התחום (zone) שבו יופסקו המכונות בדוגמה הזו.
Node.js
Python
הגדרת הרשאות לחשבון שירות
- פונקציית Cloud Run מופעלת בתור חשבון שירות שנוצר באופן אוטומטי. כדי לשלוט בשימוש, תצטרכו לתת לחשבון השירות הרשאות לכל השירותים בפרויקט שצריכים לשנות.
- כדי לזהות את חשבון השירות הנכון, תוכלו לבדוק את הפרטים של פונקציית Cloud Run. חשבון השירות מופיע בחלק התחתון של הדף.
- כדי להגדיר את ההרשאות המתאימות, במסוף Google Cloud , נכנסים לדף IAM.
כניסה לדף IAM
בדיקה שהמכונות הופסקו
כשתישלח התראה לגבי התקציב, המכונות הווירטואליות של Compute Engine יופסקו.
כדי לבדוק את הפונקציה, אתם יכולים לפרסם הודעה לדוגמה עם ההודעה לבדיקה שמופיעה למעלה. כדי לוודא שהפונקציה פועלת כמו שצריך, בדקו את המכונות הווירטואליות של Compute Engine במסוף Google Cloud .