Выявление и устранение потерь
Используйте рекомендации Azure Cost Management и Advisor, чтобы найти бездействующие VM, неподключенные диски, избыточно подготовленные службы и неиспользуемые ресурсы, а затем выведите их из эксплуатации.
«Выявление и устранение потерь» — бесплатный урок Azure Fundamentals на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Azure Fundamentals, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Azure Fundamentals содержит 4 уроков всего.
Облачные потери: скрытый источник затрат
Исследования неизменно показывают, что организации тратят впустую 25–35% расходов на облако на простаивающие, избыточно подготовленные или забытые ресурсы. В Azure к распространённым источникам потерь относятся VM, работающие круглосуточно при почти нулевой загрузке CPU, неподключённые управляемые диски, оставшиеся после удаления VM, осиротевшие общедоступные IP-адреса и неиспользуемые планы App Service. Выявление и устранение этих потерь — первый и наиболее эффективный с точки зрения ROI шаг в любой практике FinOps.
Рекомендации Azure Advisor по затратам
Azure Advisor непрерывно анализирует использование ресурсов и автоматически формирует рекомендации категории Cost. К распространённым рекомендациям относятся: изменить размер или остановить недостаточно используемые VM (менее 5% загрузки CPU или 2% использования памяти в течение 7 дней), приобрести Reserved Instances для постоянно работающих VM, удалить неподключённые общедоступные IP-адреса и удалить простаивающие экземпляры Application Gateway. В каждой рекомендации указывается расчётная месячная экономия, чтобы Вы могли расставить приоритеты по влиянию.
# List Advisor cost recommendations via CLI
az advisor recommendation list \
--category Cost \
--query '[].{Resource:resourceName, Impact:impact, Savings:extendedProperties.annualSavingsAmount}' \
--output tableПоиск простаивающих и недостаточно используемых VM
Azure Monitor собирает метрики процента загрузки CPU и входящего и исходящего сетевого трафика для каждой VM. VM, у которой загрузка CPU стабильно ниже 5%, с высокой вероятностью следует изменить в размере или остановить. Используйте функцию Virtual Machine Insights в Azure Monitor, чтобы просматривать общую картину использования CPU и памяти всеми VM за 24 часа, 7 или 30 дней. Рекомендация Advisor для недостаточно используемых VM содержит прямую ссылку на графики производительности, поэтому перед принятием решения Вы можете подтвердить наличие такой закономерности.
# Query average CPU for a VM over the last 7 days
az monitor metrics list \
--resource /subscriptions/<sub>/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM \
--metric 'Percentage CPU' \
--interval PT1H \
--start-time 2024-06-01T00:00:00Z \
--end-time 2024-06-08T00:00:00Z \
--aggregation AverageНеподключённые диски и моментальные снимки
Если VM удалить, не выбрав удаление её дисков, управляемые диски сохраняются и продолжают тарифицироваться. На портале Azure отфильтруйте диски по условию Состояние диска: Unattached, чтобы найти эти осиротевшие диски. Аналогично часто забывают старые моментальные снимки, созданные для резервного копирования или миграции. Хранение моментальных снимков дешевле хранения управляемых дисков, однако за год забытые моментальные снимки в большой подписке могут привести к дополнительным расходам в несколько тысяч долларов.
# Find all unattached managed disks in a subscription
az disk list \
--query '[?diskState == `Unattached`].{Name:name, RG:resourceGroup, SizeGB:diskSizeGb}' \
--output tableОсиротевшие общедоступные IP-адреса и сетевые интерфейсы
Общедоступные IP-адреса в Azure тарифицируются даже в том случае, если они не связаны с работающим ресурсом. После удаления VM или балансировщиков нагрузки их общедоступные IP-адреса и сетевые интерфейсы могут сохраниться. На портале отфильтруйте общедоступные IP-адреса по условию Связан с: None и удалите те, которые Вам больше не нужны. Аналогично можно без опасений удалить осиротевшие сетевые интерфейсы, не подключённые ни к одной VM или службе. Отдельные суммы невелики, но при сотнях ресурсов они складываются в существенные расходы.
# Find unassociated public IP addresses
az network public-ip list \
--query '[?ipConfiguration == null].{Name:name, RG:resourceGroup, SKU:sku.name}' \
--output tableРесурсы-зомби: промежуточные среды и среды Dev
Ресурсы-зомби — это существующие в течение длительного времени среды для промежуточного развертывания, тестирования или проверки концепции, которые были подготовлены, а затем забыты. В отличие от простаивающих рабочих VM, они могут использоваться с умеренной нагрузкой в рабочие часы, но не обслуживают активный проект. Внедрите политику тегирования ресурсов, требующую наличие тегов Environment и Project для каждого ресурса, а затем настройте автоматические оповещения для ресурсов, у которых Environment=Dev или Environment=Test и которым больше 90 дней.
# Find resources tagged as Dev that are over 90 days old (approximate via createdTime)
az resource list \
--tag Environment=Dev \
--query '[].{Name:name, Type:type, RG:resourceGroup}' \
--output tableАвтоматическое завершение работы VM Dev и Test
VM Azure поддерживают функцию Auto-Shutdown, которая автоматически останавливает VM в заданное время каждый день. Включите её для всех VM Dev и Test, чтобы они не работали ночью и в выходные. Например, VM Dev, работающая круглосуточно, оплачивается за все 24 часа, а VM, настроенная на автоматическое завершение работы в 18:00 и автоматический запуск в 8:00 только по будним дням, используется 50 часов в неделю вместо 168, что позволяет сэкономить примерно 70% затрат на вычисления.
# Enable auto-shutdown at 18:00 UTC on a dev VM
az vm auto-shutdown \
--resource-group myRG \
--name myDevVM \
--time 1800 \
--email admin@contoso.comAzure Cost Management: обнаружение аномалий
Azure Cost Management включает функцию Anomaly Detection, использующую машинное обучение для выявления неожиданных скачков расходов. Когда затраты подписки или группы ресурсов значительно отклоняются от прогнозируемых закономерностей — например, кто-то случайно развернул GPU VM или забыл удалить шлюз ExpressRoute, — Cost Management отправляет оповещение об аномалии по электронной почте. Настройка оповещений об аномалиях — быстрый способ выявить неконтролируемый рост затрат до того, как он отразится в ежемесячном счёте.
# Create a cost anomaly alert
az costmanagement alert create \
--name 'AnomalyAlert' \
--scope '/subscriptions/<subscriptionId>' \
--type 'Anomaly' \
--contact-emails 'finance@contoso.com'Изменение размеров уровней хранилищ и баз данных
Не все потери связаны с вычислениями. Базы данных Azure SQL, подготовленные на уровне Business Critical, но выполняющие простые запросы с преобладанием чтения, могут работать так же, как на уровне General Purpose, стоимость которого вдвое ниже. Данные Blob Storage, к которым обращаются редко, следует переместить с уровня Hot на уровень Cool или Archive с помощью политик управления жизненным циклом. Azure Advisor показывает рекомендации по изменению размеров баз данных и хранилищ наряду с рекомендациями по вычислительным ресурсам.
# Create a Blob lifecycle policy to move data to Cool tier after 30 days
az storage account management-policy create \
--account-name mystorageacct \
--resource-group myRG \
--policy @- << 'POLICY'
{
'rules': [{
'name': 'MoveOldDataToCool',
'type': 'Lifecycle',
'definition': {
'actions': { 'baseBlob': { 'tierToCool': { 'daysAfterModificationGreaterThan': 30 } } },
'filters': { 'blobTypes': ['blockBlob'] }
}
}]
}
POLICYФормирование списка задач по устранению потерь
Рассматривайте оптимизацию затрат как постоянную инженерную практику, а не как разовое мероприятие. Создайте список задач FinOps в Azure DevOps или Jira и еженедельно добавляйте в него задачи на основе рекомендаций Advisor и оповещений об аномалиях затрат. Назначьте каждую задачу по устранению потерь ответственной команде и установите целевую дату решения. Отслеживайте фактически достигнутую экономию и выявленную экономию, чтобы оценивать зрелость FinOps. Проводите ежемесячный обзор затрат с руководителями инженерных подразделений и финансовой службой, чтобы поддерживать внимание организации к устранению потерь.
Управление для предотвращения будущих потерь
Предотвращение эффективнее с точки зрения затрат, чем устранение последствий. Используйте Azure Policy, чтобы запрещать создание дорогих SKU VM (например, GPU или M-series) без одобрения, требовать теги Environment и ExpiryDate для всех ресурсов и автоматически включать автоматическое завершение работы для новых VM в подписках Dev. Объедините политики с оповещениями о бюджете, настроенными на 80% и 100% месячного бюджета, чтобы команды получали уведомления до возникновения перерасхода.
Быстрая проверка
Проверьте своё понимание концепций Microsoft Azure Fundamentals (AZ-900), рассмотренных в этом уроке.
Итоги урока
В этом уроке Вы узнали, что Azure Advisor предоставляет практические рекомендации по затратам для простаивающих VM, неподключённых дисков и избыточно подготовленных служб, автоматическое завершение работы для VM Dev может сократить расходы на вычисления на 70%, а политики управления с тегированием предотвращают накопление будущих потерь. Далее мы рассмотрим методы изменения размеров ресурсов и стратегии автоматического масштабирования.
Часто задаваемые вопросы
Урок «Выявление и устранение потерь» бесплатный?
Да — полный текст урока «Выявление и устранение потерь» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Azure Fundamentals, подпишись на CoddyKit PRO. Курс Azure Fundamentals содержит 4 уроков всего.
Чему я научусь в уроке «Выявление и устранение потерь»?
Используйте рекомендации Azure Cost Management и Advisor, чтобы найти бездействующие VM, неподключенные диски, избыточно подготовленные службы и неиспользуемые ресурсы, а затем выведите их из эксплуа… Ты практикуешь Azure Fundamentals с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Azure Fundamentals?
Предыдущий опыт не требуется. Azure Fundamentals на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Выявление и устранение потерь»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Azure Fundamentals?
Да. Каждый урок Azure Fundamentals включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Выявление и устранение потерь
- Оптимизация размеров и автомасштабирование
- Планы экономии Azure и резервирования
- FinOps и модели распределения затрат