Ping PingArk from Ruby
Ruby pings PingArk with Net::HTTP from the standard library, so there is no gem to add. Run your job, then get 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.
require "net/http" Net::HTTP.get(URI("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
For a script that must not hang, wrap the call with Net::HTTP.start and set open_timeout and read_timeout.
To report a failure, get the /fail URL from your rescue block. To measure duration, get /start at the beginning and the success URL at the end.
Troubleshooting
- Rescue around the ping so a network error never bubbles up into your job. A quiet miss beats a crashed task.
- On older Ruby, require net/http and uri explicitly at the top of the file.