0

我们有一个 HP 1920S 交换机,通过 SNMP 获取 CPU 使用率的唯一方法是我在此处找到的 OID:https ://community.hpe.com/t5/Web-and-Unmanaged/HP-1920s-OID-CPU-利用率和内存/td-p/7001413

标识:.1.3.6.1.4.1.11.5.7.5.7.1.1.1.1.4.9.0

当通过 SNMP 查询 OID 时返回如下值:

 5 Secs ( 22.3463%) 60 Secs ( 25.677%) 300 Secs ( 21.3522%)
 5 Secs ( 13.6713%) 60 Secs ( 15.3520%) 300 Secs ( 15.9640%)

所以 5 秒 CPU 利用率平均值是 22%,60 秒是 25%,5 分钟是 21%。然后我下一次查询时是 13%、15% 和 15%。

有没有办法通过正则表达式离散匹配 5 秒百分比或离散匹配 60 秒百分比或 5 分钟百分比?目标是将其连接到 PRTG 中的几个 SNMP 自定义字符串传感器,例如,如果 5 分钟平均值高于 80%,它可以发出警报。我在这里做得很好这个正则表达式:\d+(\%|\s\bpercent\b)通过https://www.regextester.com/95112但我也无法弄清楚如何根据我的需要修改它并且无法让它在 regex101.com 上工作

谢谢!

4

1 回答 1

1

使用\d+(\%|\s\bpercent\b)将不匹配示例字符串中的小数部分。

您可以添加匹配可选的小数部分\d+(?:\.\d+)?(?:\%|\s\bpercent\b),但您将获得 3 个匹配项且模式不匹配Secs

您的查询为数据返回了 2 倍的相同结构。一种方法是使用与整行匹配的模式并使用 3 个捕获组,以便您知道哪个组具有哪个值。

示例数据中没有单词percentage,因此您可以直接使用%

^\s*\d+\s+Secs\s*\(\s*(\d+(?:\.\d+)?%)\)\s+\d+\s+Secs\s+\(\s+(\d+(?:\.\d+)?%)\)\s+\d+\s+Secs\s+\(\s+(\d+(?:\.\d+)?%)\)$

正则表达式演示

于 2020-12-10T18:50:13.493 回答