首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个服务器的带宽摘要

每个服务器的带宽摘要
EN

Stack Overflow用户
提问于 2016-03-30 11:52:45
回答 2查看 220关注 0票数 1

我正试图获取我的帐户下的所有软层服务器的带宽数据。

多亏了account_servers.rb,我才能获得所有服务器的服务器id。现在,我想获得服务器在特定时间范围内使用的带宽。我感兴趣的数据是

摘要

我试着用softlayer_client.service_named("Metric_Tracking_Object_Bandwidth_Summary")获取信息。不幸的是,我无法得到细节。

我确实找到了一个java代码,但我对ruby代码很感兴趣。有人能指点我得到服务器带的摘要吗?

在SL中获取bandWidth数据

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-30 15:28:00

请尝试以下Ruby示例:

代码语言:javascript
复制
require 'rubygems'
require 'softlayer_api'


server_id = 11498369
# Your SoftLayer API username.
SL_API_USERNAME = 'set me'

# Your SoftLayer API key.
SL_API_KEY = 'set me'

softlayer_client = SoftLayer::Client.new(:username => SL_API_USERNAME,
                                         :api_key => SL_API_KEY)

vsi_service = softlayer_client.service_named('SoftLayer_Virtual_Guest')
metric_tracking_object_id = vsi_service.object_with_id(server_id).getMetricTrackingObjectId

metric_service = softlayer_client.service_named('SoftLayer_Metric_Tracking_Object')
service_ref = metric_service.object_with_id(metric_tracking_object_id)

begin
  object_template = [{
      'keyName' => 'PUBLICOUT',
      'summaryType' => 'sum'
  }]

  result = service_ref.getSummaryData('2016-03-29T00:00:00','2016-03-30T00:00:00',object_template,600)
  puts result.inspect

rescue => e
  puts 'Error when executing the script...'

  $stdout.print(e.inspect)
end

参考资料:

对象:getSummaryData

客人:getMetricTrackingObjectId

第二个使用SoftLayer_Virtual_Gues::getBandwidthDataByDate的示例:

代码语言:javascript
复制
require 'rubygems'
require 'softlayer_api'
require 'pp'
require 'date'

# Set the server id that you wish to get Bandwidth information.
server_id = 11498369

softlayer_client = SoftLayer::Client.new(:username => 'set me',
                                         :api_key => 'set me')

server = SoftLayer::VirtualServer.server_with_id(server_id, :client => softlayer_client)


get_bandwidth_data_by_date = server.service.getBandwidthDataByDate('2016-03-29T00:00:00','2016-03-30T00:00:00','public')
pp('getBandwidthDataByDate: ', get_bandwidth_data_by_date)

参考资料:

客人:getBandwidthDataByDate

票数 2
EN

Stack Overflow用户

发布于 2016-03-30 14:51:37

Dis箝‘m:我创建了自己的Ruby,您可以在SoftLayer上查看它,特别是在这样的情况下,您需要访问一些特定的数据(而且我不是SoftLayer的工作人员;)

如果您想尝试一下,解决问题的代码是

ps:我认为你在操纵一个SoftLayer_Hardware_Server,对吗?

代码语言:javascript
复制
hardware = Softlayer::Hardware::Server.find(123)
hardware.get_current_bandwidth_summary

mask = 'mask[currentBandwidthSummary]'
hardware = Softlayer::Hardware::Server.mask(mask).find(123)
hardware.current_bandwidth_summary

您将访问一个类似于此的ruby对象:

代码语言:javascript
复制
=> #<Softlayer::Metric::Tracking::Object::Bandwidth::Summary:0x007ff74b683540
 @allocation_amount="1234",
 @allocation_id=111111,
 @amount_out="12.34567",
 @average_daily_usage="1.23",
 @currently_over_allocation_flag=0,
 @id=1111111,
 @outbound_bandwidth_amount="123.45678",
 @projected_bandwidth_usage="123.45",
 @projected_over_allocation_flag=0>

希望它能对你有帮助,如果你对客户端的使用有任何疑问的话,请评论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36308040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档