【问题标题】:With df -h how to create custom alert-conditions [closed]使用 df -h 如何创建自定义警报条件 [关闭]
【发布时间】:2019-05-20 04:30:36
【问题描述】:

使用df -hawktailtr,如何创建一个自定义“警报”列,该列应显示 /mnt/hgfs 的以下指示之一:

  • 警告:如果入住率在 75% 到 80% 之间
  • Critical:如果入住率在 81% 到 95% 之间
  • 报警:如果率大于96%

【问题讨论】:

  • 欢迎来到 Stackoverflow。你试过什么了?为什么要提到 awk、tail、tr?他们是必需的吗?
  • 谢谢,我想使用一个我尝试创建列的命令 df - h | awk v 观察 =´´$observation) '´
  • 欢迎来到 Stack Overflow!抱歉,这不是 StackOverflow 的工作方式。 “我想做 X,请给我提示和/或示例代码”形式的问题被认为是题外话。请访问help center并阅读How to Ask,尤其是阅读Why is “Can someone help me?” not an actual question?
  • 我建议以df -hP 开头,而不是df -h
  • 我想要一个自定义“警报”列,该列应显示 /mnt/hgfs 的以下指示之一: 警告:如果占用率介于 75% 和 80% 之间 关键:如果占用率是在 81% 和 95% 之间报警:如果比率大于 96

标签: linux bash shell awk linux-disk-free


【解决方案1】:

编辑:它熬夜了。

df |awk -v threshold="75 81 96" -v message="Warning Critical Alarm" -v mnt="/mnt/hgfs" '
  BEGIN {n=split(threshold, T); split(message, M)}
  $NF == mnt {
    for(i=n; i>0; i--)
      if(int($5) > T[i]) {print M[i] ":", mnt, "usage:", $5; exit}
    print mnt, "usage normal"                                                                                                                                               
  }'
  1. 将任意值导入为空格分隔的字符串。
  2. split 列表成数组;获取n=split()的元素个数
  3. 在最后一列为“/mnt/hgfs”的任何行上,iterate 向后遍历 T(hreshold) 数组,将第五列 (Use%) 与每个值进行比较。如果它更大,则使用 M(essage) 数组的相同值打印一条警告消息,然后在执行其他比较之前退出。

新要求的解决方案:

df |awk '
  NR == 1      {alert="Alert"}
  int($5) < 75 {alert=""}
  int($5) > 75 {alert="Warning"}
  int($5) > 81 {alert="Critical"}
  int($5) > 96 {alert="Alarm"}
               {printf("%-10s%s\n", alert, $0)}'

【讨论】:

  • 我想将此添加到名为“观察”的第 7 列中
  • @JohnRudolph 如果您接受对原始要求的回答,我将与您一起处理其他要求。
  • 创建和添加标题为“警报”的自定义列不应该以 df - h | awk -v alert="($alert)" ?
  • @JohnRudolph 我会添加一行:{printf("%-10s%s\n", foobar, $0)} 以始终在原始输出的左侧打印一个填充字符串。然后您可以简单地根据 Use% 更改 foobar 的值。
  • @JohnRudolph 我添加了一个简单的过滤器,重复检查 $5 的值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 2010-10-23
  • 2016-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多