Service Health Dashboard
A web dashboard for real-time monitoring of Microsoft 365 service health, active incidents and service degradations — without manually opening the Admin Center.
What it does
A web dashboard that shows, in real time, the status of every Microsoft 365 service in the tenant — Exchange Online, Teams, SharePoint, Entra ID and more — with active incidents, their severity, duration and every update published by Microsoft. Designed for M365 sysadmins who want a centralised operational view without opening the Admin Center.
Architecture
Browser (index.html)
│ fetch /api/GetServiceHealth?code=<key>
▼
Azure Function (PowerShell HTTP Trigger)
│ OAuth2 Client Credentials → access_token
▼
Microsoft Graph API
├── /admin/serviceAnnouncement/healthOverviews
└── /admin/serviceAnnouncement/issues
▼
JSON → Browser → rendering dashboard
The back end is a PowerShell Azure Function acting as an authenticated proxy to Graph API. The front end is a single HTML file with no npm dependencies or frameworks, deployed to Azure Static Web Apps (Free plan).
Key features
- Service grid with live status (Operational / Degraded / Outage)
- Active incidents with severity, classification (Incident / Advisory), duration and affected workloads
- Update timeline for each incident
- Search and filters by service, status and classification
- Visual age bar for each incident (progressive green → red)
- Dark/Light mode with the preference saved in localStorage
- Skeleton loading while data is being fetched
Tech stack
- Azure Function (PowerShell 7.4) — authenticated proxy, OAuth2 Client Credentials flow
- Microsoft Graph API —
ServiceHealth.Read.All,ServiceMessage.Read.All - Azure Static Web Apps — front-end hosting with automatic deployment from GitHub Actions
- HTML/CSS/JS vanilla — zero front-end dependencies
- Entra ID App Registration — app-only authentication with no interactive user