Ping PingArk from Go
Go can ping PingArk with net/http from the standard library, so there is nothing to add to your go.mod. Run your work, then issue a get to the ping URL.
Before you start
You need a check and its ping URL. Create one in the dashboard, then copy the ping URL from the check page. New to PingArk? Start with the getting started guide.
Ping on success
Call the ping URL after your job finishes its work. A plain ping means success and re-arms the check for its next run.
package main import "net/http" func main() { http.Get("https://ping.pingark.com/ping/3f9c2a1b-7d4e-4c8a-9f1b-2e6d8a0c4b5e") }Copy
Report failures, starts and duration
Add a suffix to the ping URL to say more than a plain success. Call these the same way you called the success URL above. The ping API has the full reference.
https://ping.pingark.com/ping/3f9c2a1b-7d4e-4c8a-9f1b-2e6d8a0c4b5e # success: the job finished, re-arms the timer https://ping.pingark.com/ping/3f9c2a1b-7d4e-4c8a-9f1b-2e6d8a0c4b5e/start # the run started, lets PingArk measure duration https://ping.pingark.com/ping/3f9c2a1b-7d4e-4c8a-9f1b-2e6d8a0c4b5e/fail # an explicit failure, alerts right away https://ping.pingark.com/ping/3f9c2a1b-7d4e-4c8a-9f1b-2e6d8a0c4b5e/log # a timeline note, never alerts https://ping.pingark.com/ping/3f9c2a1b-7d4e-4c8a-9f1b-2e6d8a0c4b5e/$? # a shell exit code: 0 is success, anything else failsCopy
Use an http.Client with a timeout in production so a stalled request cannot block your program. The bare http.Get shown here has no timeout.
To report a failure, get the /fail URL when your job returns an error. To measure duration, get /start first and the success URL when the work is done.
Troubleshooting
- Close the response body, or run the ping in a small helper that does, to avoid leaking connections in a long running service.
- Log the ping error if you like, but never let it stop your job. Monitoring should never be the reason a task fails.