3

在 consul 的演示中,有磁盘利用率和内存利用率的检查。在此处输入图像描述

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

看起来检查正在工作,但它没有打印出任何文本。如何验证这是否有效并打印输出?

在此处输入图像描述

4

4 回答 4

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

您的检查 json 文件将如下所示:

{
  "check": {
    "name": "disks",
    "notes": "Critical 5%, warning 10% free",
    "script": "/path/to/check_disk -w 10% -c 5%",
    "interval": "2m"
  }
}
于 2015-08-06T21:25:27.717 回答
1

您的警告状态的退出代码应该是 1,对于严重,2 或更高。(请参阅https://www.consul.io/docs/agent/checks.html上的“检查脚本” ),因此您可能希望交换退出行。

您的“正常”状态(磁盘使用率 < 80%)没有提供任何输出,这很可能是您看到空白输出的原因。

我赞同使用 nagios 插件的概念,而不是使用自己的插件。许多操作系统都会有一个 nagios-plugins 软件包,可以通过 yum/apt 安装。

于 2016-09-21T00:28:39.140 回答
0

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

如果要向 ui 返回文本,请在 json.xml 中添加一个输出字段。

于 2015-06-25T23:19:12.687 回答
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"
  }
}

输出结果

在此处输入图像描述

于 2017-07-26T13:52:27.807 回答