【问题标题】:Resource Data In SoftLayerSoftLayer 中的资源数据
【发布时间】:2016-03-14 22:38:25
【问题描述】:

我正在使用 SL java 客户端在详细设备中开发资源图,例如带宽、使用情况、内存和 cpu。从 api 检索到的数据与控制门户上的图形不同。

这些数据来自 control.softlayer.com 上的图表

Date                        CPU Value
2016-03-03T10:00:00-06:00   0.67
2016-03-03T10:30:00-06:00   0.86
2016-03-03T11:00:00-06:00   0.84
2016-03-03T11:30:00-06:00    1
2016-03-03T12:00:00-06:00   0.82

这些是来自 SL API 的数据。 getCount() 是 CPU 值。 getType() : cpu0

getCounter() : 0.26266666666667
getDateTime() : 03 03 2016 10:00:00-0600
dt.hashCode() : 1396398841
****************************************
getType() : cpu0
getCounter() : 0.42433333333333
getDateTime() : 03 03 2016 10:30:00-0600
dt.hashCode() : 1574026271
****************************************
getType() : cpu0
getCounter() : 0.591
getDateTime() : 03 03 2016 11:00:00-0600
dt.hashCode() : 1955972951
****************************************
getType() : cpu0
getCounter() : 0.57966666666667
getDateTime() : 03 03 2016 11:30:00-0600
dt.hashCode() : 357719181
****************************************
getType() : cpu0
getCounter() : 0.55033333333333
getDateTime() : 03 03 2016 12:00:00-0600
dt.hashCode() : 1379547114
****************************************

我使用这个 api 来获取 CPU 数据。 List dataList = Guest.service(client, deviceID).getCpuMetricDataByDate(startDate, endDate, null);

内存数据 API List dataList = Guest.service(client, deviceID).getMemoryMetricDataByDate(startDate, endDate);

带宽数据 API 列表 dataList = Guest.service(client, deviceID).getBandwidthDataByDate(startDate, endDate, "public");

这些数据也与图表上的数据不匹配。 请给我你的 cmets 我如何获得精确的数据。

谢谢

【问题讨论】:

    标签: ibm-cloud-infrastructure


    【解决方案1】:

    我建议您使用http://sldn.softlayer.com/reference/services/SoftLayer_Metric_Tracking_Object/getSummaryData 方法,请参见下面使用 Softlayer Python 客户端获取带宽的示例。为了让 CPU 用这个值替换 types 变量。

    [
    {
    "keyName": "CPU0",
    "summaryType": "max"
    }
    ]
    

    例子:

    import SoftLayer
    import pprint
    
    
    def main():
        hardware_id = 120065
    
        start_date = "2015-10-03"
        end_date = "2015-10-12"
    
        # []SoftLayer_Container_Metric_Data_Type
        types = [
            {
                "keyName": "PUBLICIN",
                "name": "publicIn",
                "summaryType": "sum"
            },
            {
                "keyName": "PUBLICOUT",
                "name": "publicOut",
                "summaryType": "sum"
            }
        ]
    
        client = SoftLayer.create_client_from_env()
        hw_object = client.call('SoftLayer_Hardware_Server',
                                'getObject',
                                mask="mask[metricTrackingObjectId]",
                                id=hardware_id)
        result = client.call('SoftLayer_Metric_Tracking_Object',
                             'getSummaryData',
                             start_date,
                             end_date,
                             types,
                             3600,
                             id=hw_object['metricTrackingObjectId'])
        pprint.pprint(result)
    
    
    if __name__ == '__main__':
        main()
    

    【讨论】:

    • 谢谢。我发现 CPU 使用率的结果是 30 分钟的平均数据。但是我仍然找不到 Java API 来使用带宽。
    • 对于带宽,我发送给您的代码应该可以工作,只需将周期 3600 更改为 1800。如果您在 java 中仍有问题,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多