How to get check_http -r to look for exactly n instances of a string

httpnagiosregex

I have an URL I can query to make sure that my app is running properly. The results are something like below. Checking that "ok" is in the string does not tell me all is well, I need to know that it occurs 3 times.

{"host":"host-name","http":{"status":"ok"},"mysql":{"status":"ok"},"mongo":{"status":"ok"}}

I am trying the following command but I guess I'm not doing the regex properly, can someone suggest?

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

gives me

HTTP CRITICAL: HTTP/1.1 200 OK – pattern not found – 245 bytes in 0.011 second response time |time=0.010820s;3.000000;5.000000;0.000000 size=245B;;;0

Best Answer

The regex 'ok{3}' would match the letter 'o' followed by exactly 3 'k's. I don't remember how pcre-compatible nagios is, so these might work:

ok.*ok.*ok

or

(ok.*?){3}