Periodic task (cron) monitoring
complete
Adrien Rey-Jarthon
Ability to monitor periodic tasks with a simple HTTP call (like https://github.com/healthchecks/healthchecks, https://deadmanssnitch.com/ or https://cronitor.io/)
Log In
Adrien Rey-Jarthon
complete
That's it, I just shipped the first version :) Have a look at the documentation here: https://updown.io/doc/how-pulse-cron-monitoring-works
Give it a try a let me know how it works for you and what needs improving!
r
rwky
Adrien Rey-Jarthon just checked the docs this looks awesome thanks :)
a
axel@freshbuzzer.com
Adrien Rey-Jarthon Awesome will check it out the next couple days!
Vinicius
Adrien Rey-Jarthon let me describe a small variation to this feature, that would allow more generic uses. That would be the ability of specifying the status (up|down) of a pulse.
But first, a use case. Let's say you have a storage server and you want to be notified when there's a disk failure. And you want to be notified immediately when a disk fails. You could setup a pulse with a 1 day interval, just to be sure that it's actually running. The task is run locally every hour, and then when a disk fails, it immediately sends a pulse with status=down and the user gets notified that it's down.
This would allow this pulse feature to be an instant notifier of problems on tasks running locally on the user's systems.
I see that this is not exactly what was thought when it was designed. Though it's as a small variation of it. Anyway I'll follow on describing the thought...
It could be an optional feature, without breaking the current implementation. For example, check if it's a POST request and Content-Type is "application/x-www-form-urlencoded", then check for the 'status' field. So the user could report it as:
$ curl -d status=down -d output=@my-out-file.txt https://pulse.updown.io/asdf/qwerty
Otherwise keep assuming the POST data as raw output and don't consider the user is reporting any status (that is the current assumption). Though when considering the status it's needed to add a bit more code to generate the notifications when the status of the pulse changes.
Again, I see that it's not a simple pulse, but rather 'task monitoring'. Though maybe it could be possible to implement it without breaking the current implementation, and without much risk.
Adrien Rey-Jarthon
Vinicius Thanks for your detailed suggestion. I already plan on implementing something similar but slightly more generic (for updown.io) by re-using the "contains" feature already available for other checks. I briefly described this in the documentation page as: "At a later time it'll be possible to specify a string to expect in this body and consider the check as DOWN if a pulse was received without the configured string. For example in addition to detecting missing pulse, you could indicate if the task terminated "sucessfully" or with warnings/errors, and ask updown to match on the presence of the "successfully" string. This way you also get alerts and can check the body for controlled failure cases."
I'll let you know when this is implemented :)
a
axel@freshbuzzer.com
Adrien Rey-Jarthon since this has been marked as "in progress" a while back, are you able to share more on when this might be available?
Would hate having to switch services just to get this functionality. TY!
Adrien Rey-Jarthon
axel@freshbuzzer.com Hehe good timing, yes :) I actually resumed working on this last week, there's even a part of feature in production right now (but you can't see it as it's not finished). You can expect a basic but usable version in the coming weeks.
a
axel@freshbuzzer.com
Adrien Rey-Jarthon awesome, I was already thinking how to hand-roll something based on the current endpoint monitoring. But I can wait for an initial version in the coming weeks. Keep up the good work!
Adrien Rey-Jarthon
in progress
Adrien Rey-Jarthon
Before this is implemented we can recommend some alternative services:
- https://healthchecks.io (SaaS or open source: https://github.com/healthchecks/healthchecks)
- https://deadmanssnitch.com
- https://cronitor.io
📆
This response was made on 2021-09-20 (the comment date is wrong)
Adrien Rey-Jarthon
Merged in a post:
timeout for remote monitoring systems behind a firewall
M
Marl Scot
I'd like to be able to create a client that i can run on the local network, that reports internal server status back to UpDown.
I can use the API to send the status updates, but it would be nice to have a way to set a monitor as down if it doesn't receive an update within a set time limit.
E.g.
Internal monitor sends updates every 10 mins about a local web server (that is only accessible from inside our network).
A local network switch dies, so monitor system can no longer send updates to UpDown
No updates received by UpDown in the last 15 mins, so mark that monitor as failed.
I know the above could be done by forwarding a port to my internal monitor systems and using TCP monitoring, but would like to avoid that as it always has the possibility of a security failure if someone discovered the open port.
Thanks
Adrien Rey-Jarthon
Merged in a post:
Reverse checker - expect phone home in intervals
J
Jimmie Antonsson
I have an idea that I think can fit pretty good with your product.
Its more of a new feature, rather than expanding current functionality.
Let say you allow us to create a new monitoring, but instead of you checking in on my endpoint ever x second,
I'm hitting your endpoint every x second/minute/hour with a simple http request.
The only configuration I would need on your side is
- Name
- Expected interval (seconds)
You would provide me a url like updown.io/checkin/uniqueurl
you would log the latest time I requested this URL, and if the timespan from now to latest is bigger then my configured "expected interval", you would treat is as down and send alerts etc
It would be very useful for minor applications/scripts that isn't part of a bigger infrastructure/monitoring solutions.
I have several use cases where scripts are running as cron jobs, but doesn't have any easy way of knowing if its actually running. It would be so easy to just send a request after each successful execution.
J
Jimmie Antonsson
I have an idea that I think can fit pretty good with your product.
Its more of a new feature, rather than expanding current functionality.
Let say you allow us to create a new monitoring, but instead of you checking in on my endpoint ever x second,
I'm hitting your endpoint every x second/minute/hour with a simple http request.
The only configuration I would need on your side is
- Name
- Expected interval (seconds)
You would provide me a url like updown.io/checkin/uniqueurl
you would log the latest time I requested this URL, and if the timespan from now to latest is bigger then my configured "expected interval", you would treat is as down and send alerts etc
It would be very useful for minor applications/scripts that isn't part of a bigger infrastructure/monitoring solutions.
I have several use cases where scripts are running as cron jobs, but doesn't have any easy way of knowing if its actually running. It would be so easy to just send a request after each successful execution.
Adrien Rey-Jarthon
Sorry but I can't give any ETA as this will depend on the time I have and other higher priority task that comes before. If you are hesitating on switching because of this I recommend staying with your current provider until you receive an update on the status of this suggestion. Or be prepared to keep both tools for a while.
C
Carl
Hi @Adrien as this is planed, can we get an ETA? This year, next year...? We plan to move our services (40+) from UptimeRobot, but only when this feature is implemented. Thanks.
Adrien Rey-Jarthon
Hello and thanks for your suggestion.
The first option you're talking about where you would "refresh" the up status on your end is actually planned for later here: https://updown.uservoice.com/forums/177972-general/suggestions/5586072-periodic-task-cron-monitoring (under the name "pulse monitoring", "cron monitoring" and various other versions). I am actually gonna merge these suggestions together so you get the updates from the other suggestion and it adds up your vote too.
Also as you said one alternative which is currently possible is to expose a small HTTP/TCP service to the outside for monitoring purpose only and configure this one in updown, some of our clients are doing this to "expose" the status of internal services. But I totally understand if you don't want to do this of course.
In this case what I would recommend would be to use one of the existing pulse monitoring services discussed in https://updown.uservoice.com/forums/177972-general/suggestions/5586072-periodic-task-cron-monitoring before updown implements this, and once we do and if you want to consolidate everything in updown.io it should be easy to switch over.
Load More
→