def query_instances_monitor_status()

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