Linux zabbix监视器自定义脚本值
我试图将zabbix配置为监视脚本中的值 但是zabbix返回一个错误:Linux zabbix监视器自定义脚本值,linux,bash,zabbix,Linux,Bash,Zabbix,我试图将zabbix配置为监视脚本中的值 但是zabbix返回一个错误: Received value [200true] is not suitable for value type [Numeric (unsigned)] and data type [Decimal] 脚本: status=$(curl -I https://example.com/health_check.jsp 2> /dev/null | head -n 1 | cut -d ' ' -f 2); if [
Received value [200true] is not suitable for value type [Numeric (unsigned)] and data type [Decimal]
脚本:
status=$(curl -I https://example.com/health_check.jsp 2> /dev/null | head -n 1 | cut -d ' ' -f 2);
if [ $status = "200" ]; then
exit 0
else
echo 1
fi
Zabbix配置:
key - system.run[/zabbix_scripts/myscript.sh]
key type of information - numeric (unsigned)
key data type - decimal
trigger - {sso:system.run[/zabbix_scripts/myscript.sh].last()}=1
我以前做过,但不知怎么的,这个脚本不适合zabbix
请帮忙,
谢谢 尽管错误消息很奇怪(
接收值[200true]
“使脚本看起来像输出了奇怪的东西,尽管它确实不应该输出),但我发现退出0的使用中存在问题
Zabbix不计算外部脚本/二进制文件的退出代码,它只读取标准输出。
将其更改为echo 0
,使脚本将值打印到stdout,从而使其对zabbix可见,例如:
status=$(curl -I https://example.com/health_check.jsp 2> /dev/null | head -n 1 | cut -d ' ' -f 2)
if [[ $status = "200" ]]; then
echo 0
else
echo 1
fi
虽然找出为什么会出现如此不稳定的输出会很有趣,但我建议将整个脚本改为:
curl -s -I -o /dev/null -w "%{http_code}" https://example.com/health_check.jsp
请注意,它将仅输出HTTP响应代码,因此必须修改触发器,以检查Zabbix 2.2及更早版本的值是否为200-#200
,以及2.4及更高版本的值是否为200
。此脚本发送到服务器的输出值存在数据类型冲突
您需要按以下方式更改脚本,echo 0
或echo 1
,而不是退出0
如果状态为200,则输出为0;如果状态为1,则可以触发警报
status=$(curl -I https://example.com/health_check.jsp 2> /dev/null | head -n 1 | cut -d ' ' -f 2);
if [ $status = "200" ]; then
echo 0
else
echo 1
fi
问题系统的回报是什么<代码>curl-Ihttps://example.com/health_check.jsp 2> /dev/null | head-n1
-另外,您正在混合echo
和退出
。虽然您可能指的是echo
,但在本例中,只输出HTTP响应代码会更简单。