אם אתם מודעים לעלויות ורוצים לנהל את הסביבה ביחס לתקציב שלכם, תוכלו להשתמש בהתראות פרוגרמטיות לגבי תקציב כדי לשלוח תשובות אוטומטיות של בקרת עלות על סמך התראת התקציב.
התראות התקציב מספקות סטטוס בזמן אמת של התקציב בחשבון לחיוב ב-Cloud באמצעות נושאי Pub/Sub, שמשתמשים ביכולת ההתאמה, בגמישות ובאמינות של תוכנה ארגונית מכוונת-הודעות לענן.
בדף הזה מוצגות דוגמאות והוראות מפורטות לניהול העלויות באופן אוטומטי באמצעות התראות תקציב עם פונקציות של Cloud Functions.
הגדרה של התראות תקציב
בשלב הראשון מפעילים נושא Pub/Sub לתקציב. הסבר מפורט זמין במאמר ניהול התראות פרוגרמטיות לגבי תקציב.
אחרי שמפעילים את התראות התקציב, חשוב לזכור:
- נושא Pub/Sub: זו נקודת הקצה שהוגדרה להתראות התקציב.
- מזהה התקציב: זהו המזהה הייחודי של התקציב, שמצוין בכל ההתראות. אפשר למצוא את מזהה התקציב בהגדרות התקציב, תחת ניהול התראות. מזהה התקציב מוצג אחרי שבוחרים באפשרות קשר נושא Pub/Sub לתקציב זה.
האזנה להתראות
בשלב הבא מאזינים להודעות על ידי הרשמה לנושא ה-Pub/Sub. אם אין אף רישום, מערכת Pub/Sub לא תמסור את ההודעות שפורסמו ולא ניתן יהיה לשחזר אותן מאוחר יותר.
על אף שיש דרכים רבות להירשם לנושא, בדוגמאות הבאות נשתמש בטריגרים לפונקציות של Cloud Functions.
יצירת פונקציה של Cloud Function
כך יוצרים פונקציה חדשה:
ב Google Cloud Console, עליך להיכנס לדף Cloud Functions.
לוחצים על
CREATE FUNCTION ונותנים לפונקציה שם שיש לו משמעות ביחס לתקציב שלכם.בקטע Trigger בוחרים באפשרות Pub/Sub topic.
בוחרים את הנושא שהגדרתם לתקציב.
מספקים את קוד המקור ואת יחסי התלות שדרושים להרצת הפונקציה.
חשוב לוודא שהגדרתם את Function to execute לשם הנכון של הפונקציה.
תיאור הפונקציה של Cloud Function
כדי להנחות את הפונקציה של Cloud Functions אילו צעדים לנקוט כשמתקבלת התראה, צריך לכתוב קוד בעורך המוטבע או להעלות קובץ. לפרטים לגבי ההתראות שהקוד יכול לקבל, קראו את המאמר פורמט של התראות.
דוגמה: כשפונקציה מופעלת על ידי התראת תקציב, היא עשויה לתעד את ההתראות שהתקבלו ב-Pub/Sub, יחד עם המאפיינים והנתונים שלהן. למידע נוסף קראו את המאמר טריגרים ב-Pub/Sub.
הצגת האירועים ב-Cloud Function
אחרי ששומרים את הפונקציה ב-Cloud Functions, אפשר ללחוץ על VIEW LOGS כדי להציג את התראות התקציב שנרשמו ביומן. פעולה זו תציג את היומנים מההפעלות של הפונקציה.
בדיקת פונקציה של Cloud Function
ההתראות נשלחות ל-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 Functions שמפרסמת באמצעות בוט הודעה בערוץ Slack, בסביבת העבודה של הבוט.
הגדרת ערוץ והרשאות ב-Slack
בשלב הראשון יוצרים את סביבת העבודה ב-Slack ואת אסימוני המשתמשים שמשמשים את הבוטים כדי לקרוא ל-Slack API. אסימוני ה-API מנוהלים בכתובת https://api.slack.com/apps. הוראות מפורטות זמינות במאמר Bot Users באתר Slack.
כתיבת פונקציה של Cloud Function
יוצרים פונקציה חדשה לפי ההוראות במאמר יצירת פונקציה ב-Cloud Functions. חשוב לוודא שהגדרתם את הטריגר כך שישתמש באותו נושא Pub/Sub שהוגדר לשימוש בתקציב.
מוסיפים יחסי תלות:
Node.js
מעתיקים את הפרטים הבאים אל
package.json
:Python
מעתיקים את הפרטים הבאים אל
requirements.txt
:כותבים את הקוד הדרוש או משתמשים בדוגמה שלמטה כדי לפרסם התראות לגבי התקציב בערוץ הצ'אט של Slack באמצעות Slack API.
מוודאים שהפרמטרים הבאים של postMessage ב-Slack API מוגדרים בצורה נכונה:
- אסימון הגישה ל-OAuth של משתמש הבוט
- שם הערוץ
קוד לדוגמה
Node.js
Python
עכשיו אתם יכולים לבדוק את הפונקציה ב-Cloud Functions כדי לראות את ההודעה שמופיעה ב-Slack.
הגבלה (השבתה) של החיוב לצורך הפסקת השימוש
הדוגמה הזו ממחישה איך להגביל את העלויות ולהפסיק את השימוש בפרויקט, על ידי השבתת החיוב ב-Cloud. השבתת החיוב בפרויקט תגרום לכך שכל שירותי Google Cloud בפרויקט יופסקו, כולל שירותים בתוכנית ללא תשלום.
למה להשבית את החיוב?
יכול להיות שתצטרכו להגביל את העלויות אם יש מגבלה קשיחה על רמת ההוצאה שלכם ב-Google Cloud. המצב הזה אופייני לסטודנטים, לחוקרים ולמפתחים שעובדים בסביבות ארגז חול. במקרים כאלה כדאי להפסיק לצבור הוצאות, וכשתגיעו למגבלת התקציב תשביתו את כל שירותי Google Cloud ואת השימוש בהם.
לצורך הדוגמה שלנו, אנחנו משתמשים בפרויקט acme-backend-dev שאינו בסביבת ייצור, ועבורו אפשר להשבית את החיוב חיוב ב-Cloud באופן בטוח.
לפני שמתחילים ליישם את הדוגמה הזו, חשוב לוודא שביצעתם את הפעולות הבאות:
הפעלת Cloud Billing API. כדי להשבית את החיוב ב-Cloud בפרויקט, הפונקציה ב-Cloud Functions צריכה לקרוא ל-Cloud Billing API.
הגדרת תקציב כדי לעקוב אחרי העלויות בפרויקט ולהפעיל התראות לגבי תקציב.
כתיבת פונקציה של Cloud Function
בשלב הבא צריך להגדיר את הפונקציה ב-Cloud Functions כך שתקרא ל-Cloud Billing API. באופן כזה, הפונקציה ב-Cloud Functions יכולה להשבית את החיוב ב-Cloud בפרויקט לדוגמה acme-backend-dev:
יוצרים פונקציה חדשה לפי ההוראות במאמר יצירת פונקציה ב-Cloud Functions. חשוב לוודא שהגדרתם את הטריגר כך שישתמש באותו נושא Pub/Sub שהוגדר לשימוש בתקציב.
מוסיפים את יחסי התלות הבאים:
Node.js
מעתיקים את הפרטים הבאים אל
package.json
:Python
מעתיקים את הפרטים הבאים אל
requirements.txt
:מעתיקים את הקוד שבהמשך לפונקציה ב-Cloud Functions.
מגדירים את הפונקציה לביצוע "stopBilling" (ב-Node) או "stop_billing" (ב-Python).
בהתאם לזמן הריצה, יכול להיות שמשתנה הסביבה
GOOGLE_CLOUD_PROJECT
יוגדר באופן אוטומטי. עליכם לבדוק את רשימת משתני הסביבה שמוגדרים באופן אוטומטי כדי לקבוע אם אתם צריכים להגדיר באופן ידני את המשתנהGOOGLE_CLOUD_PROJECT
כך שיכיל את הפרויקט שעבורו אתם רוצים להגביל (להשבית) את החיוב חיוב ב-Cloud.
Node.js
Python
הגדרת הרשאות לחשבון שירות
הפונקציה שלכם ב-Cloud Functions מופעלת בתור חשבון שירות שנוצר באופן אוטומטי. כדי שחשבון השירות יוכל להשבית את החיוב, עליכם לתת לו את ההרשאות הדרושות, כמו אדמין לענייני חיוב.
כדי לאתר את חשבון השירות הנכון, עליכם להציג את פרטי הפונקציה ב-Cloud Functions. חשבון השירות מופיע בחלק התחתון של הדף.
ניתן לך לנהל את ההרשאות של האדמין לענייני חיוב בדף חיוב ב Google Cloud Console.
כדי לתת לחשבון השירות הרשאות של אדמין של חשבון לחיוב, בוחרים את השם של חשבון השירות.
בדיקה אם החיוב חיוב ב-Cloud מושבת
כשתישלח התראה לגבי התקציב, לפרויקט שצוין לא יהיה מוגדר יותר חשבון לחיוב ב-Cloud. אם אתם רוצים לבדוק את הפונקציה, פרסמו הודעה לדוגמה עם ההודעה לבדיקה שלמעלה. הפרויקט לא יופיע יותר בחשבון לחיוב ב-Cloud והמשאבים שכלולים בפרויקט יושבתו, כולל הפונקציה ב-Cloud Functions אם היא משויכת לאותו הפרויקט.
אפשרלהפעיל מחדש באופן ידני את החיוב ב-Cloud עבור הפרויקט דרך Google Cloud Console
שליטה סלקטיבית בשימוש
ההגבלה (השבתה) של החיוב ב-Cloud כפי שמתואר בדוגמה הקודמת היא בינארית וסופית. הפרויקט שלכם יכול להיות באחד משני מצבים: מופעל או מושבת. כשהפרויקט מושבת, כל השירותים מופסקים ובסופו של דבר כל המשאבים נמחקים.
אם אתם צריכים להגיב בצורה פחות גורפת, תוכלו לשלוט באופן סלקטיבי במשאבים. לדוגמה, אם אתם רוצים להפסיק כמה משאבים של Compute Engine אבל להשאיר את Cloud Storage ללא שינוי, תוכלו לקבוע את השימוש באופן סלקטיבי. כך תוכלו להפחית את העלות לשעה בלי להשבית לחלוטין את הסביבה.
אתם יכולים לכתוב מדיניות מפורטת ככל שתצטרכו. עם זאת, לצורך הדוגמה, הפרויקט שלנו מריץ מחקר על כמה מכונות וירטואליות של Compute Engine, והתוצאות מאוחסנות ב-Cloud Storage. הפונקציה לדוגמה ב-Cloud Functions תשבית את כל המכונות של Compute Engine, אבל לא תשפיע על התוצאות המאוחסנות אחרי חריגה מהתקציב.
כתיבת פונקציה של Cloud Function
יוצרים פונקציה חדשה לפי ההוראות במאמר יצירת פונקציה ב-Cloud Functions. חשוב לוודא שהגדרתם את הטריגר כך שישתמש באותו נושא Pub/Sub שהוגדר לשימוש בתקציב.
מוודאים שהוספתם את יחסי התלות המתוארים בהגבלה (השבתה) של החיוב לצורך הפסקת השימוש.
מעתיקים את הקוד שבהמשך לפונקציה ב-Cloud Functions.
מגדירים את הפונקציה לביצוע "limitUse" (ב-Node) או "limit_use" (ב-Python).
בהתאם לזמן הריצה, יכול להיות שמשתנה הסביבה
GCP_PROJECT
יוגדר באופן אוטומטי. עליכם לבדוק את רשימת משתני הסביבה שמוגדרים באופן אוטומטי כדי לקבוע אם אתם צריכים להגדיר באופן ידני את המשתנהGCP_PROJECT
כך שיכיל את הפרויקט שבו פועלות המכונות הווירטואליות.מגדירים את הפרמטר ZONE. זהו התחום (zone) שבו יופסקו המכונות בדוגמה הזו.
Node.js
Python
הגדרת הרשאות לחשבון שירות
- את הפונקציה ב-Cloud Functions מריצים כחשבון שירות שנוצר באופן אוטומטי. כדי לאפשר שליטה בשימוש, עליכם לתת לחשבון השירות הרשאות לכל השירותים בפרויקט שהשירות אמור לשנות.
- כדי לאתר את חשבון השירות הנכון, מציגים את פרטי הפונקציה ב-Cloud Functions. חשבון השירות מופיע בחלק התחתון של הדף.
- ב-Google Cloud Console, היכנסו לדף IAM כדי להגדיר את ההרשאות המתאימות.
כניסה לדף IAM
בדיקה שהמכונות הופסקו
כשתישלח התראה לגבי התקציב, המכונות הווירטואליות של Compute Engine יופסקו.
כדי לבדוק את הפונקציה, פרסמו הודעה לדוגמה עם ההודעה לבדיקה שלמעלה. כדי לוודא שהפונקציה פועלת כמו שצריך, בדקו את המכונות הווירטואליות של Compute Engine ב- Google Cloud Console