2016-03-30 27 views
1

私のアカウントのすべてのソフト層サーバの帯域幅データを取得しようとしています。サーバごとの帯域幅の概要

account_servers.rbのおかげで、すべてのサーバーのサーバーIDを取得できました。今私は特定の時間枠のためにサーバーによって使用される帯域幅を取得したいと思います。興味のあるデータは

http://sldn.softlayer.com/reference/datatypes/SoftLayer_Metric_Tracking_Object_Bandwidth_Summary です。

softlayer_client.service_named("Metric_Tracking_Object_Bandwidth_Summary")を使用して情報を取得しようとしました。残念ながら、私は詳細を得ることができません。

私はJavaコードを見つけましたが、私はRubyコードに興味があります。誰かが私をガイドして、サーバの帯域をサマリーにすることはできますか?

Getting bandWidth data in SL

答えて

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を用いた第2の例:

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

+0

私たちは主にBareMetalServerを使用しています。助けてくれてありがとう。コードを見ると、私はBareMetalServerのために行われた変更をmakeoutできました。 \t server = SoftLayer :: BareMetalServer。server_with_id(SERVER_ID、クライアント=> softlayer_client) \t get_bandwidth_data_by_date = server.service.getBandwidthForDateRange(START_DATE、END_DATE、 'パブリック') ' –

+0

どういたしまして:) – mcruz

+0

は、どのように私はSLのAPIからのデータ転送速度を得ることができます。私は、データ型SoftLayer_Network_Componentから http://sldn.softlayer.com/reference/datatypes/SoftLayer_Network_Component をスピードを得ることができますが、私はデータ型SoftLayer_Network_ComponentとSoftLayer_Hardware_Server HTTPSサービス間の接続を行うことができませんことを参照してください。 //sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server –

0

Disclamer:私は自分の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 

あなたはこの1のようなRubyオブジェクトにアクセスします:

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

私はこれからもこれを試していきます。現在のところ、時間と私の単一の要件の不足のため、私はデフォルトのAPIを使って進んでいます。それは確かに私たちの要件で私たちを助けるでしょう –

+0

あなたが特定の電話をする必要がある場合は、この宝石を使用することができます:解決策のすべてではないbtw、心配しないでください:)あなたはこの宝石についてのいくつかの助けをしたい場合は、 github ..の問題:+1: –

関連する問題