Opserver Monitoring Dashboard
Opserver is a monitoring system by the team at Stack Exchange, home of Stack Overflow. It independently monitors several systems as well as supports pulling data for an “all servers” view with respect to CPU, Memory, Network, and hardware stats. Currently, Opserver can monitor:
- Servers/Switches, etc. supported by:
- Bosun
- Orion
- SignalFX
- Direct WMI monitoring
- SQL Server Clusters & Single Instances
- Redis
- Elasticsearch
- Exception Logs (from StackExchange.Exceptional)
- HAProxy
- PagerDuty
- CloudFlare DNS
- … and more as we go
It can run under:
- Windows
- macOS
- Linux
- …and probably any platform supported by .NET Core
Building Opserver (.NET App)
To build, you’ll need the .NET Core 3.1 or higher SDK (available here), or a current version of Visual Studio.
Build instructions are:
- Clone the repo.
dotnet build
Building Opserver (Docker)
This also requires the .NET Core 3.1 or higher SDK (available here), or a current version of Visual Studio.
Build instructions are:
- Clone the repo.
docker build --target web .
The goal is to also update Docker Hub from GitHub actions so that you can spin up and image and simply provide your config.
Running Opsever
You may build to a directory under IIS with the ASP.NET Core hosting module if wanting to host in the V1 model, or you can use it as a raw executable (using “Kestrel”, the ASP.NET Core web server).
For example, if you just want to clone this repo and run it from the command line:
dotnet run --project src/Opserver.Web
Full instructions on building and running can be found here.
Note: you’ll need to setup your configuration to do anything useful.
Open Source Projects in Use
- StackExchange.Redis by Marc Gravell & Nick Craver
- Dapper by Stack Exchange
- JSON.Net by James Newton-King
- MiniProfiler by Nick Craver
- StackExchange.Exceptional by Nick Craver
JavaScript:
- d3.js by Michael Bostock
- ColorBrewer by Cynthia Brewer and Mark Harrower
- HTML Query Plan by Justin Pealing
- jQuery by The jQuery Foundation
- jQuery cookie plugin by Klaus Hartl
- jQuery autocomplete by Jörn Zaefferer
- highlight.js by Many
- TableSorter by Christian Bach
- Toastr by John Papa and Hans Fjällemark
License
Opserver is licensed under the MIT License.
Props
We’d like to thank several people outside Stack Exchange for large contributions to Opserver’s development.
- Brent Ozar for lots of (continuing) help on the SQL monitoring, with some of the initial queries and help letting us know many use cases to cover. We’ll be integrating some of the awesome tooling Brent and his team have to further assist DBAs and developers (like sp_Blitz, sp_BlitzIndex, and some you’ll hear about soon).
- Adam Machanic for sp_WhoIsActive, which powers the active tab for a SQL Instance. He also assisted with use cases and performance tuning on the use of sp_WhoIsActive.