Stack Exchange's Monitoring System
Switch branches/tags
Nothing to show
Pull request Compare This branch is 921 commits behind opserver:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Opserver is a monitoring system by the team at Stack Exchange, home of Stack Overflow. It is a tool for monitoring:

  • servers
  • SQL clusters/instances
  • redis
  • elastic search
  • exception logs
  • haproxy
  • ... and more as we go

Known as “status” internally, Opserver provides a fast overall view of all our major systems that also allows drilling in for more detail. For an idea of the UI, you can see some screenshots from our Velocity 2013 talk.


Installation should be a snap, just build this project as-is and deploy it as an IIS website. If monitoring windows servers and using integrated auth sections (e.g. live polling, SQL, exception logs) then using a service account with needed permissions is all you need to do on the auth side. After that, configure Opserver to monitor your systems, keep reading for how.

Security Configuration

/Config/SecuritySettings.config contains the security settings for the Opserver website itself, there are a few built-in providers already:

  • Active Directory ("ad")
  • "Everyone's an admin" ("alladmin")
  • "View All" (the default)

There is a SecuritySettings.config.example as a reference. You can optionally add networks that can see the main dashboard without any authentication when using any provider. This is useful for fully automated screens like a TV in an office or data center.

Monitoring Configuration

The basic configuration implementation is via .json files, for which .json.example files are included in the /config directory of the Opserver project. These .example files are exactly what’s running in the Stack Exchange production environment, minus any passwords or internal-only URLs. You are also welcome to implement your own settings provider that has a completely different source, for example JSON from MongoDB, or SQL, or…whatever you can come up with. Settings changes will be hooked up to events but that isn’t complete just yet, since we build every change and Opserver restarts, this isn’t a priority.

We recommend using a service account with the necessary permissions for monitoring, this elimiates any passwords in your configuration files and makes management easier, that's the practice in place at Stack Exchange.

Open Source Projects in Use

BookSleeve by Marc Gravell
Dapper by Stack Exchange
JSON.Net by James Newton-King
MiniProfiler by Stack Exchange
NEST by Martijn Laarman
StackExchange.Exceptional by Nick Craver
TeamCitySharp by Paul Stack

d3.js by Michael Bostock
HTML Query Plan by Justin Pealing
isotope by Metafizzy
jQuery by The jQuery Foundation
jQuery cookie plugin by Klaus Hartl
jQuery autocomplete by Jörn Zaefferer
prettify by Google
Simple Modal by Eric Martin
TableSorter by Christian Bach
Toastr by John Papa and Hans Fjällemark


Opserver is licensed under the MIT License.