Check_http Socket timeout but curl works

Hi,
I’m trying to understand why my check_http check is giving me a Socket timeout, but the same host is working if trying to connect through curl:

root@icinga /e/i/hosts.d# curl --head http://my.domain.com
HTTP/1.1 426
**server**: nginx/1.18.0
**date**: Tue, 14 Jun 2022 16:29:56 GMT
**content-type**: application/json
**content-length**: 107

root@icinga /e/i/hosts.d# /usr/lib/nagios/plugins/check_http -H my.domain.com
CRITICAL - Socket timeout after 10 seconds

Could you help me to understand where I’m wrong, please?
Thank you!

Hey @d83 ,
use both commands in verbose mode in order to find out what they are actually doing:

root@icinga /e/i/hosts.d# curl -vvvv --head http://my.domain.com
root@icinga /e/i/hosts.d# /usr/lib/nagios/plugins/check_http -v -H my.domain.com

I would guess that CURL is using a proxy, whereas check_http is trying to establish a direct connection. In that case please add your proxy to the commandline:

root@icinga /e/i/hosts.d# /usr/lib/nagios/plugins/check_http -I <proxy> -p <proxy-port> -H my.domain.com

I’m not using proxies, anyway I tried to execute using verbose:

SHARED root@cop ~# curl -vvvv --head http://my.domain.com
* Expire in 0 ms for 6 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 0 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 2 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 1 ms for 1 (transfer 0x55b49bdfdc10)
* Expire in 3 ms for 1 (transfer 0x55b49bdfdc10)
*   Trying 123.123.123.123...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x55b49bdfdc10)
* Connected to my.domain.com (123.123.123.123) port 80 (#0)
> HEAD / HTTP/1.1
> Host: my.domain.com
> User-Agent: curl/7.64.0
> Accept: */*
> 
< HTTP/1.1 426 
HTTP/1.1 426 
< server: nginx/1.18.0
server: nginx/1.18.0
< date: Wed, 15 Jun 2022 07:34:05 GMT
date: Wed, 15 Jun 2022 07:34:05 GMT
< content-type: application/json
content-type: application/json
< content-length: 107
content-length: 107

< 
* Connection #0 to host my.domain.com left intact


SHARED root@cop ~# /usr/lib/nagios/plugins/check_http -v -H my.domain.com
GET / HTTP/1.1
User-Agent: check_http/v2.2 (monitoring-plugins 2.2)
Connection: close
Host: my.domain.com


CRITICAL - Socket timeout after 10 seconds

Thanks!

I’m not an HTTP expert, but the return code of the curl test is HTTP/1.1 426, which means “upgrade required”: the server refuss to communicate using the protocol offered by the client. I would not call this an succesful test. In debug mode for curl one notices at the end Connection #0 to host my.domain.com left intact so the TCP session remains open in case the client sends another request in HTTP 2.0 and eventually get back an HTTP/2.0 200.
So, your interpretation of the curl test result is simply wrong: both tests fail. Maybe this gets more clear when doing a wireshark trace.