أحد أهم جوانب تشغيل الأعباء في أزور هو تتبع المصاريف. كيف تفعل ذلك هو من خلال تتبع استخدام الموارد باستخدام تقرير استخدام أزور المفصل. في هذا المقال، ستتعلم كيفية إنشاء سكريبت بويرشيل للاستعلام بسهولة عن استخدام الموارد والرسوم في أزور عبر جميع مواردك في أزور حسب التاريخ.
الموارد في أزور تعمل باستمرار على زيادة فاتورتك بطرق عديدة مختلفة. على الرغم من أنه يمكنك رؤية استخدام الموارد عبر بوابة الويب، إلا أنه محدود. ولكن باستخدام بعض الأوامر في بويرشيل، يمكنك بناء تقرير مفيد ليمنحك نظرة عامة على أنواع الاستخدام (وبالتالي المصاريف) التي تقوم بها مواردك في أزور.
تم إنشاء هذا المقال استنادًا إلى فيديو على يوتيوب من TechSnips. إذا كنت متعلمًا بشكل بصري أكثر، فلا تتردد في مشاهدة الفيديو. في غير ذلك، استمر في القراءة!
تحميل التقارير عبر مركز الحسابات في أزور
يمكنك تنزيل العديد من تقارير الاستخدام المختلفة من مركز حساب 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.
- وحدة PowerShell لـ Azure. أحدث إصدار حتى هذه المرحلة هو 2.6.0. يجب تثبيت هذه الوحدة على جهازك. إذا لم يكن لديك ذلك بعد، يمكنك تثبيتها باستخدام PowerShellGet
- اتصال مستقر بـ Azure باستخدام Connect-AzAccount cmdlet
كيفية الحصول على بيانات استخدام الموارد
قبل إنشاء النص البرمجي، دعنا نناقش الأساسيات أولاً باستخدام أمر Get-UsageAggregates
. هذا هو أمر يسمح لك بجلب استخدام موارد Azure حسب نطاق التاريخ، والمقاييس مثل الساعة أو اليوم وغيرها. أمر Get-UsageAggregates
هو الأمر الرئيسي الذي يقوم بمعظم الأعمال السحرية التي ستتعلمها في هذه المقالة.
لتوضيح أمر 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
في الجزء الذي يسبق، من الممكن أن يُرجع الأمر العديد من الكائنات خاصةً لفترات تاريخية طويلة. لمنع الضغط الزائد على واجهة برمجة التطبيقات، يعيد أمر Get-UsageAggregates
فقط حدًا أقصى يبلغ 1000 نتيجة. إذا كنت قد حفظت المتغير $usageData
كما تم شرحه في القسم السابق، يمكنك التحقق من ذلك عن طريق تشغيل هذا الأمر $usageData.UsageAggregations.count
.
ماذا لو كان هناك أكثر من 1000 نتيجة؟ ستحتاج إلى بذل مزيد من الجهد.
عند دراسة الخصائص التي يعيدها الأمر Get-UsageAggregates
، ستلاحظ وجود خاصية تسمى ContinuationToken
كما هو موضح أدناه. يمكنك رؤية أن هذا الرمز هو سلسلة طويلة من الأحرف.

يعمل ContinuationToken
كمؤشر إلى مجموعة النتائج التالية. تعمل هذه الخاصية كعلامة مرجعية لمعرفة من أي صفحة يجب الحصول على الدفعة التالية من النتائج.
للتوضيح، احصل على العنصر الأخير في النتيجة السابقة باستخدام $usageData.UsageAggregations[-1]
كما هو موضح أدناه. لاحظ أوقات بدء الاستخدام وانتهائه.

الآن قم بتمرير نفس المعلمات إلى الأمر Get-UsageAggregates
مرة أخرى. ولكن في هذه المرة، استخدم معلمة ContinuationToken
واستخدم قيمة خاصية ContinuationToken
التي تمت إرجاعها سابقًا. فيما يلي يمكنك رؤية مثال عن كيفية القيام بذلك.
الآن احصل على العنصر الأخير في مصفوفة خاصية UsageAggregations
باستخدام $usageData.UsageAggregations[-1]
. قارنه بالنتيجة السابقة للتأكد من أن النتائج الجديدة مختلفة.
يجب أن يكون التماثل مشابهًا لتلك التي تراها أدناه. لاحظ أن فترات التواريخ تبعد بينها سبعة أيام. باستخدام ContinuationToken
، استعدت الصفحة الثانية من النتائج.


إنشاء وظيفة تقارير استخدام موارد Azure
يجب أن تعرف كيف يعمل التصفح وكيفية استخدام خاصية ومعلمة ContinuationToken
. ولكن ماذا لو كان هناك عشرات أو حتى مئات الآلاف من النتائج لاسترجاعها؟ لا يمكن أن يكون استخدام الرمز يدويا بهذه الطريقة أمرًا جيدًا.
لنقم ببناء سكربت PowerShell يدير هذا الطلب التصفحي لنا ويتيح لنا بعض المرونة الإضافية. سيسمح لك هذا السكربت بتوفير معلماتك الخاصة ومعالجة متطلبات التصفح. كما سيمنحك المرونة لتوسيعه في المستقبل لأداء مهام أخرى إذا لزم الأمر.
بناء المعلمات
ابنِ أولا بعض أطُر المهام. فيما يلي مثال على وظيفة تسمى Get-AzureUsage
. تحتوي هذه الوظيفة على ثلاث معلمات قد تكون مألوفة.
كانت هذه المعلمات محددة سابقًا في cmdlet Get-UsageAggregates
نفسه. أنت الآن تقوم ببناء وظيفة “تعليف” التي ستمرر القيم إلى هذا الcmdlet.
فيما يلي جدول يقدم مزيدًا من المعلومات حول كل هذه المعلمات.
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 للاختبار.
استعلام استخدام الموارد باستخدام وظيفتنا
حان الوقت الآن لاختبار الوظيفة. يمكنك إما لصق الشفرة أعلاه في نص و نقطة المصدر في جلسة 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 أو وحدة القوة EnhancedHTML2.
توسيع الأمور قليلاً وإضافة إخطار بالبريد الإلكتروني إلى النتيجة أيضًا باستخدام cmdlet Send-MailMessage. العالم مفتوح لك!
ملخص
في هذه المقالة ، تعلمت كيفية استرداد تقارير استخدام الموارد من Azure. كما تعلمت كيفية بناء وظيفة PowerShell مخصصة لتوتير العملية واستخدام تلك الوظيفة للتلاعب في الناتج.
المرة القادمة التي تواجه فيها فاتورة Azure غير متوقعة، ليس لديك أي عذر! قم ببناء وظيفة PowerShell للاستعلام عن استخدام موارد Azure في أي وقت لمراقبة تلك الفاتورة.
قراءة متعمقة
Source:
https://adamtheautomator.com/azure-detailed-usage-report/