我扩展了 azure github repo 中给出的示例,以获取在 MS Azure 上运行的虚拟机的示例。如果我不提供任何过滤参数,它会返回 CPU 百分比的度量值。现在,如果我为过滤提供任何值,它不会考虑它,并且仍然只返回 CPU 百分比的样本。我正在关注这个以获得结果。这是我正在使用的红宝石代码。请检查一次
#!/usr/bin/env ruby
require 'open-uri'
require 'pp'
require 'typhoeus'
require 'azure_mgmt_resources'
def print_item(group)
puts "\tName: #{group.name}"
puts "\tId: #{group.id}"
puts "\tLocation: #{group.location}"
puts "\tTags: #{group.tags}"
puts "\tType: #{group.type}" if group.respond_to? :type
print_properties(group.properties)
end
def print_properties(props)
puts "\tProperties:"
props.instance_variables.sort.each do |ivar|
str = ivar.to_s.gsub /^@/, ''
if props.respond_to? str.to_sym
puts "\t\t#{str}: #{props.send(str.to_sym)}"
end
end
puts "\n\n"
end
subscription_id = "SUB_ID"
provider = MsRestAzure::ApplicationTokenProvider.new(
'TENANT_ID'
'CLIENT_ID',
'CLIENT_SECRET')
credentials = MsRest::TokenCredentials.new(provider)
client = Azure::ARM::Resources::ResourceManagementClient.new(credentials)
client.subscription_id = subscription_id
headers = {'Content-Type'=> 'application/json', 'Authorization'=> provider.get_authentication_header }
resp = Typhoeus::Request.get('https://management.azure.com/subscriptions?api-version=2015-01-01', headers: headers)
metric_definitions_api = "https://management.azure.com__RESOURCE__/providers/microsoft.insights/metricDefinitions?api-version=2016-03-01"
metrics_samples_api = "https://management.azure.com__RESOURCE__/providers/microsoft.insights/metrics?api-version=2016-09-01"
JSON.parse(resp.body)["value"].each do |subscriptions|
puts "Subscription id : #{subscriptions["subscriptionId"]}"
client.subscription_id = subscriptions["subscriptionId"]
puts 'List Resource Groups'
client.resource_groups.list.each do
|group| print_item(group)
puts 'List all of the resources within the group'
client.resource_groups.list_resources(group.name).each do |resource|
if resource.type == 'Microsoft.Compute/virtualMachines'
print_item(resource)
metric_definitions_api = metric_definitions_api.sub('__RESOURCE__', resource.id)
resp = Typhoeus::Request.get(metric_definitions_api, headers: headers)
puts "Definitions :"
pp JSON.parse(resp.body)
metrics_samples_api = metrics_samples_api.sub('__RESOURCE__', resource.id)
JSON.parse(resp.body)['value'].each do |val|
filter = "&(name.value eq '#{val["name"]["value"]}')"
resp = Typhoeus::Request.get( URI::encode(metrics_samples_api + filter), headers: headers)
puts "Samples : #{metrics_samples_api + filter}"
pp JSON.parse(resp.body)["value"][0]["data"][0..4] # Return first 5 samples
puts "\n"
end
end
end
end
end