You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Aruba AirWave获取设备性能指标及代码修改建议

修改Aruba AirWave API代码以获取设备性能指标

要从Aruba AirWave获取特定设备的CPU使用率、连接数、内存使用率等指标,需要基于现有代码调整接口调用逻辑——原代码仅获取AP基础列表,性能指标需要访问单设备详情接口。以下是具体修改方案:

1. 新增常量定义

添加设备详情的URL模板,AirWave通过设备LAN MAC地址定位单设备详情接口:

# 设备详情XML模板,{lan_mac}替换为目标AP的LAN MAC地址
DEVICE_DETAIL_URL = 'https://aruba-airwave.example.com/ap_detail.xml?mac={lan_mac}'

2. 新增函数获取单设备性能指标

编写专门函数,根据AP的LAN MAC地址请求详情接口并解析指标:

def get_device_metrics(session, lan_mac):
    """获取单个AP的CPU、内存、客户端连接数指标"""
    detail_url = DEVICE_DETAIL_URL.format(lan_mac=lan_mac)
    output = session.get(detail_url, headers=HEADERS)
    tree = ET.fromstring(output.content)
    
    metrics = {}
    # 解析CPU使用率(节点路径需根据AirWave实际XML结构调整)
    cpu_node = tree.find('./performance/cpu_usage')
    metrics['cpu_usage'] = cpu_node.text if cpu_node is not None else 'N/A'
    # 解析内存使用率
    mem_node = tree.find('./performance/memory_usage')
    metrics['memory_usage'] = mem_node.text if mem_node is not None else 'N/A'
    # 解析客户端总连接数
    client_node = tree.find('./clients/total')
    metrics['client_count'] = client_node.text if client_node is not None else '0'
    
    return metrics

3. 整合指标到AP列表数据中

修改get_ap_list函数,遍历每个AP时调用指标获取函数,将指标合并到AP字典:

def get_ap_list(session):
    """获取AP列表及对应性能指标"""
    output = session.get(AP_LIST_URL, headers=HEADERS)
    ap_list_output = output.content

    tree = ET.fromstring(ap_list_output)
    ap_list = []
    for i in tree.iter(tag='ap'):
        fqdn = i.find('fqdn').text
        lan_ip = i.find('lan_ip').text
        lan_mac = i.find('lan_mac').text if i.find('lan_mac') is not None else "None"
        mfgr = i.find('mfgr').text
        model = i.find('model').text
        syslocation = i.find('syslocation').text

        # 获取当前AP的性能指标
        metrics = get_device_metrics(session, lan_mac)
        
        ap_list.append({
            'lan_mac' : lan_mac,
            'lan_ip' : lan_ip,
            'fqdn' : fqdn,
            'mfgr' : mfgr,
            'model' : model,
            'syslocation' : syslocation,
            **metrics  # 展开指标字典,合并到AP信息中
        })
    return ap_list

4. 更新CSV输出字段

修改print_into_csv函数,新增指标字段并写入表头:

def print_into_csv(ap_list):
    """将AP列表及指标输出为CSV格式"""
    fieldnames = ['lan_mac', 'lan_ip', 'fqdn', 'mfgr', 'model', 'syslocation', 
                  'cpu_usage', 'memory_usage', 'client_count']
    writer = csv.DictWriter(sys.stdout, fieldnames=fieldnames, delimiter=DELIMITER)
    writer.writeheader()  # 写入CSV表头
    writer.writerows(ap_list)

关键注意事项

  • XML节点校验:不同AirWave版本的XML结构可能有差异,建议手动访问ap_detail.xml?mac=XX:XX:XX:XX:XX:XX查看实际节点路径,调整find方法的参数。
  • 性能优化:若AP数量较多,逐个请求详情会增加耗时,可添加请求间隔(如time.sleep(1))避免触发设备限流,或研究AirWave批量指标接口。
  • 错误处理:建议添加异常捕获(如请求超时、XML解析失败),避免单个AP的异常导致整个脚本终止。

内容的提问来源于stack exchange,提问作者user1471980

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 11:05:03