forked from GithubBackups/healthchecks
58 lines
1.4 KiB
Markdown
58 lines
1.4 KiB
Markdown
# Signalling failures
|
|
|
|
You can actively signal a failure to SITE_NAME by slightly changing the
|
|
ping URL: append either `/fail` or `/{exit-status}` to your normal ping URL.
|
|
The exit status should be a 0-255 integer. SITE_NAME will interpret
|
|
exit status 0 as success, and all non-zero values as failures.
|
|
|
|
Examples:
|
|
|
|
```bash
|
|
|
|
# Reports failure by appending the /fail suffix:
|
|
curl --retry 3 PING_URL/fail
|
|
|
|
# Reports failure by appending a non-zero exit status:
|
|
curl --retry 3 PING_URL/1
|
|
```
|
|
|
|
By actively signalling failures to SITE_NAME, you can minimize the delay from your
|
|
monitored service encountering a problem to you getting notified about it.
|
|
|
|
## Shell Scripts
|
|
|
|
The below shell script appends `$?` (a special variable which contains the
|
|
exit status of the last executed command) to the ping URL:
|
|
|
|
```bash
|
|
#!/bin/sh
|
|
|
|
/usr/bin/certbot renew
|
|
curl --retry 3 PING_URL/$?
|
|
|
|
```
|
|
|
|
## Python
|
|
|
|
Below is a skeleton code example in Python which signals a failure when the
|
|
work function returns an unexpected value or throws an exception:
|
|
|
|
```python
|
|
import requests
|
|
URL = "PING_URL"
|
|
|
|
def do_work():
|
|
# Do your number crunching, backup dumping, newsletter sending work here.
|
|
# Return a truthy value on success.
|
|
# Return a falsy value or throw an exception on failure.
|
|
return True
|
|
|
|
success = False
|
|
try:
|
|
success = do_work()
|
|
finally:
|
|
# On success, requests PING_URL
|
|
# On failure, requests PING_URL/fail
|
|
requests.get(URL if success else URL + "/fail")
|
|
```
|