如何让 check_http -r 准确查找字符串的 n 个实例

如何让 check_http -r 准确查找字符串的 n 个实例

我有一个可以查询的 URL,以确保我的应用程序正常运行。结果如下所示。检查字符串中是否有“ok”并不能说明一切正常,我需要知道它出现了 3 次。

{“host”:“主机名”,“http”:“status”:“ok”},“mysql”:“status”:“ok”},“mongo”:“status”:“ok”}}

我正在尝试以下命令,但我想我没有正确执行正则表达式,有人可以建议吗?

/usr/lib/nagios/plugins/check_http 主机名 -4 -w 3 -c 5 -u '/app/system/status' -r 'ok{3}' -p 8080

给我

HTTP 关键:HTTP/1.1 200 OK - 未找到模式 - 响应时间为 0.011 秒,共 245 字节 |时间=0.010820 秒;3.000000;5.000000;0.000000 大小=245B;;;0

答案1

正则表达式“ok{3}”将匹配字母“o”后跟正好 3 个“k”。我不记得 nagios 与 pcre 的兼容性如何,因此这些可能有效:

ok.*ok.*ok

或者

(ok.*?){3}

答案2

一次性检查所有服务有什么意义?假设 httpd 说再见,没有它你的应用程序就无法使用。

您可以在页面上查看整个回复:

-s, --string=字符串

String to expect in the content
/usr/lib/nagios/plugins/check_http host-name -4 -w 3 -c 5 -u '/app/system/status' -s "{"host":"host-name","http":{"status":"ok"},"mysql":{"status":"ok"},"mongo":{"status":"ok"}}"

相关内容