Contexte
Si cela vous semble être une question avec des informations incomplètes, c'est. En effet, il s'agit d'un grand projet qui utilise Azure pour provisionner et redimensionner automatiquement une grande quantité de machines virtuelles, qui nous a été confiée par une tierce partie, et nous avons du mal à comprendre certains problèmes. Mais je vais essayer de mon mieux pour expliquerComment vérifier que vous disposez de suffisamment de ressources sur Azure
Nous utilisons Azure SDK de python pour lancer des machines virtuelles Azure, de les tuer, etc. Voir le code utilisé dans la méthode qui lance vms azur:
#Get VMs info. do it via minimum calls to speed up things
started_on = time.time()
while True:
try:
time.sleep(5)
vm = compute_client.virtual_machines.get(self.resource_group, vm_name)
break
Problème
Parfois, quand nous courons cette commande, nous obtenons cette erreur:
aioc.logic.connectors.azure:2017-08-17 08:39:45,709 | ERROR | Stop waiting for VM auto-acfinH-25 to finish
Traceback (most recent call last):
File "/home/aioc/aioc/aioc/logic/connectors/azure.py", line 126, in start
vm = compute_client.virtual_machines.get(self.resource_group, vm_name)
File "/home/aioc/venv/lib/python3.4/site-packages/azure/mgmt/compute/compute/v2016_04_30_preview/operations/virtual_machines_operations.py", line 369, in get
raise exp
msrestazure.azure_exceptions.CloudError: Azure Error: ResourceNotFound
Message: The Resource 'Microsoft.Compute/virtualMachines/auto-acfinH-25' under resource group 'AIOCBot' was not found.
aioc.logic.main_controller_logic:2017-08-17 08:39:45,978 | ERROR | An error occurred while checking Vm with id '599553cdc1462e3a828c66da' machine id '328'
Traceback (most recent call last):
File "/home/aioc/aioc/aioc/logic/main_controller_logic.py", line 41, in run_vm_controller
started_vms = vmc.start(vm.machine_type, 1)
File "/home/aioc/aioc/aioc/logic/connectors/azure.py", line 135, in start
vm_net_interface = network_client.network_interfaces.get(self.resource_group, vm_name)
File "/home/aioc/venv/lib/python3.4/site-packages/azure/mgmt/network/v2017_03_01/operations/network_interfaces_operations.py", line 171, in get
raise exp
msrestazure.azure_exceptions.CloudError: Azure Error: ResourceNotFound
Après enquête, il se ce qui se passe b/c nos ressources à azur h ave maxed out (?). La façon de résoudre ce problème consiste à purger les ressources en utilisant cette méthode:
def cleanup_all(self):
"""
Clean up all auto-created resources
"""
compute_client = ComputeManagementClient(self.credentials, self.subscription_id)
network_client = NetworkManagementClient(self.credentials, self.subscription_id)
resource_client = ResourceManagementClient(self.credentials, self.subscription_id)
l = resource_client.resources.list()
for r in [r for r in l if r.name.startswith('auto-')]:
try:
if 'publicIPAddresses' in r.type:
rs = network_client.public_ip_addresses.delete(self.resource_group, r.name)
rs.wait()
elif 'Microsoft.Network' in r.type:
rs = network_client.network_interfaces.delete(self.resource_group, r.name)
rs.wait()
elif 'Microsoft.Compute/virtualMachines' in r.type:
rs = compute_client.virtual_machines.delete(self.resource_group, r.name)
rs.wait()
except:
log.warn("Failed to stop resource: %s with type: %s", r.name, r.type, exc_info=1)
Ce qui est génial. Cependant, pour des raisons commerciales, nous ne pouvons pas simplement - créer un travail cron qui exécute ces commandes sur un intervalle régulier - ne peut pas l'exécuter de manière automatisée car il affecte de nombreux environnements différents à la fois (à savoir prod/demo/stage/dev) qui est un trop grand côté affectent d'être insondable.
Cela signifie que nous devons exécuter cette commande périodiquement, une fois de temps en temps, une fois que nous avons un accord que tous les env sont clairs et prêts.
Question
Je voudrais jeter un oeil à la section ressources dans ma console Azure
et ont un moyen pour savoir combien de mon permis ressources que j'ai consommées. Je dois avoir une idée par exemple: oh par la façon dont vous avez consommé comme 45% pour cent de vos ips publics autorisés etc, et ainsi je sais si je suis en sécurité ou si j'ai besoin d'exécuter la commande de purge à nouveau.
Des idées?
Mise à jour
This page discussees en détail les limites disponibles, par exemple:
Mais il ne parle pas sur la façon d'évaluer combien de ces ressources sont actuellement utilisées ou comment il reste beaucoup ... c'est ce que j'essaie de savoir
Quelqu'un peut-il expliquer ce qui se passe?
Voulez-vous trouver l'information par programmation ou processus manuel fera également? –
@GauravMantri pour les débutants Je serai heureux avec les informations manuelles, bien que sachant comment cette information peut être obtenue par programmation est la bienvenue aussi bien – abbood
@abbood Tout d'abord, c'est une limite de mode classique. En mode ressource, vous pouvez utiliser 60 adresse IP publique (dynamique) par défaut, si vous voulez atteindre la limite, vous pouvez créer un ticket. S'il vous plaît se référer à ce [lien] (https://docs.microsoft.com/en-us/azure/azure-supportability/resource-manager-core-quotas-request). Le ticket est gratuit. –