What Does Opserver Monitor?

The Opserver project was originally built to monitor the services that run the StackExchange family of websites. As such, it monitors a number of systems specific to their needs. Since it has been open sourced, the project is beginning to support additional systems. It is moving along quickly and wonderfully, but it is unfinished. I was curious about what it does now and where it’s going, so I dug through the source code. (it was an enjoyable read if you work with ASP.NET MVC and data systems)

This post describes my findings, to the best of my understanding, of what Opserver can do today.

Initial Out of the Box Experience:

You must build the project and deploy it to an IIS web server. By default Opserver does nothing. It will start up to a blank white screen until you enable some or all of the features. This seems to be a point of confusion, but it is sensible default as all monitoring requires configuration anyway.

Available After Configuration:

After brief configuration, it is very easy to use. I am excited about the project for its SQL monitoring aspect. I will have some follow up posts on the SQL monitoring.

SQL Monitoring:

  • Backup status for all databases
  • Server memory usage
  • For SQL Server 2012 and above it displays the drive space used / available
  • Execution Plans for longest running queries
  • Active Connections using Adam Machanic’s sp_WhoIsActive (if it is installed into the Master db of the server)
  • …and many more features I will write about soon

Features I have not tested:

Near future additions?

There is work started on the following incomplete features:

  • Show database views, storage, indexes, missing indexes, unused indexes
  • Brent Ozar’s sp_BlitzIndex™ runner

Other possible features to be added:

Its modular architecture could be extended with your own custom monitoring plugins or custom tabs if you are willing to get your hands dirty. Customization requires a solid understanding of ASP.NET MVC architecture, JavaScript, and Dapper.Net for data access. That is not needed to use the built-in features which only require simple configuration.


Using Stack Exchange’s Opserver Step 2: SQL Configuration

Opserver Login ScreenOpserver is…

an open source server monitoring project from those innovative folks at StackExchange. I plan to use it to monitor SQL and web servers. In my last post, I built the project. Now I will configure monitoring access to my SQL servers.

A warning before we proceed:

I am new to Opserver and not affiliated with the project. This is a note about What Worked For Me™. Please do not rely on these notes when working with heavy machinery or robot armies.

On First Try

On first login, Opserver greets me with a warning because I did not enable any of the settings files in the project \Config folder.

Opserver No Config Warning

Continue Reading


Using Stack Exchange’s Opserver Step 1: Will it Build?

The StackExchange Opserver Project Page states, “Installation should be a snap, just build this project as-is and deploy it as an IIS website.”

However, I ran into a build exception in StackExchange.Opserver.Current.GetSecurityProvider():

An exception of type 'System.TypeInitializationException' occurred in
StackExchange.Opserver.dll but was not handled in user code.

Opserver Exception on build

It turns out this is a minor issue where my computer was outside the generous defaults.

Opserver assumes you want to allow open access for a local 10.x.x.x network using Active Directory, which is a safe default guess. But if you’re outside of that range, you will need to update Opserver/Config/SecuritySettings.config with your own IP range and subnet mask if you want to use this auth method.

SecuritySettings.config.example source:

<SecuritySettings provider="AD">
   <!-- Optional, these networks can see the overview
        dashboard without authentication -->
       <Network name="SE Internal" cidr="" />

Here is an example that would work for a computer at in the other private range:

 <Network name="Main Office" cidr="" />

Then save the config file with out the .example suffix and rebuild the project. At that point the build worked for me.

Opserver Login Screen

Since I left the default Active Directory (AD) security provider, a valid AD Login is required to continue. If you prefer no password, then you should replace “AD” with “alladmin” in SecuritySettings.config, then you can enter anything into the username / password box.

It works, so installation is a “snap”. But until we adjust the configuration files all we will see is a blank white screen.

Opserver Blank Dashboard

So in the next post, I will look at adding a SQL server to the monitoring configuration.

Note for those new to building ASP.NET MVC projects

As the application targets ASP.NET 4.5, I recommend Visual Studio 2012 or 2013 Professional to open the Opserver ‘solution project’. VS 2010 Web Express does not appear to be compatible with the project, I have not tested 2012 Express.

The project should build and run locally on your workstation with no issues. Deploying the project an IIS web server the first time can be tricky as you need to ensure the right dependencies are deployed onto IIS. That is beyond the scope of this post.