Сводка пропускной способности на сервер

Я пытаюсь получить данные о пропускной способности для всех серверов softlayer под своей учетной записью.

Благодаря account_servers.rb я могу получить идентификатор сервера для всех серверов. Теперь я хотел бы получить пропускную способность, используемую серверами для определенного периода времени. Интересующие меня данные

http://sldn.softlayer.com/reference/datatypes/SoftLayer_Metric_Tracking_Object_Bandwidth_Summary .

Я пытался получить информацию, используя softlayer_client.service_named("Metric_Tracking_Object_Bandwidth_Summary"). К сожалению, я не могу получить подробности.

Я нашел код Java, но меня интересует код ruby. Может ли кто-нибудь помочь мне получить сводку пропускной способности сервера?

Получение данных о пропускной способности в SL


person Ankit Gupta    schedule 30.03.2016    source источник


Ответы (2)


Пожалуйста, попробуйте следующие Ruby примеры:

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

Ссылки:

SoftLayer_Metric_Tracking_Object::getSummaryData

SoftLayer_Virtual_Guest::getMetricTrackingObjectId

Второй пример с использованием SoftLayer_Virtual_Gues::getBandwidthDataByDate:

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)

Ссылки:

SoftLayer_Virtual_Guest::getBandwidthDataByDate

person mcruz    schedule 30.03.2016
comment
В основном мы используем BareMetalServer. Спасибо за помощь. Глядя на код, я смог разглядеть изменения, которые нужно сделать для BareMetalServer. ` server = SoftLayer::BareMetalServer.server_with_id(server_id, :client => softlayer_client) get_bandwidth_data_by_date = server.service.getBandwidthForDateRange(start_date,end_date,'public') ` - person Ankit Gupta; 31.03.2016
comment
Как я могу получить скорость передачи данных от SL API. Я вижу, что могу получить скорость от типа данных SoftLayer_Network_Component, sldn.softlayer.com/reference/datatypes/ но я не могу установить соединение между типом данных SoftLayer_Network_Component и службой SoftLayer_Hardware_Server sldn.softlayer. com/reference/services/SoftLayer_Hardware_Server - person Ankit Gupta; 01.04.2016
comment
См.: SoftLayer_Hardware::getNetworkComponents или SoftLayer_Hardware_Server::getNetworkComponents, они могут вам помочь. Или SoftLayer_Hardware::getObject поможет вам использовать некоторые маски (остальный пример): https://[username]:[apikey]@api.softlayer.com/rest/v3/SoftLayer_Hardware/[hardware_ID]/getObject?objectMask=mask[networkComponents] - person mcruz; 01.04.2016
comment
Спасибо за помощь. Требование, которое я ищу, недоступно в API Softlayer. Я отправил запрос в Softlayer, и он был передан команде разработчиков. - person Ankit Gupta; 04.04.2016

Отказ от ответственности: я создал свой собственный клиент Ruby SoftLayer, вы можете проверить его по адресу http://github.com/zertico/softlayer специально для таких ситуаций, как эта, когда вы хотите получить доступ к некоторым конкретным данным (и я не сотрудник SoftLayer;))

Если вы хотите попробовать, код, который решает вашу проблему,

PS: я думаю, вы манипулируете SoftLayer_Hardware_Server, верно?

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

Вы получите доступ к рубиновому объекту, подобному этому:

=> #<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>

Надеюсь, это поможет вам, прокомментируйте, если у вас есть какие-либо сомнения относительно использования клиента.

person Celso Fernandes    schedule 30.03.2016
comment
Я обязательно попробую это в будущем. В настоящее время из-за нехватки времени и моего единственного требования я использую API по умолчанию. Это, безусловно, поможет нам в нашем требовании - person Ankit Gupta; 31.03.2016
comment
не волнуйтесь, кстати, это не универсальное решение, вы можете использовать этот драгоценный камень, если вам нужно сделать конкретный вызов :) Если вам нужна помощь по этому драгоценному камню, просто откройте вопрос на github .. : +1 : - person Celso Fernandes; 31.03.2016