All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.
bearmon - minimal server/service uptime monitoring
bearmon allows you to set up your own distributed minimal server or service uptime monitoring system in minutes. Features:
- Various checks: HTTP page contains substring test, HTTP status OK, HTTP test for given status code, SSL expiration check, Ping (fail if unreachable), TCP connection test
- Various alerting methods: e-mail, HTTP(S) web hook, SMS through Twilio
- Configure a per-check execution interval and global number of confirmations before alerting
- Distributed monitoring: if you set up multiple slaves and one of the slaves detects that a check failed, then other slaves will immediately run the check to confirm until the configurable number of confirmations is reached (a local cache is used to prevent the same slave from executing a check multiple times in a row)
Git repository: https://github.com/uakfdotb/pybearmon (see readme to get started; GPL v3)
(the repository is pybearmon since the old version was written in lousy programming language)
bearmon is designed to have minimal functionality for reliable uptime monitoring with downtime notifications. It stores results of checks but there are no historical data graphing tools. Communication between slaves occurs entirely over MySQL.
If you don't want to or don't have enough VMs to set up your own system, you can also register a free account at bearmon.com and create up to fifty checks with e-mail or HTTP alerting (SMS alerting and more than fifty checks are available for additional cost).
Comments
it would be nice if you provide/have a public status
@perennate, this is a nice job. I've been checking it out along with quite a few other systems (Uptime, Zabbix, PHPServerMon, etc, etc, etc). I also tested out the hosted bearmon service for a brief time.
One feature that appears to be lacking in this and a few other systems is the ability to have different "recipients" for Up/Down/Status Change notifications per check, so that you can, for example, use Webhooks with Rage4 to toggle a DNS A record On and then off again when the server goes down/comes back up. Anyway, unless I have missed it, it would be a nice differentiator.
In any case, this is still good work.
I don't intend to include any front-end code with bearmon. The check results are stored in the database so you should be able to make graphs from there (and status can be taken directly from checks table).
That does sound useful. Would have to make alerts have extra field though (off, on, both). Will look into it.
Yes, maybe On/Off/On+Off/Change/Pause/All.
It is one key feature missing from numerous monitoring scripts and making a true "UptimeRobot-killer" IMHO.
As I understand it, to work with Rage4 Generic Webhooks, you've got to send 2 different URL's: one for Up and one for Down. So more flexibility has to be built into the Notification engine of any service (allowing different "contacts"/Webhook per check for Up, Down, etc).
EDIT: Obviously the more complex services (i.e., Zabbix, Nagios, etc) that allow external scripts and have some level of "logic" ability in notifications can accomplish this.
My understanding of your offering (at least your "hosted" version) is that it only notifies on a "Down" (correct me if I am wrong here) and only to one Webhook per check.
BTW, it would also be nice if communication between Masters/Slaves could be done via an API/JSON/REST etc. So that you don't have to run MySQL on every node.
This would give you the option of only using MySQL Replication between "Masters" and then having lightweight "Slaves" (for Up/Down confirmation) that talk to the masters via HTTPS, for example. This approach gives "Master" redundancy + easy "Slave" extensibility for Distributed Monitoring.
For example, Uptime, uses the API approach which makes it quite lightweight and usable on small, spare VPS's.
Anyway, hope all this is helpful.
Cheers
You only need to run MySQL client on most of the slave nodes, really you only need to replicate between two of the nodes. Using MySQL makes synchronization between the slaves easier (use lock column with timeout), having specific nodes designated as masters would require those nodes to run different software components.
OK. Yes, I have seen that approach where there is a "Monitor" module/app and a "Everything Else" module/app that you may choose to run on whichever node you want depending on the role you would like that node to have.
Bearmon is the best, love it! Will there ever be a system to track uptime percentages such as the one pingdom and uptimerobot has?
I know it's been a long time, but these features have now been added:
@linuxthefish @geekalot
Thanks for the heads up @perennate, I will definitely check it out!
BTW @perennate, were these enhancements done to both your downloadable code and to your hosted version?
https://github.com/uakfdotb/pybearmon/commit/7743d8020a7a111ee5901516189f1f429fea1d86
Keep in mind that the web frontend is not free software, only the backend, due to "proprietary" billing framework. I might make basic web frontend (probably without multiple-account support) if there is interest.
Edit: to be clear, the changes were also made on the hosted version at https://bearmon.com
OK, that is what I wanted to know; so I can quickly check the new features on the hosted one; and then more in depth via the self-hosted.
I am comparing (the self-hosted) to Uptime (node.js, that I have running on about 10 nodes). And, I wrote a little script to convert Emails to Webhooks. (I know yours includes Webhooks, but this way I can use any monitoring app to trigger different Webhooks for up vs down, and do other funky stuff).
So, this will definitely be interesting.
Thanks again for the effort and info.
Some more updates per feedback from @geekalot
@perennate, this is really looking good.
If only you had some graphing/visualization of uptime ;-p