Observe your services easily with this Website (via a docker image) and simple customization of your own services which you wish to observe. Update your "health" endpoints to return a specific schema which can then showcase the health AND state of the various services in your organisation.
How is this different to all the many other 'health' dashboards like NewRelic, DataDog, Splunk, App Insights, etc?
This exposes your own service meta-data in an easy to read dashboard - not just if it's 'healthy' or 'unresponsive'.
The Docker image ships with an empty configuration. You need to provide your own configuration by volume-mounting a file.
# Pull the image
docker pull simple-observatory/dashboard:latest
# Run with volume-mounted configuration
docker run -d \
-p 8080:8080 \
-v $(pwd)/dashboard-config.json:/app/dashboard-config.json \
--name observability-dashboard \
simple-observatory/dashboard:latestNote: The Docker image does not include sample services. Sample services are only available when running locally in Development mode for testing purposes.
Access the dashboard at http://localhost:8080
When running locally in Development mode, the dashboard includes sample services for testing:
# Clone the repository
git clone https://github.com/PureKrome/SimpleObservability.git
cd SimpleObservability
# (Optional - run sample service for testing)
docker compose up
# Run the WebAPI
cd code/WebApi/WorldDomination.SimpleObservability.Dashboard
dotnet runNote: Sample services are automatically loaded from
dashboardsettings.Development.jsonwhen running in Development mode. This file is excluded from Docker builds.
Access the dashboard at http://localhost:5000
The easiest way to configure the dashboard is through the built-in settings interface:
- Navigate to the dashboard homepage
- Click the βοΈ Settings link in the header
- Use the tab navigation to switch between:
- System Settings: Configure system-wide settings and manage services
- Raw Configuration (Advanced): Bulk import/export via JSON editor
Configure system-wide settings and manage individual services:
-
System Configuration:
- Default Timeout: Set the default timeout for health check requests (in seconds)
- Refresh Interval: Configure how often the dashboard auto-refreshes
- Environment Display Order: Define the order in which environments appear (drag and drop to reorder)
-
Service Management:
- Add New Service: Click "+ Add New Service" to add a service
- Edit Service: Click "Edit" on any service to modify its settings
- Delete Service: Click "Delete" to remove a service
- Service-Specific Timeout: Optionally override the system timeout for individual services
Note: Currently, configuration changes are stored in-memory only. Persisting changes to file will be implemented in a future update.
You can define the display order of environments in the dashboard:
- Add environments to the order list (e.g., DEV, UAT, PROD)
- Drag and drop to reorder them
- Environments not in the list will appear last, sorted alphabetically
- This is useful for ensuring production environments always appear in a consistent position
For advanced users or bulk operations, switch to the Raw Configuration (Advanced) tab:
- The JSON format matches the
dashboardsettings.jsonfile structure - You can:
- View the entire configuration as formatted JSON
- Copy the entire configuration to use in another environment
- Paste in a pre-configured JSON to quickly set up multiple services
- Make bulk changes more efficiently than through the UI forms
- Click Save JSON Configuration to apply changes immediately
- All changes update the in-memory configuration instantly
Available Actions:
- πΎ Save JSON Configuration: Validates and saves changes to in-memory configuration
- β» Reload from Server: Refreshes the editor with the current server configuration
- π Copy to Clipboard: One-click copy of the entire configuration
Example JSON format:
{
"Dashboard": {
"services": [
{
"name": "My Service",
"environment": "DEV",
"healthCheckUrl": "http://localhost:5001/healthz",
"description": "Development instance",
"enabled": true
}
],
"refreshIntervalSeconds": 30,
"timeoutSeconds": 5,
"environmentOrder": ["PROD", "UAT", "DEV"]
}
}Create a dashboard-config.json file:
{
"services": [
{
"name": "Payment API",
"environment": "PROD",
"healthCheckUrl": "https://payment-api.example.com/healthz",
"description": "Handles payment processing",
"enabled": true,
"timeoutSeconds": 10
},
{
"name": "User Service",
"environment": "PROD",
"healthCheckUrl": "https://user-service.example.com/healthz",
"description": "User authentication and management",
"enabled": true
}
],
"refreshIntervalSeconds": 30,
"timeoutSeconds": 5,
"environmentOrder": ["DEV", "UAT", "PROD"]
}| Field | Type | Description | Default |
|---|---|---|---|
services |
array | Service endpoints to monitor | [] |
refreshIntervalSeconds |
number | Dashboard auto-refresh interval | 30 |
timeoutSeconds |
number | Default timeout for health check requests | 5 |
environmentOrder |
array | Optional ordered list of environment names | null |
Note: The environments field is automatically computed from the unique environment values in the services list and ordered according to environmentOrder if specified.
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | β | Display name for the service |
environment |
string | β | Which environment row this service appears in |
healthCheckUrl |
string | β | Full URL to the health check endpoint |
description |
string | β | Optional description |
enabled |
boolean | β | Whether to monitor this service (default: true) |
timeoutSeconds |
number | β | Service-specific timeout override (uses system default if not set) |
To integrate your services with Simple Observability, implement a health check endpoint that returns the expected JSON schema.
| Language | Repository | Status |
|---|---|---|
| C# / .NET | SimpleObservability.Client.DotNet | β Available |
| Node.js | Coming soon | π§ Planned |
| Python | Coming soon | π§ Planned |
| Go | Coming soon | π§ Planned |
| Java | Coming soon | π§ Planned |
Implement an endpoint (e.g. GET /healthz) that returns JSON using camelCase property names:
{
"serviceName": "My Service",
"version": "1.0.0",
"environment": "Production",
"status": "healthy",
"timestamp": "2024-01-15T10:30:00Z"
}See SCHEMA.md for complete schema documentation.
Simple Observability uses a dual-license model:
β
FREE for open source projects, students, non-profits, charities, and small businesses (<250 employees or <$1M revenue)
πΌ Commercial License required for larger organisations
π View License Details | π° View Pricing
- π― Simple Setup: Just configure your service endpoints and go
- π³ Docker Ready: Designed to run as a container with volume-mounted configuration
- π Multi-Environment: Display services across DEV, UAT, PROD, or custom environments
- π Real-time Monitoring: Auto-refreshing dashboard shows service health at a glance
- π§ Flexible Schema: Standard health check format that works with any technology stack
- π¦ NuGet Package: Easy-to-use library for .NET services (other languages supported via JSON)
- βοΈ Settings UI: Manage configuration directly from the web interface
- π JSON Editor: Bulk import/export configuration with raw JSON editing support
