Обзор
Управление неиспользуемыми или осиротевшими ресурсами в Azure может существенно повлиять на расходы на облако и операционную эффективность. Инструмент Azure Resource Cleanup — это комплексный сценарий PowerShell, предназначенный для помощи облачным администраторам в выявлении и удалении неиспользуемых или осиротевших ресурсов Azure, обеспечивая оптимизацию затрат и улучшение управления ресурсами.
Этот сценарий по умолчанию работает в безопасном, неразрушающем режиме отчётности, позволяя администраторам проверять осиротевшие ресурсы перед началом операций очистки.
Вы можете получить доступ к проекту на GitHub: AzureOpsScripts – Resource Cleanup.
Содержание
Ключевые возможности
Сценарий Azure Resource Cleanup предоставляет следующие возможности:
- Осиротевшие сетевые адаптеры: выявляет сетевые интерфейсы, не подключённые ни к одной виртуальной машине или конечной точке.
- Старые моментальные снимки дисков Azure: обнаруживает снимки, превышающие срок хранения.
- Моментальные снимки BLOB-объектов учётных записей хранения: помечает снимки BLOB-объектов старше установленного срока хранения.
- Моментальные снимки файловых ресурсов: выявляет снимки файловых ресурсов, превышающие ограничения срока хранения.
- Осиротевшие управляемые диски: находит диски, не подключённые ни к одной виртуальной машине.
- Осиротевшие общедоступные IP-адреса: находит неиспользуемые общедоступные IP-адреса.
- Неиспользуемые группы сетевой безопасности: выявляет группы сетевой безопасности, не связанные ни с какими ресурсами.
- Неиспользуемые группы доступности: обнаруживает группы доступности, которые больше не используются.
- Пустые группы ресурсов: помечает группы ресурсов без активных ресурсов.
- Неиспользуемые виртуальные сети: выделяет потенциально неиспользуемые виртуальные сети (только выделяет, сценарий не удаляет их).
- Зарезервированные, но неиспользуемые IP-адреса: выявляет IP-адреса, зарезервированные, но не назначенные активно.
Требования
Чтобы использовать сценарий Azure Resource Cleanup, убедитесь, что выполнены следующие предварительные требования:
- Версия PowerShell: 5.1 или выше
- Модуль Az PowerShell: установите с помощью команды:
Install-Module -Name Az - Разрешения учётной записи Azure: убедитесь в наличии соответствующих разрешений для просмотра и удаления ресурсов.
Использование
Режим отчётности
Запустите сценарий в режиме отчётности, чтобы создать подробный отчёт об осиротевших ресурсах:
.\Azure-Resource-Cleanup.ps1

Режим очистки
Чтобы удалить выявленные ресурсы, используйте режим очистки:
.\Azure-Resource-Cleanup.ps1 -DeleteResources
Настройка хранения моментальных снимков
Укажите количество дней хранения моментальных снимков, чтобы выявить более старые снимки для очистки:
.\Azure-Resource-Cleanup.ps1 -SnapshotRetentionDays 7 -DeleteResources

Исключение проверок моментальных снимков хранилища
Пропустите проверки моментальных снимков BLOB-объектов и файловых ресурсов учётных записей хранения для больших сред:
.\Azure-Resource-Cleanup.ps1 -IncludeStorageSnapshots:$false
Важные замечания
Запуск в разрешённых виртуальных сетях
Убедитесь, что сценарий выполняется в разрешённой виртуальной сети. Из-за сетевых ограничений некоторые учётные записи хранения могут запрещать доступ к контейнерам или моментальным снимкам файлов. Если учётная запись хранения не поддерживает операции удаления, при попытке очистки этих ресурсов могут возникнуть ошибки.
Тестирование в средах разработки/тестирования
Настоятельно рекомендуется протестировать сценарий в средах разработки или тестирования перед использованием в рабочей среде. Это позволит вам проверить поведение сценария, выявить потенциальные проблемы и проверить ресурсы, помеченные для очистки.
Использование режима только отчёта
Для рабочих сред всегда начинайте с запуска сценария в режиме только отчёта (без параметра -DeleteResources). Это предоставляет подробный отчёт об осиротевших ресурсах, позволяя просмотреть и проверить помеченные элементы перед началом операций очистки.
Параметры
Сценарий поддерживает несколько настраиваемых параметров:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
SnapshotRetentionDays | Integer | 3 | Срок хранения моментальных снимков (в днях). Снимки старше этого срока будут помечены для очистки. |
DeleteResources | Switch | $false | Включает удаление выявленных ресурсов. По умолчанию сценарий только составляет отчёты. |
IncludeStorageSnapshots | Switch | $true | Включает проверки моментальных снимков BLOB-объектов и файловых ресурсов. Установите значение $false, чтобы исключить эти проверки. |
Вывод отчёта
Сценарий создаёт подробные отчёты в папке с отметкой времени, включая:
orphaned_nics.csvold_managed_snapshots.csvold_blob_snapshots.csvold_fileshare_snapshots.csvorphaned_disks.csvorphaned_public_ips.csvorphaned_nsgs.csvunused_availability_sets.csvempty_resource_groups.csvunused_vnets.csvsubnet_ip_usage.csvcleanup_log.txt(полный журнал выполненных действий)
Рекомендации
- Начните с режима отчётности: всегда запускайте сценарий без параметра
-DeleteResources, чтобы просмотреть помеченные ресурсы. - Просмотрите отчёты: внимательно проанализируйте созданные CSV-файлы перед началом операций очистки.
- Установите сроки хранения: настройте сроки хранения моментальных снимков в соответствии с политиками организации.
- Тестируйте в нерабочих средах: запускайте сценарий в средах разработки/тестирования, чтобы проверить его поведение перед использованием в рабочей среде.
- Запускайте в разрешённых виртуальных сетях: убедитесь, что сценарий выполняется в разрешённых виртуальных сетях, чтобы избежать сетевых ошибок при очистке учётных записей хранения.
Пример рабочего процесса
Следуйте этому рабочему процессу, чтобы безопасно очистить ресурсы Azure:
- Запустите сценарий в режиме отчётности:
.\Azure-Resource-Cleanup.ps1 - Просмотрите созданные отчёты, чтобы найти помеченные ресурсы.
- Уверенно переходите к режиму очистки:
.\Azure-Resource-Cleanup.ps1 -DeleteResources