summaryrefslogtreecommitdiff
path: root/bin/multi-ping
diff options
context:
space:
mode:
authorSteve Kemp <steve@steve.org.uk>2017-08-08 08:43:38 +0300
committerSteve Kemp <steve@steve.org.uk>2017-08-08 08:43:38 +0300
commit53810efe8a7f92c47b5b6bab9de4afb52ce380b2 (patch)
tree29f618e2cd4010d3e6584c833db214ecf9b61301 /bin/multi-ping
parent21870b8cf59f0450ef09c10890f64bb5b88c7645 (diff)
Ignore bogus DNS results.
We've had a problem for the past few weeks (?) where we see false DNS errors when making http/https requests with `curb`/`libcurl`. To resolve these issues properly we're going to have to rewrite the code to avoid the current gem. However that is considerable work because of the hole we've back ourself into - wanting to test both IPv4 and IPv6 "properly". We'll have to duplicate that work if we use `net/http`, or even mroe so if we use `open3` and exec `curl -4|-6 ..` For the moment this commit changes how things are handled to deal with the issue we see - which doesn't solve the problem but will mask it. When custodian runs a test it will return a status-code: * Custodian::TestResult::TEST_FAILED * The test failed, such that an alert should be raised. * Custodian::TestResult::TEST_PASSED * The test succeeded, such that any previous alert should be cleared. * Custodian::TestResult::TEST_SKIPPED * Nothing should be done. As the failure we see is very very specific - an exception is thrown of the type `Curl::Err::HostResolutionError` - we can catch that and return `TEST_SKIPPED`. That means that there will be no (urgent) alert. Obviously the potential risk of swallowing all DNS-failures is that a domain might expire and we'd never know. So we'll do a little better than merely skipping the test if there are DNS failures: * If we see a DNS failure. * Then we try to lookup the host as an A & AAAA record. * If that succeeds we decide the issue was bogus. * If that fails then the host legitimately doesn't resolve so we raise an alert. To recap: * If a host fails normally - bogus status-code, or missing text - we behave as we did in the past. * Only in the case of a DNS-error from curb/curl do we go down this horrid path. * Where we try to confirm the error, and swallow it if false. This closes #13.
Diffstat (limited to 'bin/multi-ping')
0 files changed, 0 insertions, 0 deletions