领事 - 如果驱动器已满,则发出警报

时间:2015-05-26 17:47:46

标签: consul

在consul的演示中,检查磁盘利用率和内存利用率。 enter image description here

http://demo.consul.io/ui/#/ams2/nodes/ams2-server-1

您如何编写配置来执行演示所显示的内容?警告为10%,关键错误为5%?

这是我正在尝试的

{
  "check": {
     "name": "Disk Util",
     "script": "disk_util=$(df -k | grep '/dev/sda1' | awk '{print $5}' | sed 's/[^0-9]*//g' ) | if [ $disk_util >  90 ] ; then echo 'Disk /dev/sda above 90% full' && exit 1; elif [ $disk_util > 80 ] ; then echo 'Disk /dev/sda above 80%' && exit 3;  else exit 0; fi",
     "interval": "2m"
     }
}

这是相同的脚本,但更具人类可读性

disk_util=$(df -k | grep '/dev/sda1' | awk '{print $5}' | sed 's/[^0-9]*//g' ) | 
if [ $disk_util >  90 ] 
 then echo 'Disk /dev/sda above 90% full' && exit 1
elif [ $disk_util > 80 ] 
 then echo 'Disk /dev/sda above 80%' && exit 3
else exit 0; fi

检查似乎正常,但它不会打印出任何文字。如何验证这是否有效,并打印输出?

enter image description here

4 个答案:

答案 0 :(得分:7)

  1. 您看到的输出是由Nagios插件check_disk(https://www.monitoring-plugins.org/doc/man/check_disk.html)生成的
  2. “输出”字段由支票的标准输出填充。您的支票运行干净,不产生任何输出。所以什么也看不见。
  3. 要添加一些注释,只需在文档中列出的检查定义中添加“注释”字段:https://www.consul.io/docs/agent/checks.html
  4. 您的支票json文件如下所示:

    {
      "check": {
        "name": "disks",
        "notes": "Critical 5%, warning 10% free",
        "script": "/path/to/check_disk -w 10% -c 5%",
        "interval": "2m"
      }
    }
    

答案 1 :(得分:1)

警告状态的退出代码应为1,对于严重,2或更高。 (请参阅"检查脚本"在https://www.consul.io/docs/agent/checks.html),因此您可能想要更换退出行。

你的确定' state(disk use< 80%)不提供任何输出,这很可能是你看到空白输出的原因。

我的第二个概念是使用nagios插件而不是滚动你自己的插件。许多操作系统都有一个nagios-plugins软件包,它们是yum / apt安装的。

答案 2 :(得分:0)

健康检查依赖于支票的退出代码。要测试Consul服务器是否正在读取运行状况检查,您可以编写一个始终以1退出的脚本,然后您将看到运行状况检查失败。然后将其替换为始终返回0的脚本,您应该看到健康检查已通过。

如果要将文本返回到ui,请在json中添加output字段。

答案 3 :(得分:0)

似乎仅对stdout进行领事分析,而不是stderr。我已在服务检查文件配置中使用重定向( 2>&1 )进行了测试。这似乎有用!

JSON配置

{
  "check": {
    "name": "disks",
    "notes": "Critical 5%, warning 10% free",
    "script": "/path/to/check_disk -w 10% -c 5% 2>&1",
    "interval": "2m"
  }
}

输出结果

enter image description here