Summary
Expose extension health status as a metric that can be monitored in dashboards. Allows operators to quickly see if extensions are healthy across a fleet of VS installations.
Proposed API
// Report health status
VsixTelemetry.ReportHealth(HealthStatus.Healthy);
VsixTelemetry.ReportHealth(HealthStatus.Degraded, "Cache connection slow");
VsixTelemetry.ReportHealth(HealthStatus.Unhealthy, "Database unreachable");
// Or with a health check function
VsixTelemetry.RegisterHealthCheck("database", () =>
{
return database.IsConnected
? HealthCheckResult.Healthy()
: HealthCheckResult.Unhealthy("Connection lost");
});
// Periodic health reporting (background)
VsixTelemetry.EnablePeriodicHealthReporting(interval: TimeSpan.FromMinutes(1));
Metrics Emitted
vs.extension.health.status (gauge: 0=unhealthy, 1=degraded, 2=healthy)
vs.extension.health.check.duration (histogram per check)
vs.extension.health.check.failures (counter)
Benefits
- Quick visibility into extension health
- Enables alerting on degraded status
- Useful for monitoring dashboards
- Follows ASP.NET Core health check patterns
Summary
Expose extension health status as a metric that can be monitored in dashboards. Allows operators to quickly see if extensions are healthy across a fleet of VS installations.
Proposed API
Metrics Emitted
vs.extension.health.status(gauge: 0=unhealthy, 1=degraded, 2=healthy)vs.extension.health.check.duration(histogram per check)vs.extension.health.check.failures(counter)Benefits