SoftLayer API CPU使用率不匹配

时间:2017-01-24 14:19:19

标签: ibm-cloud-infrastructure

我尝试使用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%

CPU usage from control panel

这两个值是否相等?

1 个答案:

答案 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将使用用于执行请求的用户的时区显示时间,您可以通过以下方式查看用户时区:

  1. 访问Softlayer的门户网站
  2. 点击帐户菜单项 - &gt;用户
  3. 点击您的用户
  4. 查看时区
  5. 我建议您首先显示所有数据,然后验证确定时区的数据是否相同,如果不是,您需要查看时区并进行更改,直到它们显示相同的数据

    此致