feat(observability): add phase9 health, readiness, metrics, request tracing, and simulator ops checks

This commit is contained in:
2026-01-25 10:00:00 +00:00
parent f6d66c3650
commit 2580719e03
5 changed files with 134 additions and 0 deletions

View File

@@ -705,6 +705,46 @@
}
});
const opsPanel = document.createElement('section');
opsPanel.className = 'panel';
opsPanel.style.marginTop = '16px';
opsPanel.innerHTML = `
<h2>Ops Checks</h2>
<div class="row">
<button id="checkLiveBtn" class="alt">GET /ops/live</button>
<button id="checkReadyBtn" class="alt">GET /ops/ready</button>
</div>
<button id="checkMetricsBtn" class="alt">GET /ops/metrics</button>
`;
document.querySelector('.page').appendChild(opsPanel);
$('checkLiveBtn').addEventListener('click', async () => {
try {
const payload = await authFetch('/ops/live');
log('ops live', payload);
} catch (error) {
log('ops live failed', { error: error.message });
}
});
$('checkReadyBtn').addEventListener('click', async () => {
try {
const payload = await authFetch('/ops/ready');
log('ops ready', payload);
} catch (error) {
log('ops ready failed', { error: error.message });
}
});
$('checkMetricsBtn').addEventListener('click', async () => {
try {
const payload = await authFetch('/ops/metrics');
log('ops metrics', payload);
} catch (error) {
log('ops metrics failed', { error: error.message });
}
});
render();
</script>
</body>