: The screenshots and information below are for the current general release, version 3.6.1. Version 4 is now available as a public beta, and has a redesigned appearance; see the announcement blog post
to learn more.
Checks page of the Simon Monitor window
Dejal Simon is the essential site monitoring tool for Mac OS X. It checks servers for changes or failures, and notifies you via email, sound, speech, Twitter, or other means. You can use it to track updated sites, and to alert you when an important server goes down or recovers. Developed in Cocoa, it is a native Mac OS X application with an intuitive and attractive interface.
Simon is very versatile. It can be used to monitor your own website and servers, track posts and new comments on your or friends' blogs, check for web mail, get notifications of updates to favorite news and entertainment websites, keep an eye on auctions, and many other uses.
Monitor Your Sites and Servers
Central to Simon is the Monitor window. It enables you to see at a glance the current status of all of your monitored websites, servers, and applications. In addition to a colorful status icon and up-time percentage, the tests table displays how long ago the last change and failure occurred, and when the next check will occur. But that's not all. This window also displays further statistics about the tests, and tables listing recent checks (including the check duration and a bar chart), changes (including the text that changed), failures (including the error description), and activity, including when tests start checking, and the various steps during the check (starting, stopping, service result, each filter, notifications, etc), plus other actions on tests, e.g. editing, pausing, etc.
Because sometimes you don't want to have another window cluttering up your screen, you can hide the Monitor window if you wish, and/or use the handy Dock or Status menus. The includes quick access to Simon's windows, and some global functions. The includes all that plus displays all of your tests, complete with status icons, details via tooltip, and the option to perform a favorite action or display a sub-menu of quick-access operations for each test, so you can visit the site or other tasks without even having Simon visible.
Put it to the Test
So how do you tell Simon what to monitor? That's where the New/Edit Test window comes in. This window has lots of options to help you configure each test, conveniently arranged on multiple pages:
- The Summary page contains fields to name the test and write a description of it, plus an overview of values from other pages, with clickable titles to jump right to that value.
- The Options page enables you to specify how often to check the test (when the previous check was successful or failed), and other useful options.
- The Service page is where you choose what to check and enter the URL or whatever other information it needs. Read about services below.
- The Filters page is one of the key areas of Simon. You can easily tell the test to ignore parts of the service output, concentrate on just the area that interests you, detect changes from the previous check, and much more. Read about filters below.
- The Notifiers page can be used to indicate how to alert you when a change is detected, if the service goes down, recovers from a failure, or if a filter detects a problem. Read about notifiers below.
- The Reports page specifies whether the test should appear on some or all reports. Read about reports below.
- The Auto Pause page enables you to tell Simon not to check on specified days or time intervals. For example if you know that a server will be unavailable, perhaps during a periodic reboot or regular maintenance, or you simply don't want to know about changes at certain times, like of a blog when you should be working.
Note: Simon automatically detects when you don't have a network connection, and waits for it to return. Plus if you run Simon on a laptop that you often take to Wi-Fi hotspots, you can enable an option in the preferences to detect hotspot login pages, to avoid interpreting them as a change or failure in the monitored website.
The Web (HTTP) service is one of the most popular, for monitoring normal web pages (as opposed to other things like MySQL databases, network volumes, or local Applications). The Setup Assistant makes it easy to mass import bookmarks from web browsers, picking and choosing which to import. Also, you can simply drag a URL from a browser or other application to the Monitor window to add it as a new test.
Service page of the Edit Test window
At Your Service
Several services come built-in. Services tell Simon how to check a test. They include, among others:
- Application: Make sure an application is present, and optionally running — can re-launch if not via Launch notifier.
- DNS and Specific DNS: Query a domain name server to ensure the domain is visible.
- Drive Status: Checks the drive capacity threshold, S.M.A.R.T. status, and RAID health.
- FTP: Look at a file on an FTP server, to detect its availability or changes.
- FTP Directory Listing: Watch a directory listing on an FTP server, to detect added, changed, or deleted files.
- Incoming Mail (IMAP): Communicate with an IMAP mail server, to make sure it is available, and/or look for new messages.
- Incoming Mail (POP): Another kind of mail server (plus a SSL-enabled edition is also available).
- Mount: Mount a local, AFP, or SMB volume to ensure it's available.
- MySQL: Connect to a local or remote MySQL database and perform a query to ensure it is working.
- Network Time (NTP): Checks that a network time server is responding.
- Outgoing Mail (SMTP): Outgoing mail usually goes via a SMTP server; make sure it is available (plus a SSL variation).
- Ping: Ping any server to check responsiveness; you can specify timeout and packet loss limits.
- Port Available: Like the Port services, but simply checks if a port is open, without actually communicating on it.
- Samba SMB: Checks that a Samba SMB client is online and responding.
- Screenshot: Takes a screenshot whenever the test is checked. Useful to track activity on the machine.
- S.M.A.R.T. Status: Checks the S.M.A.R.T. status for all volumes.
- SNMP Status: Checks the status of a SNMP-connected device; it's a failure if it is not up.
- System Error Log: Results in a failure if a specified error message occurs in today's system.log.
- SSH: Converse with a remote secure shell session.
- TCP Port Scanner: Checks the status of all TCP ports on a server.
- : Monitors Twitter updates, direct messages, friends, followers, and more for changes and/or failures.
- Web (HTTP): Check a website for changes or failures.
Usually the built-in services are ample, but what if you want to delve deeper? Sometimes you have a special requirement and want to check some other kind of server. Not a problem! You can customize the services to edit the defaults for the built-in ones, or even add new ones. Similar to the New/Edit Test window, the New/Edit Service window enables you to change the services — and lets you auto-pause a service, affecting all tests that use that service.
Prescription for Success
Simon is all about flexibility, but perhaps one of the most powerfully flexible features is the Script service plug-in. It enables you to create your own services via AppleScript, shell script, or Perl, PHP, Python, and other scripting languages.
The Script editor window enables adding a description to display, custom variables to get values from tests that use the new service, selecting the script type, and of course editing the script itself.
You can get new scripts from the page, or if you write one that you're willing to share, you can save it and send it to us to provide for others.
Capture Your Heart's Desire
Services based on the Port service plug-in enable you to connect to any server and engage in a conversation with it, receiving text and sending responses. If the session script is successfully navigated, the check is considered a success, but if the server doesn't respond, or responds incorrectly, a failure is registered.
There are session scripts built-in for several types of servers. But how do you create your own? Simon makes it easy, with the handy Capture Session panel.
You connect to any server on a given port, select the relevant part of incoming text, type commands to continue the session, and the session script is created for you. Simple as that!
Put a Detective on the Job
But what about websites that have banners or other irrelevant content? Won't that confuse Simon into thinking the page has changed? Nope! Simon has a very useful feature called Filters, where you can tell it what part of the page to look for, e.g. a comment count on a blog, or the lead headline area on a news site. Filters can also optionally detect if the output is different than the previous time they checked.
Multiple filters can be chained to perform operations on the text output by the service. They can also look at the output of any previous filters, and other values, specified as the input for each filter.
Like services, filters can be customized as desired via the New/Edit Filter, and used in any number of tests. Many filters define default behavior that can be customized for each test, for maximum flexibility.
The provided filters include:
- Block: Look for two pieces of text in the filter input, and output the text between them, if found. Also detects if a change occurred from the previous time it was checked. Advanced options include the ability to look for a specific occurrence of the markers.
- Block Without Changes: Similar to the Block filter, but doesn't detect changes; useful as a filter before others.
- Change: Simply detect a change anywhere in the input text.
- Find Keyword: Find some text in the input, using simple text matching. Options include case sensitivity, finding the start or end of a word, and more. Also includes the ability to find the first occurrence, a specific one, or all, plus find and replace those variations.
- Find Regular Expression: Find some text in the input, using a regular expression. Definitely a power-user feature! A handy menu of available regex operators is included. Like for Find Keyword, several find and find & replace options are available.
- Find Required: Look for some text in the input, and result in a failure if it is not found. Useful to check for text that must be present.
- Find Unwanted: Look for some text in the input, and result in a failure if it is found. Useful for undesired text.
- HTML Body: Outputs just the contents of the HTML body. Doesn't detect changes, since you might want to do further filtering after this.
- Ignore HTML Tag Pairs, Ignore HTML Tags, Ignore Images, Ignore Links, Ignore Numbers, and Ignore Words with Digits: These filters are all similar. They strip out all occurrences of the indicated kind of item from the text. Very useful for refining the output.
- List Hyperlinks: Finds and outputs only all HTML hyperlinks from the input, separated by commas.
- Number Changed, Number Changed by 10, Number More Than 95%, Number Out of Range: These filters evaluate a number, and result in a Change or Failure depending on specified conditions. They all requires only a valid number as the input, so use another filter before this one to cut down the text to just a number, if necessary.
- Override as Unchanged: Alters the current status to Unchanged, to cancel out a Changed or Failure status. The output text remains the same.
- Override Custom: A test-configurable override. By default, alters the status to automatically detect a change, without altering the output text.
- Override No Fail: Alters a Failure to be a Success status, with the error message as the output text. The status will be Unchanged if the error is the same as last time, or Changed if the error is different.
- Simple Format: The Format filters can reformat the output text, including using variables, for example to combine the output of two filters, or wrap in quotes.
- Trim Whitespace: Removes spaces, tabs, and returns from the start and end of the text.
Want to do something else? No problem: you can add custom filters by writing an AppleScript, shell script, or Perl, Python etc script. Like the Script service, the Script filter plug-in enables a virtually infinite range of filtering options.
To make it easier to find text for the Filter feature, or just to quickly view the site without leaving Simon, Preview and Source windows are available. The Preview window includes both the HTML source and rendered content of the page, while the Source window includes the server headers and HTML source. You can also easily view the sites in your preferred web browser. Preview is also available for non-web services, to see what is checked and what is output by the server.
Communication is the Best Policy
Okay, so Simon monitors your tests, detecting changes, failures, and recoveries. And it displays this information in the Monitor window, Dock icon, and Status menu. But you're a busy person, and sometimes want important events to really catch your attention. You're in luck: Simon also has a notifiers feature, with several ways of telling you about things you want to know. Each test can use any number of notifiers, with separate notifiers for each type of event. So, for example, you could play a sound and go to the web page when your favorite blog changes, but email a text message to your cellphone when it goes down.
Further, you can share notifiers between multiple tests: set up a notifier once, and use it for as many tests as you like. For additional flexibility, variables enable customizing the notifier with test names, URLs, times, etc.
Available notifiers include:
- Action: Bounce the Dock icon, activate Simon, display in your web browser, and other actions.
- APC Masterswitch: Toggle an outlet on an APC Masterswitch power device.
- Calendar: Add events or tasks to iCal, or events to Google Calendar.
- Email: Send an email message to you at work, a friend or client, or your cellphone.
- Growl: Use the popular third-party Growl notification service to display small floating panels on-screen.
- Launch: Start or switch to an application and/or document.
- Mount: Mount or dismount a local, AFP or SMB volume.
- MySQL: Add an entry to a database to log a change or failure.
- SMS: Sends a SMS text message either via the third-party Clickatell service or via email.
- Sound: Play a sound; several extras are provided.
- Speech: Simon talks to you!
- : Send updates or direct messages to yourself or others via the popular Twitter service.
- Web: Get or post to a web page, e.g. to perform a PHP script on the server.
As with services and filters, you can add custom notifiers by writing an AppleScript, shell script, or Perl, Python etc script. The Script notifier plug-in enables a virtually infinite range of notification options. You can also create notifiers based on port connection sessions via the Port notifier plug-in.
But as useful as notifiers are, sometimes you don't want to be bothered... perhaps during a meeting, or while you sleep if your computer is within earshot. As with tests, notifiers can be automatically paused for specified time and day ranges.
Your Reporter on the Scene
What if you're using a different computer, and don't want yet more email, or want to see more detail? Simon also offers a reports feature, that outputs multi-page HTML reports that you can view in any web browser. Simon can automatically save them to your local Personal Web Sharing folder (or any other local folder), or upload them to a remote server, at whatever frequency you like. Click to see a live sample!
The reports use templates to manage layout and content, with several templates built-in, and updates and user-submitted ones available on the page. They aren't limited to HTML, either — there are templates for a RSS feed, tab-delimited text files, and other possibilities... including an iPhone template: click to see it live.
Try It Now!
Download and try Simon for free! Version 3.6.1 is currently the latest general release. Read the Simon 3.6.1 release notes to see what has changed in this version, or read the Simon Help to find out more about it.
A beta release is also available. Read the Simon 4.0b3 release notes to see what's new.