Lunary is the open source LLM observability and analytics platform that tracks LLM calls, costs, latency, errors, user feedback, and conversation threads across providers like OpenAI and Anthropic. Teams use it for prompt management, A/B testing, and evaluations — all without sending sensitive production data to a third-party SaaS. Because Lunary sits in the critical path of every LLM call your application makes, its health directly affects your ability to detect regressions, debug cost spikes, and close the feedback loop on prompt quality. Vigilmon gives you uptime monitoring for every layer of the Lunary stack.
What You'll Set Up
- Web dashboard server availability monitor (port 3333)
- PostgreSQL database connectivity check
- LLM trace ingestion API health check
- Conversation thread API health check
- User authentication service health check
- Webhook delivery health monitoring
- SSL/TLS certificate expiry monitoring
Prerequisites
- Lunary server running and accessible (default port
3333) - PostgreSQL running as the primary data store
- A free Vigilmon account
Step 1: Monitor the Web Application Server
Lunary's Node.js HTTP server at port 3333 serves the dashboard and exposes all API endpoints. If it stops, your team loses visibility into LLM costs and errors, and SDK clients cannot ingest new traces.
- Log in to vigilmon.online and click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter the Lunary health endpoint:
http://your-lunary-host:3333/api/health - Set Check interval to
1 minute. - Set Expected HTTP status to
200. - Click Save.
If Lunary does not expose a /api/health route in your version, use http://your-lunary-host:3333 and check for a 200 or 301 response from the dashboard root.
Step 2: Monitor PostgreSQL Database Connectivity
PostgreSQL stores all LLM traces, conversations, feedback, costs, and analytics data. It is the single source of truth for every metric in the Lunary dashboard. A database outage means no new traces are persisted and historical analytics become stale.
Add a TCP monitor to confirm PostgreSQL is accepting connections:
- Click Add Monitor → TCP Port.
- Enter your PostgreSQL host and port:
your-pg-host:5432. - Set Check interval to
1 minute. - Click Save.
For an application-level connectivity check, create a lightweight health endpoint in your Lunary deployment that runs a SELECT 1 query and returns 200/503 accordingly. Then add an HTTP monitor pointing to that endpoint.
Step 3: Monitor the LLM Trace Ingestion API
The trace ingestion endpoint (POST /v1/runs) is the OpenTelemetry-compatible endpoint that receives LLM call traces from SDK clients. If this endpoint goes down, all production LLM monitoring stops — traces are dropped and cost, latency, and error data goes missing until the endpoint recovers.
Because POST endpoints cannot be safely probed without a body, use a HEAD or GET probe on the API base:
- Click Add Monitor → HTTP / HTTPS.
- Enter:
http://your-lunary-host:3333/v1/runs - Set Method to
GET. - Set Expected HTTP status to
405(Method Not Allowed is acceptable — it proves the route is alive and the server is routing correctly). - Alternatively, if your Lunary version returns
200on GET, use that. - Set Check interval to
1 minute. - Click Save.
Step 4: Monitor the Conversation Thread API
The conversation history endpoint (GET /v1/conversations) provides conversation analytics and lets teams audit multi-turn LLM interactions. Degradation here affects your ability to investigate user complaints and track conversation-level metrics.
- Click Add Monitor → HTTP / HTTPS.
- Enter:
http://your-lunary-host:3333/v1/conversations - Under Request Headers, add
Authorization: Bearer YOUR_API_KEY. - Set Expected HTTP status to
200. - Set Check interval to
5 minutes. - Click Save.
Step 5: Monitor the User Authentication Service
The JWT login endpoint validates that authentication is working. If token issuance fails, dashboard users are locked out and API clients using short-lived tokens cannot refresh their credentials.
- Click Add Monitor → HTTP / HTTPS.
- Enter:
http://your-lunary-host:3333/api/auth/session - Set Expected HTTP status to
200or401(either proves the auth layer is responding). - Set Check interval to
5 minutes. - Click Save.
Step 6: Monitor Redis Connectivity (If Configured)
If you've configured Redis for caching or pub/sub (for example, for real-time dashboard updates or rate limiting), add a TCP monitor:
- Click Add Monitor → TCP Port.
- Enter your Redis host and port:
your-redis-host:6379. - Set Check interval to
1 minute. - Click Save.
A Redis outage may cause degraded dashboard performance or failed cache reads without an obvious error in the Lunary UI.
Step 7: Monitor Webhook Delivery Health
Lunary can send alerts to external services via webhooks. Webhook delivery failures are silent by default — the webhook fires, an upstream service rejects it, and no alert reaches your team. Use Vigilmon's webhook monitoring to validate your receiving endpoint is up:
- Add an HTTP monitor for each webhook target endpoint that Lunary delivers to.
- Set Expected HTTP status to
200. - Set Check interval to
5 minutes.
For end-to-end webhook health, configure a Lunary webhook to POST to Vigilmon's webhook endpoint — then create a Vigilmon heartbeat that expects a ping on every webhook event cycle. If Lunary stops firing webhooks, Vigilmon alerts.
Step 8: SSL/TLS Certificate Expiry Monitoring
If Lunary is served over HTTPS (required for any deployment that handles production LLM data), add a certificate expiry check:
- Open the HTTP monitor you created in Step 1.
- Update the URL to
https://your-lunary-host/api/health. - Enable Monitor SSL certificate.
- Set Alert when certificate expires in less than
21 days. - Click Save.
Step 9: Configure Alert Channels
- Go to Alert Channels in Vigilmon and add Slack, email, or a webhook.
- Set Consecutive failures before alert to
2on the web server and conversation API monitors — brief Node.js restarts or deploys should not page your on-call. - Set alert threshold to
1for PostgreSQL and the trace ingestion API — these are critical paths where any downtime means data loss.
Summary
| Monitor | Target | What It Catches |
|---|---|---|
| Web server | :3333/api/health | Lunary process crash or restart |
| PostgreSQL TCP | :5432 | Database unreachable |
| Trace ingestion | POST /v1/runs route | Trace ingest endpoint down |
| Conversations API | /v1/conversations | Analytics API degradation |
| Auth service | /api/auth/session | Authentication layer failure |
| Redis TCP | :6379 | Cache/pub-sub outage |
| Webhook target | Webhook receiver URL | Webhook delivery silently broken |
| SSL certificate | HTTPS endpoint | Certificate near expiry |
Lunary is your production window into what your LLM applications are doing — costs, errors, latency, and user feedback all flow through it. An unmonitored Lunary deployment means you're flying blind: spending on tokens you can't account for, missing errors your users are hitting, and losing the feedback data that improves your prompts. With Vigilmon watching every layer of the stack, you'll know about problems before your LLM billing report does.