This project aims to provide a tool for monitoring health of various components belonging to a bigger eco-system (like SOA or Microservice Architecture).
HealthMonitoring offers a standalone, self-hosted tool that:
- offers an WEB API for registering components and obtaining health information about them,
- monitors (with configurable time periods) registered components,
- offers a HTML dashboard to display the current status of monitored components,
- offers an endpoint detailed HTML page to display endpoint details and health history.
To build the project, please open a powershell console in project root folder and execute: PS> .\make\make_local.ps1
After a successful build, the root folder would contain built nuget packages (*.nupkg)
The Health Monitoring service is self hosted. The HealthMonitoring.SelfHost project is a console application that offers all the functionality.
The easiest way to install it is to:
- install a HealthMonitoring.Service-deploy nuget package in target folder,
- make a monitors directory in target folder (where HealthMonitoring.SelfHost.exe is),
- install one or more HealthMonitoring.Monitors.XXX-deploy monitor packages in monitors directory,
- (optionally) edit HealthMonitoring.SelfHost.exe.config to customise host settings,
- run HealthMonitoring.SelfHost.exe to start a console application or run install_service.cmd to register the health monitor as a windows service
If health monitor is installed with default settings and it is running, it's home page would be available at http://localhost:9000/ address. It will provide urls to:
- API documentation (with ability to execute API commands),
- to the dashboard.
The component registration has to be done via WEB API and it could be done via API documentation page (http://localhost:9000/swagger/ui/index)
A POST /api/endpoints/register
method is doing registration.
Below there is an example request body to register a monitoring for http://google.com
{
"Name": "Google",
"Address": "http://google.com",
"MonitorType": "http",
"Group": "My group"
}
Please note that MonitorType value has to be one of supported monitors (they are installed as plugins).
To list the currently supported monitors, please use GET /api/monitors
Any kind of contribution is welcome :)
To contribute please:
- fork the repo,
- write code, unit tests and acceptance tests (if applicable),
- add nuspec file for the new plugin (if applicable) and ensure that it is being packaged with
PS> .\make\make_local.ps1
, - ensure that
PS> .\make\make_local.ps1
finish successfuly, - update README.MD if necesarry,
- make a pull request.
To see more details, please visit the Wiki page of the project.