Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


bearmon - minimal server/service uptime monitoring
New on LowEndTalk? Please Register and read our Community Rules.

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

perennateperennate Member, Host Rep
edited December 2014 in General

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.

  • perennateperennate Member, Host Rep

    mgilang said: it would be nice if you provide/have a public status

    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).

    geekalot said: toggle a DNS A record On and then off again when the server goes down/comes back up.

    That does sound useful. Would have to make alerts have extra field though (off, on, both). Will look into it.

  • geekalotgeekalot Member
    edited December 2014

    @perennate said:
    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.

  • geekalotgeekalot Member
    edited December 2014

    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

  • perennateperennate Member, Host Rep
    edited December 2014

    geekalot said: 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.

    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.

  • @perennate said:
    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?

  • perennateperennate Member, Host Rep

    I know it's been a long time, but these features have now been added:

    • Allow alerts to be specified only for up/down events (default is for both)
    • Check events history, listing the last fifty up/down events (this is shown on dashboard for fifty account-wide, and also on each check details page for the last fifty events relating to that check).

    @linuxthefish @geekalot

  • @perennate said:
    I know it's been a long time, but these features have now been added:

    • Allow alerts to be specified only for up/down events (default is for both)
    • Check events history, listing the last fifty up/down events (this is shown on dashboard for fifty account-wide, and also on each check details page for the last fifty events relating to that check).

    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?

  • perennateperennate Member, Host Rep
    edited March 2015

    geekalot said: 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

  • @perennate said:
    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.

  • perennateperennate Member, Host Rep
    edited March 2015

    Some more updates per feedback from @geekalot

    • Allow editing an existing check
    • Add confirmation to check/contact deletion button
    • Allow adding additional email address contacts (this was not possible on free accounts earlier)
    • User agent set to pybearmon for HTTP-related checks
    Thanked by 1geekalot
  • @perennate, this is really looking good.

    If only you had some graphing/visualization of uptime ;-p

Sign In or Register to comment.