in rules/customer-fc/ack_cluster_node_monitor_enabled.py [0:0]
def query_instances_monitor_status(clt, instance_id_set):
compliance_result = True
instance_id_str = ",".join(instance_id_set)
request = CommonRequest()
request.set_protocol_type(protocol_type.HTTPS)
request.set_domain('metrics.aliyuncs.com')
request.set_version('2019-01-01')
request.set_action_name('DescribeMonitoringAgentStatuses')
request.set_method('GET')
request.add_query_param('InstanceIds', instance_id_str)
response = clt.do_action_with_exception(request)
res = str(response, encoding='utf-8')
json_res = json.loads(res)
if "NodeStatusList" in json_res and json_res["NodeStatusList"] and "NodeStatus" in json_res["NodeStatusList"] and \
json_res["NodeStatusList"]["NodeStatus"]:
if len(json_res["NodeStatusList"]["NodeStatus"]) != len(instance_id_set):
logger.warn('Query monitor list len not equal input: {}'.format(instance_id_str))
compliance_result = False
else:
for status in json_res["NodeStatusList"]["NodeStatus"]:
if status["Status"] != "running":
compliance_result = False
break
else:
compliance_result = False
return compliance_result