Simon icon Simon
Flexible server monitoring

Introducing Simon 5!

Simon version 5 is now available. It is a massive update, introducing a much-requested feature: syncing the Simon data between multiple Macs, plus a Simon Status service, a Link Checker filter, improved Find filter, iMessage and Speak Error notifiers, a new app icon, and much more.

Important: please note that Simon 5 requires a minimum of macOS 10.12 (Sierra), and is a paid upgrade from Simon 4. Purchasers since September 1, 2020 automatically get a version 5 license (that also works in previous versions).

Read the Simon What's New page for details.

Run in background, Daily Reporting, Dependent task Checking

I'm evaluating Simon as a replacement for a no-longer-supported product and have a few questions:
(1) Can Simon be set up to run hidden in the background and launched automatically at startup. It will most likely run on an unattended machine.
(2) Can I get it to E-mail a report each morning showing basic statistics?
(3) Can Tests be set to not run if a dependent service is down? I want to be able to differentiate between a remote site being down and a wider network problem.



David Sinclair's picture

Re: Run in background, Daily Reporting, Dependent task Checking

Thanks for checking out Simon. Answers:

  1. Yes, Simon has preferences to hide the Monitor window when the app isn't active, and to launch automatically. See the General Preferences page.
  2. You could add a Pulse test, set to check once per day, and use an E-mail notifier to email basic info... even if only a URL of a report that summarizes the state of the tests
  3. Simon doesn't have a test dependency feature yet, but the most common case is covered: before performing each check, it ensures you have a network connection. If you don't, the test is put into an "offline" state until you do, to avoid a false positive.

Let me know if you need any further assistance.  I'm happy to help.

Re: Run in background, Daily Reporting, Dependent task Checking



(3) Simon doesn't have a test dependency feature yet, but the most common case is covered: before performing each check, it ensures you have a network connection. If you don't, the test is put into an "offline" state until you do, to avoid a false positive.

The machine running Simon will probably always have a network connection (if you mean the NIC is enabled). Most of my existing tests are monitoring remote Web servers or services. While the machine running Simon will likely have a network connection, the machine's network subnet gateway may be down or having problems. Same goes for our institutional gateways beyond that. So unless I'm misunderstanding how Simon interprets having a "network connection" I'll probably get a lot of reports that web sites are down when they are most likely running but Simon can't see them. Put in vote for dependency checking.

A few more questions. The app that Simon will replace can analyze the HTTP response and flag a problem if the response contains some unexpected text. I couldn't find that feature?

I do see that you can check for page changes, but almost all the monitored web pages are data-driven dynamic web applications. Therefore legitimate changes are likely between checks. What I'm interested in are detecting things like MySQL or PHP error text that appears in the page, or if a proxy between Apache and a custom web application is failing. Is that easily achieved? EDIT: After reading the forum it appears that this isn't going to be a problem. We'll just need to approach detection differently.

Where is the Pulse test documented?

Finally, is a downloadable PDF of the User Guide available?


David Sinclair's picture

Re: Run in background, Daily Reporting, Dependent task Checking

Simon checks for a network connection by attempting to resolve one of two popular domains... and, from memory. If either can be resolved, it determines that a network connection is available, but if both fail, it assumes there's a local network issue. So that reliably avoids false positives.

I know you resolved the page change question, but to reiterate, you can set Start and End change text blocks, and only look at text between those. You can also use a Start block to look for text that must be present, and fail if it isn't. But for Simon 2.6 I am currently planning to add a more flexible "filter" feature that will allow doing custom scripts, regular expressions, and other logic to evaluate the test output.

The Pulse service isn't documented, as it is very simple — it is simply a one-word script that always results in a change by outputting the current date and time. The point being to be able to hook a notifier to that test that is always performed on every check.

The User Guide is currently only available online. In the future I will probably add it as a help book too, and might offer it as a PDF if there's interest.

I'm still unclear how the

I'm still unclear how the Pulse would be used to send a daily summary? Is that services purpose to allow you to check if Simon is running? If so, I'm going to assume that the tagging system for the notifier messages will allow me to insert the uptime percentage of various tests?

I'll set the evaluation software when I'm at the customer's site this week.

Thanks for the speedy responses.

David Sinclair's picture

Re: I'm still unclear

Yes, Pulse is simply to reassure you that Simon is on the job.

Notifiers only have variables for for the test they are linked to. So no, there's no direct way to output the status of all tests via a notifier. However, there are ways to achieve this.

You could create a report that is saved locally (which you could configure to include a subset of tests, if desired), then instead of Pulse, use a Web test to watch that report. It would change on every check if the date and time is included in the report summary, as it is for most templates. The E-mail notifier can then use the {TestChangeText} or {TestChangeDifferenceWithoutHTML} variables to send you the report contents.

Re: I'm still unclear (not anymore)


I'll have Simon run a daily pulse test that on success will send a message reminding us that it is running. That message will have a link to a web page where a Simon generated/uploaded report will be available.

I'll also have a second pulse test that checks at more frequent intervals and will notify if Simon isn't running (Although if Simon is down the machine running it is probably down too, thus no outgoing mail).

I've played with Simon this morning and I'm confident it will do the job. I'll ask the customer to purchase it ASAP.


David Sinclair's picture

Re: I'm still unclear (not anymore)

Sounds good. Though, of course, Simon can't notify if itself is down, unless you have Simon running on another machine to monitor the first one.

Throw failure if text present

I thought I had figured this out way back when I first looked at Simon.

I have a web server running apache that forwards certain types of requests to an embedded web application (serving HTTP on a reserved port). If that application is up it appears as though Apache is seamlessly serving the content. If that application is down or unresponsive Apache will throw a 503 (I think) error.

The problem is that a normal response is highly dynamic. The 503 error response is static.

What I would like to do is have Simon "Fail" if a know snippet of the error response text is returned. Is that possible?

David Sinclair's picture

Re: Throw failure if text present

It's easy to have a failure if static text isn't present, but not so easy to reverse that.. for now.

In version 2.6 I plan to add a Filter feature, that will enable you to easily perform analysis like that.

In the meantime, there are a few ways of achieving it, but one is to use two tests: one to check the server, with a notifier script to write out the result to a temporary file. And a second test to check that file via a script and output the desired result to trigger your final notifier. A little more work, but only necessary for a little while longer.

I hope this helps.

Re: Throw failure if text present

Thanks for the quick response. That makes sense. Are there any examples available?

Any ETA on 2.6?

David Sinclair's picture

Re: Throw failure if text present

I currently expect to work on 2.6 in January and/or February, with a beta release in that range, and general release a few weeks later. It's my top priority after I finish my secret iPhone app project... which will be after I recover from this darn cold!