阿里云导出负载均衡SLB实例数据

该博客介绍了如何使用Python脚本结合阿里云Python SDK,实现SLB(负载均衡)实例ID的获取及实例详细数据的采集。脚本分为两部分,第一部分用于获取实例ID,第二部分用于采集实例的配置信息如ID、名称、带宽、IP地址等,并将数据导出为CSV文件。整个过程实现了自动化,方便定期统计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言
阿里云工作台支持调用openapi完成一系列操作,因为公司需要定期导出实例配置统计,所以尝试写了个python脚本。
api调用:aliyun-python-sdk-slb

说明

  1. aliyun_Client模块为自定义模块,可以参考https://blog.csdn.net/weixin_46335835/article/details/120264405?spm=1001.2014.3001.5502
  2. 脚本分为两部分,第一部分:获取实例ID,第二部分采集实例数据
  3. 第一部分脚本命名:aliyun_SLB.py , 因为涉及后续调用SLB,注意同步修改

采集实例ID

#!/usr/bin/env python
# author zoe chen
#coding=utf-8

import json
from aliyun_Client   import  client
from aliyunsdkcore.request import CommonRequest


def LBID():
    count = 1
    # 使用字典格式来收集最后实例的信息
    total_dict = {}
    # 构造请求,请求的参数在每个函数中指定
    request = CommonRequest()
    request.set_accept_format('json')
    request.set_domain('slb.aliyuncs.com')
    request.set_method('POST')
    request.set_protocol_type('https')  # https | http
    request.set_version('2014-05-15')
    request.set_action_name('DescribeLoadBalancers')
    request.add_query_param('PageSize', "30")
    request.add_query_param('RegionId', "cn-hangzhou")

    # 获取总页数,并循环获取实例信息
    TotalCount = json.loads(client.do_action(request)).get('TotalCount')
    for page in range(1, (TotalCount // 30) + 2):
        # print(page)
        request.add_query_param('PageNumber', page)
        # 或得请求结果
        response = client.do_action_with_exception(request)
        # 结果解析为json格式
        resj = json.loads(response, encoding='utf-8')
        # 获得所有实例的所有信息
        instances = resj['LoadBalancers']['LoadBalancer']
        # 把需要手机的信息手机到total_dict
        for item in instances:
            insid   = item['LoadBalancerId']
            total_dict[count] = insid
            count += 1
    return total_dict

分隔大法




采集实例数据

#!/usr/bin/env python
# author zoe chen
#coding=utf-8

import json
import csv
from aliyun_Client   import  client
from datetime  import  datetime
from aliyunsdkcore.request import CommonRequest
from aliyun_SLB import LBID


def collection():
    count = 1
    # 使用字典格式来收集最后实例的信息
    total_dict = {}
    # 构造请求,请求的参数在每个函数中指定

    request = CommonRequest()
    request.set_accept_format('json')
    request.set_domain('slb.aliyuncs.com')
    request.set_method('POST')
    request.set_protocol_type('https')  # https | http
    request.set_version('2014-05-15')
    request.set_action_name('DescribeLoadBalancerAttribute')

    # 获取总页数,并循环获取实例信息
    LoadBalancerId = LBID()
    # print(LoadBalancerId)
    for insid in LoadBalancerId.values():
        # print(insid)
        request.add_query_param('LoadBalancerId', insid)
        # 或得请求结果
        response = client.do_action_with_exception(request)
        # 结果解析为json格式
        resj = json.loads(response, encoding='utf-8')
        # print(resj)
        # 获得所有实例的所有信息

        lbid    = resj['LoadBalancerId']
        lbip    = resj['Address']
        lbtype  = resj['AddressType']
        status  = resj['LoadBalancerStatus']
        endtime = resj['EndTime']
        starttime   = resj['CreateTime']
        hostname    = resj['LoadBalancerName']
        bandwidth   = resj['Bandwidth']


        instances = [lbid, hostname,bandwidth,lbip,lbtype,starttime,endtime,status]
        total_dict[count] = instances
        count += 1
    return total_dict
#
#
if __name__ == '__main__':


    # 获得所有实例的相关信息
    totaldict = collection()
    # print(type(totaldict))
    # print(totaldict)

    time = datetime.now()
    fname = 'D:\\Desktop\\aliyun_collection\\负载均衡_'
    filename = fname + (time.strftime("%Y%m%d") + ".csv")
    #
    with open(filename,'w',newline="") as f:
        headrow =  ['实例ID','实例名称', '流量带宽',  'IP地址', '实例类型','创建时间','到期时间','状态']
        write = csv.writer(f)
        write.writerow(headrow)

        for key in  totaldict:
            row = totaldict[key]
            write = csv.writer(f)
            write.writerow(row)

    print("写入完毕!")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值