אחד הנושאים החשובים ביותר בהפעלת עומסי עבודה ב-Azure הוא לעקוב אחר ההוצאות. איך אפשר לעשות זאת? דרך מעקב אחר שימוש במשאבים עם דוח שימוש מפורט של Azure. במאמר זה, תלמד כיצד ליצור סקריפט PowerShell כדי לשאול בקלות את שימוש המשאבים והחיובים ב-Azure על ידי תאריך.
משאבים ב-Azure רצים תמיד את החשבון שלך בדרכים רבות. אם כי, ניתן לראות את שימוש המשאבים דרך פורטל אינטרנט, זה מוגבל. אך באמצעות כמה פקודות PowerShell, ניתן לבנות דוח שימוש שיעניק לך מבט כללי על סוגי השימוש (וכך גם הוצאות) של משאבי ה-Azure שלך.
מאמר זה נוצר מתוך סרטון YouTube של TechSnips. אם אתה לומד טוב יותר באופן חזותי, תרגיש חופשי לבדוק את הסרטון. אחרת, תמשיך לקרוא!
הורדת דוחות דרך מרכז החשבון של Azure
שים לב שאתה יכול להוריד דוחות שונים רבים של שימוש ממרכז החשבון של חשבון Azure. מרכז החשבון של Azure הוא פורטל אינטרנט המאפשר לך לראות את ההיסטוריה של מחזור החיוב שלך, להוריד חשבוניות ולראות סקירה כללית של המינוי שלך ב-Azure.
אם כי ניתן להוריד דוחות שימוש של Azure דרך מרכז החשבון של Azure, אין גמישות בבחירת טווח תאריכים. אין אפשרות להגביל את השימוש לטווח תאריכים מסוים משום שהתאריכים קבועים להתאמה עם מחזור החיוב שלך.
תוכל לראות למטה דוגמה לתקופת חיוב וקישורים להורדת דוחות שימוש.

בתוך דוחות השימוש הללו יש המון מידע אחר שאולי אינך זקוק אליו.
אולי תזדקק לדוחות שימוש ל60 הימים האחרונים. כדי לקבל את המידע הזה דרך מרכז החשבון של Azure, יהיה עליך להוריד דוחות שימוש לפחות שלושה מחזורי חיוב כדי לכסות את כל התאריכים הנדרשים שלך.
לאחר הורדת הדוחות, יהיה עליך להסיר את הנתונים המיותרים. לאחר מכן, יהיה עליך למצוא דרך לאחד את הנתונים באופן כלשהו. לא תודה! זה יותר מדי עומס.
באמצעות PowerShell, ניתן לבנות סקריפט, פונקציה או מודול שימושי למשימת הוצאת דוחות שימוש במשאבי Azure. אלו, בתמורה, יכולים להירץ ידנית עם מספר שורות של פקודות, או כמשימה מתוזמנת להפעלה אוטומטית.
דרישות מקדימות
זהו מאמר הליך. כדי להמשיך, יהיה עליך להכין כמה דברים מראש.
- Windows 10 או מאוחר יותר.
- Windows PowerShell v5.1
- A script editor, like Notepad++ or an Integrated Scripting Environment (ISE) like Windows PowerShell ISE and Visual Studio Code.
- מנוי Azure.
- מודול Azure PowerShell. הגרסה האחרונה כל עוד פוסט זה היא 2.6.0. יש להתקין את המודול הזה במכשיר שלך. אם אין לך אותו עדיין, תוכל להתקין אותו באמצעות PowerShellGet
- חיבור מוכר ל-Azure באמצעות הפקודה Connect-AzAccount
איך לקבל נתוני שימוש במשאבים
לפני שניצור את התסריט, בואו נדבר תחילה על היסודות באמצעות פקודת cmdlet Get-UsageAggregates
. זו פקודת cmdlet שמאפשרת לך למשוך את שימוש המשאבים ב-Azure לפי טווח תאריכים, מדדים כמו שעתי או יומי ועוד. פקודת cmdlet Get-UsageAggregates
היא הפקודת cmdlet הראשית שמשיכה רוב הקסמים שתלמדו במאמר זה.
כדי להדגים את פקודת ה-cmdlet Get-UsageAggregates
, נניח שאתה צריך למצוא את שימוש המשאבים ב-Azure מ-1 באפריל 2019 עד 12 בספטמבר 2019. טכניקה זו ניתנת לשימוש גם עבור כל טווח תאריכים. למטה תראה קטע קטן למציאת נתוני שימוש בהתבסס על אותם תאריכים.
Parameter | Value | Usage Explanation |
ReportStartTime | 04-01-19 | This is the oldest date you want to retrieve.
(חודש יום שנה) |
ReportEndTime | 09-12-19 | This is the latest date you want to retrieve.
(חודש יום שנה) |
AggregationGranularity | Hourly | The granularity of data to return. Valid values are “Daily” and “Hourly” |
ShowDetails | $True | Indicates whether the instance-level details are expanded |
אם ישנם נתונים שמוחזרים, אתה צריך לקבל את התוצאות הדומות ללכידת המסך שבתמונה למטה. באפשרותך לראות שהנתונים האמיתיים של השימוש מאוחסנים במאפיין UsageAggregations
.

טיפול בדפיס ב-Get-UsageAggregates
בסעיף שמעלה, נפוץ לקבל הרבה אובייקטים בעיקר בטווחי תאריכים ארוכים. כדי למנוע עמוסה ב-API, הפקודת cmdlet Get-UsageAggregates
מחזירה רק עד 1000 תוצאות. אם שמרת את המשתנה $usageData
ככל שנדונה בסעיף הקודם, אתה יכול לאשר זאת באמצעות הרצת הפקודה הזו $usageData.UsageAggregations.count
.
כמה יהיו התוצאות אם יש יותר מ-1000 תוצאות? תצטרך לעשות קצת יותר עבודה.
כאשר אתה בודק את המאפיינים שנמסרו על ידי Get-UsageAggregates
, תשים לב למאפיין הנקרא ContinuationToken
כפי שמוצג למטה. ניתן לראות שה-token הוא מחרוזת ארוכה של תווים.

ה-ContinuationToken
הוא מצביע לסט הבא של תוצאות. מאפיין זה פועל כסימן סימניון כדי לדעת מאיזו עמוד לקבל את העמודה הבאה של תוצאות.
כדי להדגיש, קבל את הפריט האחרון בתוצאה הקודמת באמצעות $usageData.UsageAggregations[-1]
כפי שמוצג למטה. שים לב לזמני התחלת השימוש
ו־סיום השימוש
.

עכשיו עבור את אותם פרמטרים לפקודת Get-UsageAggregates
שוב. אך הפעם, השתמש בפרמטר ContinuationToken
והשתמש בערך של מאפיין ContinuationToken
שהוחזר בקפיצה הקודמת. למטה תראה דוגמה כיצד לעשות זאת.
עכשיו קבל את הפריט האחרון במערך המאפיינים של UsageAggregations
באמצעות $usageData.UsageAggregations[-1]
. השווה אותו לתוצאה הקודמת כדי לאמת שהתוצאות החדשות שונות.
ההשוואה אמורה להיות דומה לאלו שאתה רואה למטה. שים לב שטווחי התאריכים מופרדים בשבעה ימים. באמצעות ה-ContinuationToken
, אתה איבטלת את העמודה השנייה של התוצאות.


בניית פונקציה לדיווח על שימוש במשאבים של Azure
עליך לדעת איך פיענוח הדפים עובד וכיצד להשתמש במאפיין קודם המשך ובפרמטר. אבל מה קורה אם יש עשרות או אפילו מאות אלפי תוצאות לשחזור? שימוש ידני באסון באמצעות הקוד בדרך כלל לא יעבוד היטב.
בואו נבנה סקריפט PowerShell שמתייחס לדרישת הדפים עבורנו ומאפשר גם גמישות נוספת. סקריפט זה יאפשר לך לספק את הפרמטרים המותאמים אישית שלך ולטפל בדרישת הדפים. זה יעניק לך גם את הגמישות להרחיבו בעתיד כדי לבצע משימות נוספות אם יהיה צורך.
בניית הפרמטרים
ראשית, צרו מסגרת פונקציה. להלן תוכלו לראות דוגמה לפונקציה בשם Get-AzureUsage
. לפונקציה זו יש שלושה פרמטרים שעשויים להיראות מוכרים.
בעבר, פרמטרים אלו הוגדרו על ידי הפקודה Get-UsageAggregates
עצמה. אתה כעת בונה פונקציה "מעטפת" שתעביר ערכים לפקודה זו.
להלן טבלה המספקת מידע נוסף על כל הפרמטרים האלו.
Parameter | Usage |
FromTime | This is a mandatory parameter that accepts a DateTime value. The value represents the oldest date of the report. |
ToTime | This is a mandatory parameter that accepts a DateTime value. The value represents the latest date of the report. |
Interval | This is a non-empty parameter that accepts two possible values: ‘Daily’ and ‘Hourly’. The default value is Daily. This represents the granularity of the report to return. |
שאילתת שימוש במשאבים
לאחר שנוצרה הפונקציה והוגדרו כל הפרמטרים, עליך למלא את שאר הפונקציה.
להלן תוכלו לראות את שאר פונקציית Get-AzureUsage
. נא להסתכל על ההערות כדי להבין טוב יותר את פעולת הקוד.
התסריט המושלם (ניתן להעתיק/להדביק)
לאחר שאתה מכניס את הפרמטרים ואת קוד הפונקציות יחד, תקבל תסריט שלם כפי שתוכל לראות למטה. עכשיו אתה יכול להעתיק את זה לתוך התסריט שלך או ישירות אל תוך חלון ה־PowerShell כדי לבדוק.
שאילתת שימוש במשאבים עם הפונקציה שלנו
כעת הגיע הזמן לבדוק את הפונקציה. תוכל להדביק את הקוד לעיל בתוך תסריט ו־להשתמש בפונקציית dot source אותו במהלך הסשן הנוכחי של PowerShell או להעתיק את הקוד ישירות למהלך הפעלה של PowerShell.
טיפ: אם אתה משתמש ב־PowerShell ISE או ב־Visual Studio Code, אתה יכול להדגיש את הקוד שברצונך לייבא וללחוץ על F8. אחרת, יותר קל להעתיק ולהדביק את הקוד לתוך מהלך הפעלה של PowerShell.
עכשיו הרץ את הפונקציה וספק ערך ל־FromTime
, ToTime
ולמרווח שבו ברצונך לראות את התוצאות. תוכל לראות דוגמה למטה על איך לקרוא לפונקציה זו.
פעם שהקוד הזה ירוץ, תראה הודעות מפורטות אם בחרת להשתמש בפרמטר האופציונלי Verbose
. כפי שאתה רואה מהדוגמה למטה, מספר דוחות השימוש הוא 4,659. גם תגים של Get-UsageAggregates
הופעלו ארבע פעמים לקבלת הדף הבא של התוצאות בכל פעם. הפונקציה הצליחה לעשות זאת מכיוון שהשתמשה בערך הנכון של ContinuationToke
לכל קריאה.

סינון הדוח
בנקודה זו, הדוח כולל פרטי שימוש על כל סוגי המשאבים הזמינים. אך אתה יכול לסנן את הדוח כך שיציג רק את המשאב שאתה רוצה. כדי לעשות זאת, אתה יכול להרחיב את הפונקציה כך שתאפשר פונקציונליות זו או לשלוף את הפלט לפקודות קוד PowerShell נוספות.
פלט מפונקציה של Get-Azure
מחזיר את כל סוגי המשאבים, אך כולל מאפיין בשם MeterCategory
. מאפיין זה מגדיר את סוג המשאב שהשורה מייצגת. לדוגמה, כדי לקבל רק דוחות שימוש במכונה וירטואלית של Azure, תוכל לקבץ יחד את כל האובייקטים עם MeterCategory
של Virtual Machines
באמצעות פקודת Group-Object
.
פקודת Group-Object
תחזיר כמה שורות היו נוכחות בפלט כמו המאפיין Count
. לאחר מכן, על ידי הגבלת הפלט למאפיינים של Count
ו-Name
(ערך עבור MeterCategory
), תוכל לראות כמה שורות דוח שימוש קיימות עבור כל סוגי המשאבים של Azure.
כפי שאתה יכול לראות בצילום המסך למטה, ישנם 768 רשומות עבור מכונות וירטואליות בדוח.

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

רעיונות להרחבת הדוח
על ידי השימוש בקוד במאמר זה, תוכל להרחיב על פונקציונליות של הכלי שנוצר בדרכים רבות.
תוכל לייצא את הפלט לקובץ CSV ולעבד את הנתונים שלך ב-Excel או ליצור דוח HTML באמצעות ConvertTo-HTML או מודול הפוורשל PowerShell EnhancedHTML2.
אפשר גם לקחת את הדברים קצת יותר רחוק ולהוסיף התראת אימייל לתוצאה עם פקודת Send-MailMessage. העולם מולך!
סיכום
בפוסט זה, למדת איך לקבל דוחות שימוש במשאבים מ-Azure. גם למדת איך לבנות פונקציה מותאמת אישית ב-PowerShell כדי לאוטומציה של התהליך ולהשתמש בפונקציה זו לעיבוד הפלט.
שום בעיה!
Further Reading
Source:
https://adamtheautomator.com/azure-detailed-usage-report/