Temporal.io is a durable execution platform for long-running workflows. When Temporal goes down, your business logic stops — orders don't process, emails don't send, data pipelines halt. While Temporal has built-in visibility tools, you still need external uptime monitoring. Here's how to monitor Temporal with Vigilmon.
Temporal Architecture: What to Monitor
A Temporal deployment has multiple components:
- Temporal Server — the core service (frontend, history, matching, worker services)
- Web UI — the Temporal dashboard (default port 8080)
- Your Worker processes — your application code that executes workflows
- Persistence — Cassandra or PostgreSQL backend
Monitoring priorities:
- Critical: Temporal frontend service (gRPC port 7233 or HTTP health)
- Important: Your worker processes
- Nice to have: Web UI
Health Check Endpoints
Temporal exposes HTTP health checks on the frontend service:
# Temporal server health (returns "SERVING" or similar)
curl http://temporal-frontend:7233/api/v1/cluster/health
# Or via the Temporal CLI
temporal operator cluster health
For HTTP-based monitoring (what Vigilmon uses), use the cluster info endpoint:
GET http://your-temporal-host:7233/api/v1/cluster/info
This returns cluster metadata and a 200 status if healthy.
Adding an HTTP Health Wrapper
If your Temporal frontend isn't directly accessible via HTTP (common in private networks), add a thin health service alongside your workers:
// healthServer.ts
import express from 'express'
import { Connection } from '@temporalio/client'
const app = express()
app.get('/health', async (req, res) => {
try {
const connection = await Connection.connect({
address: process.env.TEMPORAL_ADDRESS || 'localhost:7233',
})
// Attempt to describe the default namespace
const client = connection.workflowService
await client.describeNamespace({ namespace: 'default' })
res.json({ status: 'ok', temporal: 'connected' })
} catch (err) {
res.status(503).json({ status: 'error', message: String(err) })
}
})
app.listen(8090, () => console.log('Health server on :8090'))
Deploy this alongside your workers and point Vigilmon at http://your-worker-host:8090/health.
Monitoring Temporal Cloud
If you're using Temporal Cloud instead of self-hosting, you don't need to monitor the server itself (Temporal SLA covers that). Focus on monitoring your workers:
// Worker health check
app.get('/health', async (req, res) => {
// Check if worker is registered and processing
if (worker.getState() === 'RUNNING') {
res.json({ status: 'ok' })
} else {
res.status(503).json({ status: 'degraded', state: worker.getState() })
}
})
Setting Up Vigilmon
Sign up at vigilmon.online (free tier: 5 monitors)
Create a monitor for your Temporal health endpoint:
| Setting | Value |
|---|---|
| URL | http://your-temporal-host:8090/health |
| Method | GET |
| Interval | 60 seconds |
| Expected status | 200 |
| Keyword | ok |
- Optionally add the Temporal Web UI as a second monitor:
URL: http://your-temporal-host:8080
Expected status: 200
What Breaks When Temporal Goes Down
Immediately:
- New workflow executions can't start
- Signal and query RPCs fail
- Activity schedules pause
Within seconds-to-minutes:
- In-flight workflows pause (they resume when Temporal comes back — that's the durability guarantee)
- Worker SDK reconnect attempts fail, filling logs with errors
Business impact (depending on your use case):
- Order processing halts
- Background jobs stop
- Email/notification pipelines freeze
- Data sync workflows pause
Alerting Strategy
For Temporal production:
- PagerDuty/on-call: if your workflows are business-critical
- Slack webhook: for engineering teams
- Email: for smaller setups
Vigilmon supports email alerts (free) and webhooks (for Slack, Discord, or custom HTTP endpoints).
Checking Workflow Backlog
Temporal Web UI shows workflow backlog — but only if the server is up. For proactive monitoring of workflow lag, use Temporal's SDK to export metrics (Prometheus endpoint) and alert on:
-
temporal_workflow_task_schedule_to_start_latency— queue wait time -
temporal_activity_schedule_to_start_latency— activity lag
Vigilmon handles uptime; Temporal's built-in metrics handle performance. Both are necessary.
Summary
Temporal monitoring with Vigilmon:
- Expose an HTTP health endpoint from your workers (or use Temporal's built-in API endpoint)
- Create a Vigilmon monitor pointing at it
- Set up email or webhook alert
- Know within 60 seconds if your workflow engine is down
Top comments (0)