1

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

enter image description here

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:

enter image description here

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?

+0

Voulez-vous trouver l'information par programmation ou processus manuel fera également? –

+0

@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

+0

@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. –

Répondre

3

Une réponse partielle à votre question. Pour le manuel, vous pouvez trouver ces informations sur le portail Azure lui-même. Cliquez sur "Abonnement", puis sélectionnez votre abonnement dans la liste des abonnements puis "Utilisation + quota".

enter image description here

+0

c'était trop facile .. si vous pouvez me donner des ressources (ie apis) où je peux lire ce programme par programmation je l'apprécierais vraiment! :) – abbood

2

Vous pouvez les trouver par programme, mais il est envoyé par le fournisseur:

Pour une programmation plus basée sur l'événement, Là est probablement un moyen de brancher Event Grid et/ou Logic Apps et/ou Azure Monitor pour être averti automatiquement.