我尝试使用PHP客户端在我们的一个虚拟服务器上查询API以获得CPU使用率:
$user = 'my_user';
$key = 'my_key';
$server = 24819101;
$client = \SoftLayer\SoapClient::getClient('SoftLayer_Virtual_Guest', $server, $user, $key);
$usage = $client->getCpuMetricDataByDate(date('Y-m-d H:i:s', strtotime('-2 HOUR')));
对API的调用没问题,其中一个结果如下:
array(
'counter' => 2.096,
'dateTime' => '2017-01-24T14:00:00+01:00',
'type' => 'cpu0',
)
我将其视为"第一个CPU,今天下午2点,负载约为2%"。
但是,如果我从控制面板看到CPU图表,我看到今天下午2点,CPU为76.5%
这两个值是否相等?
答案 0 :(得分:1)
Softlayer门户用于显示CPU使用率的所有API方法中的第二个不是SoftLayer_Virtual_Guest:getCpuMetricDataByDate此方法显示平均CPU使用率,另一方面Softlayer的门户显示最大CPU使用率并使用此方法:< / p>
http://sldn.softlayer.com/reference/services/SoftLayer_Metric_Tracking_Object/getSummaryData
这是一个使用RESTful的例子:
POST https://$USER:$APIKEY@api.softlayer.com/rest/v3.1/SoftLayer_Metric_Tracking_Object/$METIRCID/getSummaryData
PAYLOAD:
{
"parameters": [
"2017-01-24T00:00:00-00:00",
"2017-01-25T00:00:00-00:00",
[
{
"keyName": "CPU0",
"summaryType": "max"
}
],
600
]
}
使用PHP会是这样的:
$metricID = 11111;
$client = \SoftLayer\SoapClient::getClient('SoftLayer_Metric_Tracking_Object', $metricID, $user, $key);
$types = array();
$type = new stdClass();
$type -> keyName = "CPU0";
$type -> summaryType= "max";
$types[] = $type
$usage = $client->getCpuMetricDataByDate("2017-01-24T00:00:00-00:00", "2017-01-25T00:00:00-00:00",$types,600);
因此,您需要获取可以使用此方法的metricID:
http://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/getMetricTrackingObjectId
这是一个使用RESTFUl的例子:
GET https://api.softlayer.com/rest/v3.1/SoftLayer_Virtual_Guest/$VirtualGuestId/getMetricTrackingObjectId
需要指出的另一点是时间,您需要确保门户网站和您的代码使用相同的时区,否则您将在门户网站和API中同时看到不同的数据。 API将使用用于执行请求的用户的时区显示时间,您可以通过以下方式查看用户时区:
我建议您首先显示所有数据,然后验证确定时区的数据是否相同,如果不是,您需要查看时区并进行更改,直到它们显示相同的数据
此致