背景
であなたが十分なリソースを持っていることを確認するために、どのように、これは不完全な情報と、質問のように思えるなら、それはあります。これはAzureを使用して、大量のVMを自動的にプロビジョニングし、スケールし、縮小し、サードパーティによって私たちに渡され、いくつかの問題を理解するのに問題がある大規模なプロジェクトと関係しているからです。Azureの
#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
問題
:しかし、私は紺碧のVMを起動する方法で使用されるこのコードを参照してくださいなど我々は彼らを殺すために、AzureのVMを起動するためのpythonのアズール SDKを使用しているを説明するために全力を尽くしますよ
私たちは、このコマンドを実行すると、私たちはこのエラーを取得たまに:調査時
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
を、これは紺碧hでB/C私たちのリソースを起こっている判明aveは最大になった(?)。この問題を解決する方法は、この方法を使用して前記リソースをパージすることです。
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)
これはすばらしいことです。しかし、ビジネス上の理由から、単に - 定期的な間隔でこのコマンドを実行するcronジョブを作成することはできません。 - 一度に多くの異なる環境に影響を及ぼす自動化された方法では実行できません(例:prod/demo/stage/dev )これは大きすぎて、側面に影響を及ぼして理解できない。
これは、すべてのenvがクリアで準備ができているという合意が得られたら、このコマンドを定期的に実行する必要があることを意味します。私はAzureのコンソール
と認めどのくらい私ののを見つけるために方法を持っている内部リソースセクションを見てみたいと思い
質問
私が消費したのリソース。私は、あなたが許可している公的ipsなどの45%を消費しているように、そして私が安全かどうか、またはパージコマンドをもう一度実行する必要があるかどうかを知っているということを考えてみましょう。
アイデア?
更新
詳細にThis page discussees例えば可能な限界、:
しかし、それは、現在使用されているか、どのようにどのくらいこれらのリソースの測る方法について話しません。多くは残っています。それは私が見つけようとしているものです
誰かが何が起こっているのか説明できますか?
プログラムで情報を検索したいのですか、または手動で処理することもできますか? –
@ GauravMantriはじめに私はマニュアル情報に満足していますが、プログラムでこの情報を取得する方法を知っています。 – abbood
@abboodまず、これはクラシックモードの制限です。リソースモードでは、デフォルトで60のパブリックIPアドレス(動的)を使用できますが、制限に達するにはチケットを作成することができます。この[リンク](https://docs.microsoft.com/en-us/azure/azure-supportability/resource-manager-core-quotas-request)を参照してください。チケットは無料です。 –