在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
检查似乎正常,但它不会打印出任何文字。如何验证这是否有效,并打印输出?
答案 0 :(得分:7)
您的支票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)