Получение данных об использовании + сборы Экспорт сведений о затратах Azure и хранение информации в контейнере Azure

Я пытаюсь создать экспорт данных об использовании и расходах Azure в файл CSV, задав для области идентификатор моей учетной записи выставления счетов в сценарии PowerShell. Я запустил код, и он работает, но когда я выполняю генерацию стоимости в другом сценарии PowerShell, кажется, что команда не получает все расходы. Проверив файл, отправленный в контейнер Azure, я обнаружил, что его размер составляет примерно 641 МБ, а когда я вручную загружаю Usage + Charges.csv с портала Azure, размер CSV составляет 656 МБ. Это означает, что в области учетной записи выставления счетов отсутствует примерно 15 МБ данных, и мне было интересно, правильно ли я понял, экспортируя CSV через PowerShell.

Моя конечная цель — автоматизировать экспорт csv каждый месяц, чтобы я мог отправлять себе по электронной почте расходы в другом сценарии PowerShell. Я связался с Microsoft по поводу этой проблемы и встречусь с ними, чтобы обсудить проблему, но мне было интересно, делал ли кто-нибудь что-то подобное в свое время и могли ли они самостоятельно автоматизировать Usage + Charges.csv. Код размещен ниже, и любые советы или указатели помогут.

Код экспорта:

# Log into the Azure Subscription and authenticate the login
Az Login

# Set variables for the command. 
$subscriptionId = "XXXXXXXXXXXXXXXXXXXXXXXXX"
$storageAccountId = "/subscriptions/$subscriptionId/resourceGroups/XXXXXXXXXXXXXXXXXXXXXX/providers/Microsoft.Storage/storageAccounts/XXXXXXXXXXXXXXXXXXXXXXXXXXX"
$containerName = "publicstoragecontainer001"
$exportName = "Usage Data for XXXXXXXXXXXXXXXXX"
$timeFrame = "TheLastBillingMonth"
$type = "Usage"
$folderName = "Total Usage Cost Exports"
$scheduleStatus = "Active"
$reoccurance = "Monthly"

# Get the Usage from the Billing Scope. 
$scope = "/providers/Microsoft.Billing/billingAccounts/XXXXXXXXXXXXXXXXX"

# Time Variables
$current_time = Get-Date
$future_time = $current_time.AddHours(1)
$current_time_str = $current_time.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
$future_time_str = $future_time.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")


# Export the usage data of each tenant to the storage account
az costmanagement export create --name $exportName --scope $scope --storage-account-id $storageAccountId --storage-container $containerName --timeframe $timeFrame --type $type --storage-directory $folderName --schedule-status $scheduleStatus --recurrence $reoccurance --recurrence-period from=$current_time_str to=$future_time_str

Но совпадает ли общая цифра? Разница в размере может заключаться в escape-символах, разделении кавычек и т. д.

Nick.McDermaid 13.04.2023 11:04

@Nick.McDermaid Суммарная цифра соответствует всем центрам затрат, кроме одного. Я вручную загрузил файл Usage+Charges.csv с портала Azure и таким образом провел ручную проверку затрат. Когда я загрузил руководство в формате CSV, информация была правильной и точно отражала расходы, которые я использовал в этом месяце. Когда я вытащил Экспорт из Контейнера для хранения, один из моих центров затрат был значительно отклонен.

Devin York DJ 13.04.2023 20:26

и когда вы углубитесь в этот центр затрат, сможете ли вы определить какую-либо закономерность того, чего не хватает? Может быть встроенный инструмент MS, который уже охватывает все, что вы пытаетесь сделать в данный момент.

Nick.McDermaid 16.04.2023 03:36
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
3
146
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел проблему.

Для параметра -type необходимо установить значение ActualCost вместо Usage. если вы установите для него значение ActualCost, то команда будет получать данные об использовании и сборах за экспорт csv, а не только данные об использовании. Изменение параметра дает вам нужные результаты.

Спасибо всем, кто внес свой вклад!

Войдите в подписку Azure и выполните аутентификацию входа.

Аз Войти

# Set variables for the command. 
$subscriptionId = "XXXXXXXXXXXXXXXXXXXXXXXXX"
$storageAccountId = "/subscriptions/$subscriptionId/resourceGroups/XXXXXXXXXXXXXXXXXXXXXX/providers/Microsoft.Storage/storageAccounts/XXXXXXXXXXXXXXXXXXXXXXXXXXX"
$containerName = "publicstoragecontainer001"
$exportName = "Usage Data for XXXXXXXXXXXXXXXXX"
$timeFrame = "TheLastBillingMonth"
$type = "ActualCost"
$folderName = "Total Usage Cost Exports"
$scheduleStatus = "Active"
$reoccurance = "Monthly"

# Get the Usage from the Billing Scope. 
$scope = "/providers/Microsoft.Billing/billingAccounts/XXXXXXXXXXXXXXXXX"

# Time Variables
$current_time = Get-Date
$future_time = $current_time.AddHours(1)
$current_time_str = $current_time.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
$future_time_str = $future_time.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")


# Export the usage data of each tenant to the storage account
az costmanagement export create --name $exportName --scope $scope --storage-account-id $storageAccountId --storage-container $containerName --timeframe $timeFrame --type $type --storage-directory $folderName --schedule-status $scheduleStatus --recurrence $reoccurance --recurrence-period from=$current_time_str to=$future_time_str

Другие вопросы по теме