Diagnostics Kit is a set of tools created to help you monitor .NET applications. I tried to make the installation easy, with only minimal changes required in the configuration files. Diagnostics Kit is composed of few layers, but its architecture is really simple: Musketeer instances (Windows services) and Harvesters (assemblies from Nuget packages) installed in your apps deliver logs to the central point, called the Diagnostics Castle (an Owin-Nancy web application). Two most important parts of the Castle are the monitoring grid and the log viewer. I paste sample screenshots below:
To make configuration simpler, applications are identified by their paths so logs from applications installed under the same paths on various servers will be treated as logs from one application. I know it is quite restrictive, but believe me: it makes things much easier to maintain.
An interesting part of the Diagnostics Kit is also the Fiddler plugin, named Bishop. Bishop integrates with the Castle and provides different ways of tampering the requests. With its help you may:
- skip the load-balancers and send requests directly to the servers where you deployed applications
- emulate border routers HTTPS encryption on localhost when testing/developing applications
- test regex rules for your load-balancers or reverse proxies
- forward all the traffic to your test server (for instance on Docker)
The detailed documentation can be found in wiki: https://github.com/lowleveldesign/diagnostics-kit/wiki
There are many monitoring services available on the market, thus you might be wondering why I wrote another one. My point was to create a monitoring solution for small and midsize .NET projects (mainly web, but performance monitoring of Windows services is supported), which is fast to setup and easily cusomizable by project developers. I tried to keep the source code concise and easy to read. The requirements list is also short: a web server (preferably IIS), storage for logs (works with: Elastic Search, MySql or SQL Server) - you should have them already available in your infrastructure.
Download the components you need from the release page and read the installation guide on wiki. Then, depending on your application type, read the log collection guide:
- ASP.NET applications
- ASP.NET MVC applications
- ASP.NET WebAPI applications
- Owin applications
- Sending logs from logging libraries (System.Diagnostics, NLog, log4net)
If you like the project and would like to help, you are more than welcome. The features I currently consider most required include:
- ASP.NET Core Harvester
- Serilog sink for Diagnostics Kit
- .NET Core CLR support
- support for PostgreSql as a Log Store
But if you have a different idea/requirement, the Pull requests tab is awaiting you :)
You may also have a look at the following articles, which provide overview of the features available in the kit: