SL 中的自动缩放策略数据
Autoscale Policy data in SL
我正在使用 Java 客户端实施自动缩放策略。
如何获取触发器数据中的 "Resource Use" 信息? (请参考附件中的png文件)
这是我获取 Watch 数据的代码,但它总是 returns null。
private void getPolicies(){
Group.Service groupSrv = Group.service(client, 1046365L);
List<Policy> pList = groupSrv.getPolicies();
for(Policy po : pList){
System.out.println("policy name : " + po.getName());
System.out.println("Cooldown : " + po.getCooldown()); // /60/60/24
List<ResourceUse> resourceList = po.asService(client).getResourceUseTriggers();
for(ResourceUse rsc : resourceList){
System.out.println("rsc id : " + rsc.getId());
List<Watch> watList = rsc.getWatches();
for(Watch wat:watList){
System.out.println("watch Id : " + wat.getId());
System.out.println("watch : " + wat.getMetric());
}
}
}
我在这个 returns 中给你的对象 Mask 有你需要的所有信息。但是正如我告诉过你的那样,该门户显示的信息对客户来说是可以理解的,并且无法使用 API.
获取这些信息
例如,对于资源使用中显示此值的自动缩放组:
"If my CPU Percentage is greater than 80 for 30 Minute(s)"
我在 API 回复中得到了这个:
"triggers": [
{
"id": 145903,
"type": {
"id": 3,
"keyName": "RESOURCE_USE",
"name": "Resource Use"
},
"watches": [
{
"algorithm": "EWMA",
"id": 120803,
"metric": "host.cpu.percent",
"operator": ">",
"period": 1800,
"value": "80"
}
]
}
]
门户网站会像这样解析该信息:
- "algorithm": "EWMA" -> 如果我的
- "metric": "host.cpu.percent" -> CPU 百分比
- "operator": ">" -> 大于
- "value": "80" -> 80
- "period": 1800 -> 30 分钟
所以如果你想展示与门户相同的数据,你需要知道门户如何解析这些信息的所有案例。
此致
信息已检索,但似乎未正确映射到 Softlayer java 客户端对象。试试下面的代码,它会打印信息。
我建议您尝试最新版本的Softlayer Java 客户端,如果问题仍然可以重现,请在Softlayer Java 客户端GitHub 项目中提交问题。
import java.util.List;
import com.google.gson.Gson;
import com.softlayer.api.ApiClient;
import com.softlayer.api.RestApiClient;
import com.softlayer.api.service.scale.Group;
import com.softlayer.api.service.scale.Policy;
import com.softlayer.api.service.scale.policy.Trigger;
public class TriggersAutoScale {
private static String user = "set me";
private static String apiKey = "set me";
private static ApiClient client = new RestApiClient().withCredentials(user, apiKey);
public static void main(String[] args) {
getTriggerWatch();
}
public static void getTriggerWatch() {
Group.Service groupSrv = Group.service(client, 1046365L);
String triggerMask = "mask[id, name, status[name, keyName], suspendedFlag, "
+ "cooldown, regionalGroupId, minimumMemberCount, maximumMemberCount, "
+ "balancedTerminationFlag ,policies[id,cooldown,name,scaleActions[id,type[id,keyName,name],amount,scaleType],"
+ "triggers[id,type],triggers(SoftLayer_Scale_Policy_Trigger_OneTime)[date],triggers(SoftLayer_Scale_Policy_Trigger_Repeating)[schedule],"
+ "triggers(SoftLayer_Scale_Policy_Trigger_ResourceUse)[watches[id,algorithm,metric,operator,period,value]]],"
+ "virtualGuestMemberCount]";
groupSrv.setMask(triggerMask);
List<Policy> pList = groupSrv.getObject().getPolicies();
for (Policy policy : pList) {
System.out.println (policy.getResourceUseTriggers().size());
for (Trigger trigger : policy.getTriggers()) {
Gson gson = new Gson();
System.out.println(gson.toJson(trigger));
}
}
}
}
我正在使用 Java 客户端实施自动缩放策略。 如何获取触发器数据中的 "Resource Use" 信息? (请参考附件中的png文件) 这是我获取 Watch 数据的代码,但它总是 returns null。
private void getPolicies(){
Group.Service groupSrv = Group.service(client, 1046365L);
List<Policy> pList = groupSrv.getPolicies();
for(Policy po : pList){
System.out.println("policy name : " + po.getName());
System.out.println("Cooldown : " + po.getCooldown()); // /60/60/24
List<ResourceUse> resourceList = po.asService(client).getResourceUseTriggers();
for(ResourceUse rsc : resourceList){
System.out.println("rsc id : " + rsc.getId());
List<Watch> watList = rsc.getWatches();
for(Watch wat:watList){
System.out.println("watch Id : " + wat.getId());
System.out.println("watch : " + wat.getMetric());
}
}
}
我在这个
例如,对于资源使用中显示此值的自动缩放组:
"If my CPU Percentage is greater than 80 for 30 Minute(s)"
我在 API 回复中得到了这个:
"triggers": [
{
"id": 145903,
"type": {
"id": 3,
"keyName": "RESOURCE_USE",
"name": "Resource Use"
},
"watches": [
{
"algorithm": "EWMA",
"id": 120803,
"metric": "host.cpu.percent",
"operator": ">",
"period": 1800,
"value": "80"
}
]
}
]
门户网站会像这样解析该信息:
- "algorithm": "EWMA" -> 如果我的
- "metric": "host.cpu.percent" -> CPU 百分比
- "operator": ">" -> 大于
- "value": "80" -> 80
- "period": 1800 -> 30 分钟
所以如果你想展示与门户相同的数据,你需要知道门户如何解析这些信息的所有案例。
此致
信息已检索,但似乎未正确映射到 Softlayer java 客户端对象。试试下面的代码,它会打印信息。
我建议您尝试最新版本的Softlayer Java 客户端,如果问题仍然可以重现,请在Softlayer Java 客户端GitHub 项目中提交问题。
import java.util.List;
import com.google.gson.Gson;
import com.softlayer.api.ApiClient;
import com.softlayer.api.RestApiClient;
import com.softlayer.api.service.scale.Group;
import com.softlayer.api.service.scale.Policy;
import com.softlayer.api.service.scale.policy.Trigger;
public class TriggersAutoScale {
private static String user = "set me";
private static String apiKey = "set me";
private static ApiClient client = new RestApiClient().withCredentials(user, apiKey);
public static void main(String[] args) {
getTriggerWatch();
}
public static void getTriggerWatch() {
Group.Service groupSrv = Group.service(client, 1046365L);
String triggerMask = "mask[id, name, status[name, keyName], suspendedFlag, "
+ "cooldown, regionalGroupId, minimumMemberCount, maximumMemberCount, "
+ "balancedTerminationFlag ,policies[id,cooldown,name,scaleActions[id,type[id,keyName,name],amount,scaleType],"
+ "triggers[id,type],triggers(SoftLayer_Scale_Policy_Trigger_OneTime)[date],triggers(SoftLayer_Scale_Policy_Trigger_Repeating)[schedule],"
+ "triggers(SoftLayer_Scale_Policy_Trigger_ResourceUse)[watches[id,algorithm,metric,operator,period,value]]],"
+ "virtualGuestMemberCount]";
groupSrv.setMask(triggerMask);
List<Policy> pList = groupSrv.getObject().getPolicies();
for (Policy policy : pList) {
System.out.println (policy.getResourceUseTriggers().size());
for (Trigger trigger : policy.getTriggers()) {
Gson gson = new Gson();
System.out.println(gson.toJson(trigger));
}
}
}
}