PushMon was developed as a response to the need for a simple but powerful push monitoring system. Unlike existing website monitoring systems, PushMon is designed to receive signals from websites, internal applications, scripts and background jobs. If PushMon does not receive the signal at the specified time, the user will immediately receive an alert via email, phone, IM, Twitter and/or SMS. Before PushMon, you either have to manually check your internal systems and cron jobs, or write code to tell you if they ran properly or not.
PushMon is a SaaS (Software as a Service) that you can access using any web browser over the internet. No software to install or maintain. As long as your system, script or job has access to the internet, you are good to go.
The company is located in Seymour, Connecticut, close to New Haven and Yale University. The application is created in Java, Spring, JPA, FreeMarker running on Tomcat and MySQL, and runs on Dedicated Servers and AWS Elastic Beanstalk.
Up until 2011, we had various computer related problems which we had no easy solution for.
- We have a computer in the basement at home which we wanted to be up all the time so we can always remote desktop to it in case of emergencies. How do we know if the computer is up or has internet connectivity? It doesn’t run any services that external monitoring services can check. It’s overkill to install a network monitoring system at home, and even that won’t work if the whole house has no power.
- This same basement computer runs some file transfers and backups on a regular basis. How do we know if these file transfers or backups have completed successfully? We can write code for every script or application that runs to alert us by email if something goes wrong, but that is too much work, and won’t help if the computer is off or has no internet connection.
- In the office, we run some batch processes early in the morning. We review the runs from our mailbox when we arrive in the office. In case some critical task comes up, we postpone checking our emails, and reviewing the logs, a few hours more. So how do we know if these processes ran fine as soon as possible, without us manually checking them at 5 AM in the morning? We had mysterious cases where cron.daily didn’t run at all, so adding monitoring scripts under cron will not work all the time. We didn’t want to setup and maintain another server for monitoring, which we have to monitor as well. Besides, we will need to modify each job to persist something after a successful run, so some other process can check it. We had a lot of small jobs and for most of them, this was too much work.
- For our critical cron jobs, we really wanted to get notified by email, IM and phone call. We mostly use email for alerts because who has the time to write code for sending IMs and calling phones?
- We have tests that run regularly in the background. We get notified only if there are errors in our applications. Some run on Windows, some on Red Hat. So how can we tell if these tests are actually running or everything is fine? We can configure Windows Task Scheduler to send as us an email if the task does not start, but that will only tell us if starts or not, not if it runs fine or not. We also have to do something similar on Red Hat. We can have the tests send emails on errors, which is a fair amount of work because of the number of test scripts. And any notification sent from the same machine won’t work if it loses its internet connection.
All these issues can be solved, but in no easy manner. What seems like a simple problem needs many different solutions to make sure everything is covered. What we wanted is something simple, like existing website monitoring services. We wanted it hosted so we don’t have to worry about them. We wanted it inexpensive for the office and free for home. We wanted it to notify us as soon as possible. If our important job should have completed its run at 4 AM, we want to get notified by 4 AM. We scoured the internet and we found nothing that can help solve all our problems, so we solved it ourselves, and PushMon is born..