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

如何用PromQL查询Cisco交换机带宽利用率超80%的接口?

问题:通过PromQL筛选带宽利用率超80%的Cisco接口

现有指标与计算逻辑

  • 接收字节数指标:ifHCInOctets
    • 标签包含:instance(设备IP)、ifHCInOctetsIntfId(接口ID)、ifHCInOctetsIntfBw(字符串类型,接口带宽,单位mbps)、ifHCInOctetsIntfName(接口名称)等
    • 实时接收带宽计算:rate(ifHCInOctets[1m]) * 8(转换为bps单位)
  • 接口最大带宽指标:ifHighSpeed
    • 数值类型,单位为mbps
    • 标签包含:instance、ifHCInOctetsIntfId,与ifHCInOctets一一对应
    • 最大带宽(bps)计算:ifHighSpeed * 1000000

需求

编写PromQL查询,筛选出带宽利用率超过80%的接口,要求:

  • 动态匹配每个接口的最大带宽(禁止使用静态阈值)
  • 必须同时通过instance和ifHCInOctetsIntfId关联指标,避免多设备环境下接口ID重复导致匹配错误

PromQL解决方案

方案1:基于ifHighSpeed关联计算(推荐)

利用PromQL的向量匹配逻辑,明确指定instance和ifHCInOctetsIntfId作为关联键,同时保留ifHCInOctets的接口描述、名称等标签:

(rate(ifHCInOctets{job="cisco_intf_poll"}[1m]) * 8) 
/ on(instance, ifHCInOctetsIntfId) group_left() 
(ifHighSpeed{job="cisco_intf_poll"} * 1000000) 
> 0.8
  • on(instance, ifHCInOctetsIntfId):强制仅通过这两个标签匹配两个指标的时间序列
  • group_left():保留ifHCInOctets的额外标签(如接口名称、描述),方便定位具体接口
  • 末尾> 0.8:筛选利用率超过80%的结果

方案2:基于ifHCInOctetsIntfBw标签转数值计算

如果ifHighSpeed指标不可用,可将ifHCInOctets的ifHCInOctetsIntfBw字符串标签转为数值后计算:

(rate(ifHCInOctets{job="cisco_intf_poll"}[1m]) * 8) 
/ (label_replace(ifHCInOctets{job="cisco_intf_poll"}, "intf_bw_num", "$1", "ifHCInOctetsIntfBw", "(\\d+)") * 1000000) 
> 0.8
  • label_replace:提取ifHCInOctetsIntfBw中的数字部分,生成新的intf_bw_num标签
  • 转换为bps单位后与实时带宽相除,得到利用率并筛选阈值

注意事项

  • 确保ifHighSpeed与ifHCInOctets的instance、ifHCInOctetsIntfId标签完全一致,无拼写或格式差异
  • 使用方案2时,需保证ifHCInOctetsIntfBw标签值为纯数字(如"1000"),若包含单位(如"1G")则无法正确提取数值
  • 可根据实际环境调整rate的时间窗口(如[5m]),适配不同的监控粒度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:40:30