Esempio n. 1
0
def rds_redis(AccessKeyId, AccessKeySecret, RegionId):
    # 获取服务器系统3天后日期
    today = datetime.date.today()
    tomorrow = today + datetime.timedelta(days=3)
    day_sys, month_sys, year_sys = tomorrow.strftime('%d'), tomorrow.strftime(
        '%m'), tomorrow.strftime('%Y')
    # rds实例存放列表
    rds_list = []
    for reg in RegionId:
        client = AcsClient(AccessKeyId, AccessKeySecret, reg)
        # 查询实例详情的默认参数设置
        request = CommonRequest()
        request.set_accept_format('json')
        request.set_domain('r-kvstore.aliyuncs.com')
        request.set_method('POST')
        request.set_version('2015-01-01')
        request.set_action_name('DescribeInstances')
        # 自定义添加查询参数
        request.add_query_param('RegionId', reg)
        request.add_query_param('PageSize', '50')
        # 发送请求
        response = client.do_action_with_exception(request)
        instance = json.loads(response)["Instances"]["KVStoreInstance"]
        for ins in instance:
            # 查询实例详情的默认参数设置
            request = CommonRequest()
            request.set_accept_format('json')
            request.set_domain('r-kvstore.aliyuncs.com')
            request.set_method('POST')
            request.set_version('2015-01-01')
            request.set_action_name('DescribeInstanceAttribute')
            # 自定义添加查询参数
            request.add_query_param('RegionId', reg)
            request.add_query_param('InstanceId', ins["InstanceId"])
            # 发送请求
            response = client.do_action_with_exception(request)
            try:
                rds_time = json.loads(
                    response)["Instances"]["DBInstanceAttribute"][0]["EndTime"]
                ali_time = rds_time.split("-")
                #ali_time = ins["ExpiredTime"].split("-")
                year_ali, month_ali, day_ali = ali_time[0], ali_time[
                    1], ali_time[2][:2]
                # 如果系统时间与获取到的阿里云rds过期时间相差小于或等于3天则告警
                if int(day_ali) <= (
                        int(day_sys) + 3) and int(month_ali) <= int(
                            month_sys) and int(year_ali) <= int(year_sys):
                    rds_id = ins["InstanceId"]
                    expire_time = rds_time[:10]
                    rds_list.append([rds_id, expire_time])
            except Exception as e:
                print(response)
                print("按量付费实例无到期时间", ins, e)

    # 如果有要过期的rds实例则打印列表,没有则不打印
    #print(rds_list)
    if rds_list != []:
        return "redis rds would expired: ", rds_list
    else:
        return "no redis rds expired"
Esempio n. 2
0
def DRUR():
    request = DescribeResourceUsageRequest.DescribeResourceUsageRequest()
    request.set_accept_format('json')
    request.set_DBInstanceId('rm-bp18144qkyj20731o')
    response = json.loads(client.do_action_with_exception(request))
    for key, values in response.items():
        print(str(key) + '=' + str(unicode(values)))
Esempio n. 3
0
def GetPerformance(DBInstanceID, MasterKey):
    '''
    阿里云返回的数据为 UTC 时间,因此要转换为东八区时间。其他时区同理。
    最小时间间隔为 1 分钟,因此这里选择时间跨度为 1 分钟
    '''
    UTC_End = datetime.datetime.today() - datetime.timedelta(hours=8)
    UTC_Start = UTC_End - datetime.timedelta(minutes=1)
    StartTime = datetime.datetime.strftime(UTC_Start, '%Y-%m-%dT%H:%MZ')
    EndTime = datetime.datetime.strftime(UTC_End, '%Y-%m-%dT%H:%MZ')
    Performance = DescribeDBInstancePerformanceRequest.DescribeDBInstancePerformanceRequest(
    )
    Performance.set_accept_format('json')
    Performance.set_DBInstanceId(DBInstanceID)
    Performance.set_Key(MasterKey)
    Performance.set_StartTime(StartTime)
    Performance.set_EndTime(EndTime)
    PerformanceInfo = client.do_action_with_exception(Performance)
    Info = json.loads(PerformanceInfo)
    Value = Info['PerformanceKeys']['PerformanceKey']
    MetricToValue = dict()
    for i in Value:
        a = dict()
        if "&" in str(i):
            vf = i["ValueFormat"].split('&')
            vl = i["Values"]["PerformanceValue"][0]["Value"].split('&')
            l = len(vf)
            while l != 0:
                l -= 1
                a[vf[l]] = vl[l]
        else:
            a[i['ValueFormat']] = i['Values']['PerformanceValue'][0]['Value']
        MetricToValue.update(a)
    return MetricToValue
Esempio n. 4
0
 def DescribeVServerGroups(self):
     client = AcsClient(self.AccessKeyId, self.AccessKeySecret, 'cn-beijing')
     request = DescribeVServerGroupsRequest()
     request.set_accept_format('json')
     request.set_LoadBalancerId("lb-2zeqx4f9qglel963dmdzv")
     response = client.do_action_with_exception(request)
     # python2:  print(response)
     print(str(response, encoding='utf-8'))
Esempio n. 5
0
def MDBMR():

    request1 = ModifyDBInstanceMonitorRequest.ModifyDBInstanceMonitorRequest()
    request1.set_accept_format('json')
    request1.set_DBInstanceId('rm-bp18144qkyj20731o')
    request1.set_Period('60')
    response1 = client.do_action_with_exception(request1)
    print response1
Esempio n. 6
0
def snapshot(AccessKeyId, AccessKeySecret, RegionId):
    snapshot_list = []
    for reg in RegionId:
        client = AcsClient(AccessKeyId, AccessKeySecret, reg)
        # 查询实例详情的默认参数设置
        request = CommonRequest()
        request.set_accept_format('json')
        request.set_domain('ecs.aliyuncs.com')
        request.set_method('POST')
        request.set_version('2014-05-26')
        request.set_action_name('DescribeInstances')
        # 自定义添加查询参数
        request.add_query_param('PageSize', '100')
        request.add_query_param('RegionId', reg)
        # 发送请求
        response = client.do_action_with_exception(request)
        instance = json.loads(response)["Instances"]["Instance"]
        for ins in instance:
            # 查询实例快照的api默认参数设置
            request = CommonRequest()
            request.set_accept_format('json')
            request.set_domain('ecs.aliyuncs.com')
            request.set_method('POST')
            request.set_version('2014-05-26')
            request.set_action_name('DescribeSnapshots')
            # 自定义添加查询参数
            request.add_query_param('RegionId', reg)
            request.add_query_param('InstanceId', ins["InstanceId"])
            # 发送请求
            response = client.do_action_with_exception(request)
            try:
                snapshot_status = json.loads(
                    response)["Snapshots"]["Snapshot"][0]["Status"]
                if snapshot_status != "accomplished":
                    snapshot_list.append(
                        [ins["InstanceId"], "snapshot failed"])
            except:
                snapshot_list.append([ins["InstanceId"], "no snapshot"])

    if snapshot_list != []:
        return snapshot_list
    else:
        return "all snapshot backup successfully"
Esempio n. 7
0
 def start_instance(self, instanceid):
     """
     启动实例
     :param instanceid:
     :return:
     """
     client = AcsClient(self.AccessKeyId, self.AccessKeySecret, instanceid)
     request = StartInstanceRequest()
     request.set_accept_format('json')
     response = client.do_action_with_exception(request)
     res = json.loads(str(response, encoding='utf-8'))
     return res
Esempio n. 8
0
 def get_instancetype(self, region_id):
     """
     查看ECS实例规格信息
     :param RegionId:
     :return:
     """
     client = AcsClient(self.AccessKeyId, self.AccessKeySecret, region_id)
     request = DescribeInstanceTypesRequest()
     request.set_accept_format('json')
     request.set_InstanceTypeFamily("ecs.t5")
     response = client.do_action_with_exception(request)
     res = str(response, encoding='utf-8')
     return json.loads(res).get("InstanceTypes").get("InstanceType")
Esempio n. 9
0
 def get_slb_detail(self, loadbalancer_id, region_id):
     """
     返回lb详细信息
     :param loadbalancerid: lb-2zeqx4f9qglel963dmdzv
     :param regionid: cn-beijing
     :return:
     """
     client = AcsClient(self.AccessKeyId, self.AccessKeySecret, region_id)
     request = DescribeLoadBalancerAttributeRequest()
     request.set_accept_format('json')
     request.set_LoadBalancerId(loadbalancer_id)
     response = client.do_action_with_exception(request)
     return eval(str(response, encoding='utf-8'))
Esempio n. 10
0
def GetRdsList():
    RdsRequest = DescribeDBInstancesRequest.DescribeDBInstancesRequest()
    RdsRequest.set_accept_format('json')
    RdsRequest.set_DBInstanceId('rm-bp18144qkyj20731o')
    RdsInfo = json.loads(client.do_action_with_exception(RdsRequest))
    print RdsInfo
    for RdsInfoJson in RdsInfo["Items"]["DBInstance"]:
        DBInstanceIdDict = {}
        DBInstanceIdDict["{#DBINSTANCEID}"] = RdsInfoJson['DBInstanceId']
        #print DBInstanceIdDict["{#DBINSTANCEID}"]
        DBInstanceIdDict["{#InsId}"] = RdsInfoJson['InsId']
        #print DBInstanceIdDict["{#InsId}"]
        DBInstanceIdList.append(DBInstanceIdDict)
Esempio n. 11
0
 def AllocatePublicIpAddress(self, region_id, InstanceId):
     """
     绑定外网IP
     :param region_id:  地域
     :param InstanceId: 实例ID
     :return: {'IpAddress': '39.106.176.130'}
     """
     client = AcsClient(self.AccessKeyId, self.AccessKeySecret, region_id)
     request = AllocatePublicIpAddressRequest()
     request.set_accept_format('json')
     request.set_InstanceId(InstanceId)
     response = client.do_action_with_exception(request)
     res = json.loads(response, encoding='utf-8')
     return res
Esempio n. 12
0
 def DescribeRegions(self):
     """
     获取所有地域regionId
     :return: {'cn-qingdao': '华北 1'}
     """
     client = AcsClient(self.AccessKeyId, self.AccessKeySecret)
     request = DescribeRegionsRequest()
     request.set_accept_format('json')
     response = client.do_action_with_exception(request)
     res = json.loads(str(response, encoding='utf-8'))
     regions = {}
     for region in res['Regions']['Region']:
         regions[region['RegionId']] = region['LocalName']
     return regions
Esempio n. 13
0
 def get_ecs(self):
     """
     获取所有区域ECS信息
     :return:
     """
     instances = []
     region_ids = self.DescribeRegions()
     for region_id in region_ids.keys():
         client = AcsClient(self.AccessKeyId, self.AccessKeySecret, region_id, connect_timeout=30)
         request = DescribeInstancesRequest()
         request.set_accept_format('json')
         response = client.do_action_with_exception(request)
         res = json.loads(str(response, encoding='utf-8'))
         instances += res['Instances']['Instance']
     return instances
Esempio n. 14
0
 def send(self, identity, code):
     request = aliyunsdkcore.request.CommonRequest()
     request.set_accept_format('json')
     request.set_domain('dysmsapi.aliyuncs.com')
     request.set_method('POST')
     request.set_protocol_type('https')
     request.set_version('2017-05-25')
     request.set_action_name('SendSms')
     request.add_query_param('RegionId', 'default')
     request.add_query_param('PhoneNumbers', identity)
     request.add_query_param('SignName', 'Hackergame')
     request.add_query_param('TemplateCode', 'SMS_168560438')
     request.add_query_param('TemplateParam', json.dumps({'code': code}))
     response = json.loads(client.do_action_with_exception(request))
     if response['Code'] != 'OK':
         raise ValueError(response['Code'])
Esempio n. 15
0
 def AvailableZones(self, region_id):
     """
     可用区
     :param region_id:  计费方式  地域
     :return:  ['cn-huhehaote-a', 'cn-huhehaote-b']
     """
     client = AcsClient(self.AccessKeyId, self.AccessKeySecret, region_id)
     request = DescribeZonesRequest()
     request.set_accept_format('json')
     response = client.do_action_with_exception(request)
     # print(str(response, encoding='utf-8'))
     res = json.loads(str(response, encoding='utf-8'))
     zones = {}
     for zone in res['Zones']['Zone']:
         zones[zone['ZoneId']] = zone['LocalName']
     return zones
Esempio n. 16
0
 def get_instance_disk_info(self, region_id, zone_id, instance_id):
     """
     获取实例下磁盘信息
     :param regionid: cn-beijing
     :param zoneid: cn-beijing-g
     :param instanceid: i-2ze4wxcyl324952q8m7b
     :return:
     """
     client = AcsClient(self.AccessKeyId, self.AccessKeySecret, region_id)
     request = DescribeDisksRequest()
     request.set_accept_format('json')
     request.set_ZoneId(zone_id)
     request.set_InstanceId(instance_id)
     response = client.do_action_with_exception(request)
     # print((str(response, encoding='utf-8')))
     res = json.loads((str(response, encoding='utf-8')))
     return res['Disks']['Disk']
Esempio n. 17
0
 def get_slb(self):
     """
     获取所有地域下slb负载均衡实例
     :return:
     """
     balancers = []
     regionids = self.DescribeRegions()
     try:
         for rid in regionids:
             client = AcsClient(self.AccessKeyId, self.AccessKeySecret, rid, connect_timeout=30)
             request = DescribeLoadBalancersRequest()
             request.set_accept_format('json')
             response = client.do_action_with_exception(request)
             # print(response)
             res = json.loads(str(response, encoding='utf-8'))
             balancers += res.get("LoadBalancers").get("LoadBalancer")
         return balancers
     except Exception as ex:
         print(ex)
Esempio n. 18
0
def expire_time(AccessKeyId, AccessKeySecret, RegionId):
    # 获取服务器系统3天后日期
    today = datetime.date.today()
    tomorrow = today + datetime.timedelta(days=3)
    day_sys, month_sys, year_sys = tomorrow.strftime('%d'), tomorrow.strftime(
        '%m'), tomorrow.strftime('%Y')
    #print(day_sys, month_sys, year_sys)
    expire_list = []
    for reg in RegionId:
        # 创建AcsClient实例
        client = AcsClient(AccessKeyId, AccessKeySecret, reg)
        # 创建request,并设置参数
        request = DescribeInstancesRequest.DescribeInstancesRequest()
        request.set_PageSize(100)
        # 发起API请求并显示返回值
        response = client.do_action_with_exception(request)
        #print(response)
        instance = json.loads(response)["Instances"]["Instance"]
        for ins in instance:
            ali_time = ins["ExpiredTime"].split("-")
            #print("alitime", ali_time)
            year_ali, month_ali, day_ali = ali_time[0], ali_time[1], ali_time[
                2][:2]
            # 如果系统时间与获取到的阿里云服务器过期时间相差小于或等于3天则告警
            if int(day_ali) <= (int(day_sys) + 3) and int(month_ali) <= int(
                    month_sys) and int(year_ali) <= int(year_sys):
                ip = ins["InnerIpAddress"]["IpAddress"]
                # 返回的json中ip可能会为空,为空则用instanceId代替
                if ip == []:
                    ip = ins["InstanceId"]
                expire_time = ins["ExpiredTime"][:10]
                expire_list.append([ip, expire_time])
    # 如果有要过期的服务器则打印列表,没有则不打印
    if expire_list != []:
        return "server would expired: ", expire_list
    else:
        return "there is no expire server now"
Esempio n. 19
0
def GetRedisPerformance(DBInstanceID, MasterKey):
    '''
    阿里云返回的数据为 UTC 时间,因此要转换为东八区时间。其他时区同理。
    最小时间间隔为 1 分钟,因此这里选择时间跨度为 1 分钟
    '''
    UTC_End = datetime.datetime.today() - datetime.timedelta(hours=8)
    UTC_Start = UTC_End - datetime.timedelta(minutes=1)
    StartTime = datetime.datetime.strftime(UTC_Start, '%Y-%m-%dT%H:%M:%SZ')
    EndTime = datetime.datetime.strftime(UTC_End, '%Y-%m-%dT%H:%M:%SZ')
    Performance = DescribeHistoryMonitorValuesRequest()
    Performance.set_accept_format('json')
    Performance.set_InstanceId(DBInstanceID)
    Performance.set_MonitorKeys(MasterKey)
    Performance.set_IntervalForHistory("01m")
    Performance.set_StartTime(StartTime)
    Performance.set_EndTime(EndTime)
    PerformanceInfo = client.do_action_with_exception(Performance)
    Info = json.loads(PerformanceInfo)
    a = json.loads(Info['MonitorHistory'])
    MetricToValue = dict()
    for i in a:
        MetricToValue = a[i]
        break
    return MetricToValue
 def list_zones(self,region_id):
     """
     This Function will list all the zones for all the regions of alibaba cloud
     """
     error = False
     response = None
     try:
             client = AcsClient(self.access_key, self.secret_key, region_id)
             request = DescribeZonesRequest()
             request.set_accept_format('json')
             response = client.do_action_with_exception(request)
             if response is not None:
                 json_response = json.loads(response)
                 Zones = json_response.get('Zones').get('Zone')
                 zonesDetails = []
                 for Zone in Zones:
                     zoneDetails = {}
                     zoneDetails.update({'ZoneId': Zone.get('ZoneId')})
                     ResourcesInfo = Zone.get('AvailableResources').get('ResourcesInfo')
                     if ResourcesInfo is None:
                         print('availableResources is None')
                         return
                     for availableResource in ResourcesInfo:
                         zoneDetails.update(
                             {'SystemDiskCategory': availableResource.get('SystemDiskCategories').get(
                                 'supportedSystemDiskCategory'),
                                 'Instancelist': availableResource.get('InstanceTypes').get(
                                     'supportedInstanceType')})
                     zonesDetails.append(zoneDetails)
                 response = zonesDetails
     except Exception as e:
         error = True
         response = e
         print(e)
     finally:
         return error, response
Esempio n. 21
0
    return client.AcsClient(ACCESS_KEY, SECRET_KEY, REGION)


def get_dimensions_json():
    return json.dumps({
        'cenId': 'cen-io8olhs9j9bquumh9l',
        'geographicSpanId': 'China'
    })


def get_request(dimensions_json):
    request = QueryMetricListRequest.QueryMetricListRequest()
    request.set_accept_format('json')
    request.set_Project('acs_cen')
    request.set_Metric('InternetOutRatePercentByConnectionRegion')
    start_time = "2019-03-01 10:00:00"
    timestamp_start = int(
        time.mktime(time.strptime(start_time, "%Y-%m-%d %H:%M:%S"))) * 1000
    request.set_StartTime(timestamp_start)
    request.set_Dimensions(dimensions_json)
    request.set_Period('60')

    return request


if __name__ == '__main__':
    client = get_client()
    dimensions_json = get_dimensions_json()
    request = get_request(dimensions_json)
    result = client.do_action_with_exception(request)
    print(result)
Esempio n. 22
0
#---------------------------------------------------------------------------------

if ipv4 == 'true':  #Judging whether IPV4 DDNS is open

    print('Your IPV4 DDNS is open.')

    #Describe IPV4 Records
    describev4 = DescribeDomainRecordsRequest()  #Start Describe Domain Records
    describev4.set_accept_format('json')

    describev4.set_DomainName(domain)  #Main Domain
    describev4.set_RRKeyWord(rr)  #Your RRKeyWord
    describev4.set_TypeKeyWord("A")  #Your Record Type

    describebackv4 = client.do_action_with_exception(
        describev4)  #Get Back JSON
    # python2:  print(response)
    print(str(describebackv4, encoding='utf-8'))  #Print JSON

    #---------------------------------------------------------------------------------

    #Read IPV4 JSON
    recordlistv4 = json.loads(describebackv4)  #Read Back JSON
    recordidv4 = recordlistv4['DomainRecords']['Record'][0][
        'RecordId']  #Get RecordId From Back JSON
    print('Your IPV4 RecordId:')
    print(recordidv4)
    valuev4 = recordlistv4['DomainRecords']['Record'][0][
        'Value']  #Get Value From Back JSON
    print('Your IPV4 Value:')
    print(valuev4)
    def list_instances(self, zone_id):
        """
        list the instances of the zone
        :param zone_id:
        :return:
        """
        error = False
        response = None
        instance_zone_list = []
        instance_size = []
        try:
            client = AcsClient(self.access_key, self.secret_key, self.region_id)

            request = DescribeZonesRequest()
            request.set_accept_format('json')
            response = client.do_action_with_exception(request)
            instance_type_family_list = []
            instance_type_list = []

            if response is not None:
                json_response = json.loads(response)
                zones = json_response.get('Zones')
                if 'Zone' in zones:
                    zone_list = zones.get('Zone')
                    for zone in zone_list:
                        if zone.get('ZoneId') in zone_id:
                            available_instances = zone.get('AvailableInstanceTypes')
                            if 'InstanceTypes' in available_instances:
                                available_instances_types = available_instances.get('InstanceTypes')
                                if available_instances_types is not None:
                                    for instance_type in available_instances_types:
                                        if not instance_type in instance_type_list:
                                            instance_type_list.append(instance_type)

                                        temp = str(instance_type).split(".")
                                        instance_type_family = temp[1]

                                        if not instance_type_family in instance_type_family_list:
                                            instance_type_family_list.append(instance_type_family)
                                        if not temp[2] in instance_size:
                                            instance_size.append(temp[2])
                            instance_list = []
                            for instance_type_family in instance_type_family_list:
                                Instance = []
                                for instance_type in instance_type_list:

                                    if instance_type_family in str(instance_type):
                                        temp = str(instance_type).split(".")
                                        instance_family = temp[1]
                                        if len(instance_type_family) == len(instance_family):
                                            Instance.append(str(instance_type))
                                instance_list.append(
                                    {'instance_type_family': instance_type_family, 'instance_list': Instance})
                            instance_zone_list.append(
                                {'zone_id': zone.get('ZoneId'), 'instance_zone_list': instance_list})
            instance_new_zone_list = []
            for instance_zone in instance_zone_list:
                for instance_type_family_zone in instance_zone.get('instance_zone_list'):
                    instance_type_family = instance_type_family_zone.get('instance_type_family')
                    client = AcsClient(self.access_key, self.secret_key, self.region_id)

                    request = DescribeInstanceTypesRequest()
                    request.set_accept_format('json')

                    request.set_InstanceTypeFamily('ecs.%s' % instance_type_family)

                    response = client.do_action_with_exception(request)
                    instance_new_list = []
                    if response is not None:
                        json_response = json.loads(response)
                        if 'InstanceTypes' in json_response:
                            instances_types_info_from_describe_family = json_response.get('InstanceTypes')
                            instances_types_info_from_describe_family = instances_types_info_from_describe_family.get(
                                'InstanceType')
                            for instances_types_from_describe_family in instances_types_info_from_describe_family:
                                if instances_types_from_describe_family.get(
                                        'InstanceTypeId') in instance_type_family_zone.get('instance_list'):
                                    instance_info = {}
                                    if int(instances_types_from_describe_family.get('CpuCoreCount') > 1) and int(
                                            instances_types_from_describe_family.get('MemorySize')) > 3:
                                        instance_info.update(
                                            {'instance_type': instances_types_from_describe_family.get(
                                                'InstanceTypeId'),
                                                'CpuCoreCount': instances_types_from_describe_family.get(
                                                    'CpuCoreCount'),
                                                'MemorySize': instances_types_from_describe_family.get('MemorySize')})
                                        if len(instance_info) > 0:
                                            instance_new_list.append(instance_info)
                    instance_new_zone_list.append(
                        {'instance_type_family': instance_type_family_zone.get('instance_type_family'),
                         'instance_spec': instance_new_list})
            if len(instance_new_zone_list) is 0:
                raise Exception('No such zones exist.')
            response = instance_new_zone_list
        except Exception as e:
            error = True
            response = e.message
            print(e.message)
        finally:
            return error, response