Secure channel unavailable

Requests to this console are end-to-end encrypted; it will not start without the channel. Use HTTPS or localhost.

Metrics Console

Live and historical metrics for the Haveloc backend services.

First sign-in? Leave the code blank — you will enrol your authenticator next.

Enrol authenticator

Scan the code with Google Authenticator, 1Password, Authy…

Or enter the secret manually:

Wrong code — try again.

h haveloc
metrics
Executive
Operations
Performance
Infrastructure
Observability
Support

Flow map

– history: …
Haveloc, at a glance
Business outcomes, platform health and money — one page, read top to bottom.

Placement pipeline

Eligible → applied → offered on the jobs posted in the window; conversion at every step.

Needs attention

Everything on the platform that wants a decision today — services, alerts, findings, idle accounts, money in transit, queues. Each line opens the page that explains it.
✓

Nothing needs attention

Services healthy, no alerts, no idle accounts, no backlog.

Jobs posted & offers per period

Demand from companies and outcomes for students, bucket by bucket.

Collections & platform revenue

College payments collected and Haveloc's share of the vendor charge, per period.
Payments analytics is not available on this backend.

Top tenants by jobs posted

Where the hiring activity is. A row opens the tenant.

Top tenants by platform revenue

Who pays for the platform. A row opens the tenant.

Top companies by offers

The employers converting most applications into offers.

Who is online

Distinct signed-in users with an authenticated call, sampled by the console.

Engagement — chat & surveys

How much the platform is used beyond placements, in the same window.
Chat and survey analytics are not reachable from this console.

Payments

College payments taken on this tenant's placement cycles in the window, and what they earned the platform.
No payments in this window.

Users & engagement

Sessions, sign-ins, chat and survey activity for this tenant.

All tenants

Ranked for the window — a row opens that tenant's 360 view.

Trace a request

Paste the X-HLC-Request-Id from a user's error screen or a response header — every service's record of it, with call graph and logs.

Find a user

What this user did, on which app, and what failed — the activity stream filtered to them.

Open a tenant

The tenant's 360 view: placements, users online, payments, chat and surveys.

What is failing right now

Active alerts across services and infrastructure — click one to open it.
✓

Nothing is firing

Recent exceptions — all services (15m)

Deduplicated by exception and failing frame; a row opens the service dashboard.
ExceptionServiceCountLast
No exceptions in the last 15 minutes.

Runbook shortcuts

The questions support asks most, each one a saved view.
hHaveloc operations

Services

Requests per second — last 30 minutes

Alerts

✓

Nothing is firing

Infrastructure & people

Targets (30-day window)

Daily error rate — 30 days

5xx share per day per service; the dashed rule is the success-rate target's allowance.

Daily p95 latency — 30 days

p95 per day per service against the latency target.

SLO summary

Budget consumed is how much of the allowed failure this month is already spent; burn rate above 1× means the budget will run out before the window ends.
ServiceAvailability 30dBudget usedSuccess 30dBudget usedBurn 24hp95 24hRequests 30dStatus
No traffic history yet — SLOs need the history store (Elasticsearch) or at least a few hours of live data.
Live topology — ring colour is health (alerts + error rate), edge weight is throughput. Click a service to open its dashboard.

Active alerts

Drag across any chart to zoom into that window · markers show restarts, alerts and notes · click a legend entry to hide a line.

Load — calls per minute

Response time

Errors (5xx)

Latency heatmap

request density per latency band over time

Call graphs — where the time goes

Sampled, slow-endpoint and failing-endpoint transaction traces: controller → service → repository, method by method. Click a row to expand.
Time Endpoint Duration Kind Status Request
No traces captured in this window — tracing samples ~10% of requests plus endpoints that recently ran slow.

Background work — scheduled jobs & queue consumers

Timings of @Scheduled methods and RabbitMQ listeners in this window — the traffic the HTTP charts never see.
Kind Name Runs Runs/min Avg Max Errors
No background work recorded in this window.

Recent exceptions

Deduplicated by exception + failing frame; click a row for the stack and request ids.
Exception Endpoint Status Count Last seen
No exceptions captured in this window.

Top endpoints

EndpointCallsAvgp955xx

Slowest calls

TimeEndpointDurationStatusRequest

Who is online

Distinct signed-in users with an authenticated API call in the last few minutes, across every Haveloc app (portal, mobile app, Haveloc Messages) — read from the session table, sampled by this console every 30 seconds. Open the Users report →

Requests per second — all services, last 30 minutes

5xx responses count as errors; hover for exact values.

Alerts

Threshold breaches across all services; recently resolved shown muted.

Availability

Share of expected 15-second heartbeats each service actually delivered — the console's own uptime measurement.
Service Now 3h 24h 7d 30d
Uptime unavailable.

Most-called endpoints — all services (15m)

EndpointServiceCallsAvgp955xx

Slowest endpoints — all services (15m)

EndpointServicep95p99Calls

Recent exceptions — all services (15m)

ExceptionServiceCountLast

Slowest individual calls — all services (15m)

Endpoint Service Duration When Request

Event timeline

Restarts, alert transitions and first-seen exceptions — what changed, in order.
No events in the last 24 hours.

Console self-health

The monitor, monitored — ingest pipeline, history writer, state persistence and the collector fleet.
ServiceInstance CollectorShippedFailedLast seen
No snapshots received yet. Start a service with hlc.monitoring.enabled=true pointing at this console.
✓

All quiet

Every service is inside its normal envelope — error rates, latency, heap, disk and threads all look healthy over the last hour.

⌕
to

Jobs posted & colleges posting

Distinct jobs by posted date (published, else created) and how many tenants posted.

Placement pipeline per period

Stacked: eligible → applied → offered for the jobs posted in each bucket.

Jobs by status

Where the posted jobs stand today.

Jobs by type

Full-time, internship and the rest.

Offers by CTC band

Offers with a recorded CTC on jobs posted in the window.

Funnel

Eligible → applied → offered, whole window.

Tenant growth & student loads

New tenants (first activity) and students loaded per period.

Top tenants by jobs posted

Click a bar to open the tenant.

Top companies by offers

Click a bar to open the company.

Who posted when — tenants × weeks

Jobs posted per week for the most active tenants over the last 13 weeks; click a cell to zoom into that week for that tenant.

Posting calendar

Jobs per day over the last 13 weeks — darker is busier; click a day to zoom into it.

Students by batch

Loaded vs registered per passed-out year, with the batch's placement funnel.

Communication & surveys

Chat messages and survey completions per period — usage beyond placements.

Trend

Each bucket against the same bucket a year earlier — the dashed ghost. Drag across the chart to zoom the whole page into that span.

Growth

Change against the previous bucket (bars) and against the same bucket a year earlier (line). Zero is the flat line.

Seasonality

Financial years down, months across — which months carry the year, and whether this one is on pace.

Year on year

Every financial year drawn over the same April–March axis, so this year's shape sits on last year's.

Cumulative

Running total within each financial year — the gap at today's date is the year-to-date lead or shortfall.

Period by period

Newest first. Δ prev is against the bucket before it, YoY against the same bucket a year earlier; share is of that bucket's financial year.

Tenant comparison

Side by side for the same window — bars are relative to the best value in each row.

Tenants end to end

Every tenant with its jobs, students, funnel, placements, chat and survey usage for the window — ☐ selects for comparison, a row opens the tenant.

Recent jobs

Companies hiring here

Colleges

Batches

Trend

Jobs, applications and offers for this tenant across the window.

Job mix

Status and type of the jobs this tenant received.

Branches

Students, registration and placement by branch.

Branch placement

Companies

Jobs posted in the window, colleges reached, the funnel, placements and CTC from offers — a row opens the company.

Hiring activity

Colleges reached

Where this company's jobs went and how each college converted.

Jobs

Jobs

Every job posted in the window that matches the filters, with its owner tenant, company, status and funnel.

Batch funnel

Per passed-out year: students, registered, eligible, applied, offered.

Registration

Registered vs not yet registered, all matching students.

Students by passed-out year

The money — every rupee a student paid to a college

Volume & rate

Collections & revenue over time

Collected from college payments, what the platform keeps and what settles to the college.

Where the money goes

Of every rupee collected: the college's settlement, the gateway's cut and the platform's share.

By financial quarter

April–March financial year. QoQ compares the previous quarter, YoY the same quarter a year earlier.

Two kinds of payment

College payments carry the fee and are the revenue source; student links record no fee and are reported on their own view.

Run rate & where the year lands

This financial year, projected

Months already collected as bars, the rest projected from the trend with a range around it.

Financial year on financial year

Each FY's collections drawn over the same April–March axis. The current year stops at the last month with money in it.

Momentum

Collections per month with the same month a year earlier as the ghost, and the three-month average as the solid line.

Unusual months

Months more than two standard deviations from the trailing mean — a spike worth explaining or a gap worth chasing.

Concentration

Tenants ranked by revenue with the running share — how much of the money rides on how few colleges.

Who started, who stopped

Against the same length of time before this window.

Tenants that have gone quiet

Colleges that paid in the comparison period and have not paid in this one, largest first — the revenue at risk. Click a row to open the tenant.

Fee integrity

What each tenant was actually charged against the configured vendor rate. A gap means the gateway recorded a different fee from the one this console models revenue on.

Settlement health

Collected money still sitting unsettled, by tenant. Anything old here is a college waiting to be paid.

Typical payment size

Colleges grouped by their average college payment — collections ÷ payments for each tenant. Per-payment amounts are not read, so this is the college's typical ticket, not a histogram of individual payments.

Month by month

Collections, platform revenue and settlement per month with MoM and YoY against the same month a year earlier.

Platform fee — what Haveloc earns on every college payment

Platform fee per period

Haveloc's share of the vendor charge, bucket by bucket, with the vendor charge and the gateway's cut behind it.

Recorded vs modelled

The fee the gateway actually recorded on the payments against what the configured rates say it should have been.

Fee rate by tenant

Effective vendor charge (fee ÷ collected) per tenant — the pricing exceptions, highest first. Click a bar to open the tenant.

Fee earned per payment

Tenants by platform fee per successful payment — where a single payment is worth most to Haveloc.

Top tenants by platform revenue

Click a bar to open the tenant.

By batch (passed-out year)

What each batch collected, and the platform's share of it.

Revenue by tenant

Collections, the vendor charge actually recorded, the platform's share and what settled to the college. Click a row to open the tenant.

Consolidated revenue

Haveloc's revenue from both payment kinds in one number: student payments (paid links, collected by Haveloc in full) plus the platform fee on college payments (Haveloc's share of the vendor charge; the rest settles to the college and the gateway). Financial years run April to March; "last year" is the same bucket one financial year earlier.

Revenue per period — against the same period last year

Financial year on financial year

Student payments and platform fee per financial year; the line is the total.

Cumulative within each financial year

Running total month by month, one line per financial year — the gap at the current month is the year-to-date lead or shortfall.

Seasonality — financial year × month

Total revenue per month of each financial year; the bright months are the season.

Revenue mix

Student payments against platform fee over the selected span.

Period by period

Every bucket: student revenue, platform fee, total, the fee's share, change on the previous bucket and on the same bucket last year, and the running total within its financial year.

Top tenants by consolidated revenue — this financial year

Student payments plus platform fee per tenant, financial year to date. Click a bar to open the tenant.

Student payments

Paid student links, counted by the date the link was generated.

Who contributes

Each tenant's share of what students paid in scope. Click a slice to open the tenant.

Year on year, by financial quarter

Student collections per April–March quarter (bars) against the same quarter a year earlier (dashed). Always dated by link generation, whatever the mode.

Quarter by quarter

QoQ compares the previous quarter, YoY the same quarter a year earlier — on student collections.

Student collections over time

What students paid in each bucket of the selected range.

By tenant

Share is of the collections in scope. Click a row to open the tenant.

By batch

Passed-out year on the payment row; links with no year group under —.

Paid links

The newest paid links in scope. No student names, roll numbers or contact details are read — the console shows the institution's fields, the amount and the link's dates.

Placement cycles & college-payment configuration

Which cycles have vendor payment enabled, on what terms, which batches paid, and what each collected. A cycle appears once money moved on it in the range, with its configuration as it stands now.

Online right now ↗ activity

Distinct users with an authenticated API call in the last few minutes, on any Haveloc app — from the session table, refreshed every 15 seconds regardless of the range above.

Who is online

Active users by app, by role and by device in the live window, and the busiest tenants right now — click a tenant to open it.

Tenants online now

Load history

Concurrent users across the window above, from the console's stored samples (survives restarts) — whole platform, not filtered by tenant.
No samples yet — the console records one every 30 seconds while the platform module is up.

Sign-ins per period

Sessions created (every successful sign-in on any app), the distinct users behind them, and users last seen, per bucket of the window.

Sign-ins by app and role

How the window's sign-ins split across the portal, the mobile app and Haveloc Messages, and who signed in.

Tenants — who is online and who signed in

Every tenant with a session in scope: users online now (5m / 15m / 1h / 24h), users signed in right now, sign-ins and distinct users in the window, last activity — a row opens the tenant.

Live message flow

Messages per minute right now — direct vs group — refreshed every 15 seconds regardless of the range above.

Who is chatting right now

Messages by tenant and by message type in the live window.

Messages & conversations per period

For the selected range: messages (direct vs in groups), senders and conversations created.

Most active tenants

Messages in the selected range — click to open the tenant.

Conversations created in the range

Every chat or group opened in the window with its tenant, creator, size and activity.

Top creators

Who opened the most groups and chats in the range.

Creators

Chat by tenant

Surveys, invites & completions per period

Completion by tenant

Completed responses in the window.

Surveys by tenant

Asks, people & failures per period

What people ask about

Asks by area, from the lookups each one ran.

Asks by hour of day

Who asks, how it ends, what is used

By role
Outcome
Assist features

Assist lookups: volume, failures and latency

Every tool the assistant called in the window. A failure is a refusal, a wrong argument or a service that did not answer.

Assist by tenant

Who uses it, by tokens

Every person who asked or rated in the window, heaviest first. Tokens are prompt + completion as the model provider reported them.

Recent activity

The latest 200 asks and approval decisions, newest first. No message text: what it was about, how it ended, what it cost.

Feedback

The latest 100 ratings, newest first. A comment has already been through the agent's privacy layer, so it names no student.

Active alerts

Everything firing right now. Click a row to open what is alerting; 🔕 silences it for an hour.
✓

Nothing is firing

Every built-in and custom rule is inside its threshold.

Silences

Muted alert types — suppressed fires are counted, resolves always pass through.
No silences active.

Custom rules

Thresholds you defined on top of the built-in rules.

Alert history

Every fire and resolve, newest first — how long each lasted and who was noisiest.
Fired Service Alert Severity Value Duration State
No alerts in this window.

Requests and latency over time for this endpoint.

Where the time goes

Self-time per internal method, aggregated over this endpoint's captured call graphs — the reason for the slowness, method by method.
No call graphs captured for this endpoint in this window — tracing samples ~10% of requests plus every slow or failing endpoint, so a busy endpoint fills this in within minutes.

Endpoints

Click a column to sort, a row to see its trend. Most-accessed first by default.
Endpoint Calls Calls/min 5xx 4xx Avg Min Max p50 p90 p95 p99
No traffic in this window.

Slowest individual calls

Captured requests ≥ the collector's slow threshold — exact call, exact time.
Time Endpoint Duration Status
No slow calls in this window.

Calls per second

Trailing request rate over every window at once — live 15s tick through the last 7 days.

Live tape — request rate & network volume

1-minute candles of requests/sec (open · high · low · close) with transferred bytes as volume; last 30 minutes, ticking every 5s.
history store (Elasticsearch)

Request volume

Errors (5xx)

Latency p95 (ms)

CPU

process vs system, share of all cores

Heap memory

Threads & in-flight requests

GC time per interval (ms)

delta of cumulative collection time

Connection pool, HTTP threads & executors

Where requests queue before they run: Hikari connections waiting, Tomcat threads busy, task-executor backlog and GC pauses.

Database connection pool

HTTP threads & executor backlog

This collector build does not ship pool/thread/GC-pause signals yet — rebuild the service with the latest models jar.

Memory footprint

The whole process, not just heap — off-heap leaks live in metaspace, direct buffers and native memory that heap charts never show.

Thread hotspots

Captured automatically when process CPU exceeds 80% — what the busiest threads were doing at that moment.
No high-CPU capture for this service — that's a good sign.

RabbitMQ …

Broker totals and per-queue backlog from the management API — backlogged or consumer-less queues are the pipeline's earliest warning.

Queue backlog (ready + unacked)

Message rates

Queue Ready Unacked Consumers Publish/s Deliver/s Actions
RabbitMQ unreachable or disabled.

Redis …

Live server stats over the wire protocol.

Memory

Operations / second

Redis unreachable or disabled.

PostgreSQL …

Connection slots, throughput, blocking and disk growth — one cheap read-only poll every 15s, ported from db-console.

Connections

Transactions / second

Database size

disk utilization over time

Blocked sessions

sessions waiting on a lock — sustained blocking fires the pgBlocked alert
PID State User Duration Wait Query Actions
No running queries right now.

Largest tables

total relation size with tuple health — dead tuples that never fall are an autovacuum problem.
Table Size Live Dead Last autovacuum
Collected within a minute of the first poll.

Maintenance & WAL backups

WAL archiving is the backup heartbeat — a stale "last archived" means backups are not flowing.
PostgreSQL unreachable or disabled.

External dependencies …

Reachability of every third party Haveloc talks to — mail, push, chat, AI. Any HTTP answer counts as up; only network failures mark a dependency down.

Round-trip latency

No dependency checks configured.

Runtime log levels

Change a service's log level live — delivered with its next snapshot (≤15s), applied in-process, and auto-reverted when the duration expires.

Application logs

Captured in-process (WARN/ERROR/INFO) and shipped with the metric snapshots — request ids link into the end-to-end waterfall; lines with a stack expand on click.
No log lines match this filter.
to

Who is working right now

Every signed-in user with an authenticated API call in the window — which app they are on, which services they touched and what they did last. A row opens the user.

Usage patterns

How the platform is being used by everyone who matches the filter: volume, distinct users and sessions, failures and speed per bucket — the shape of a normal day, and the day that is not normal.

When people work — weekday × hour

Requests by weekday and hour of day in your timezone; the brighter the cell, the busier the hour.

Response time everyone experienced

Average and p95 of the captured calls per bucket.

By app

Web portal, mobile app, Haveloc Messages.

By role

Who is generating the traffic.

Outcome mix

Status classes of the captured calls.

By service

Where the calls land, with distinct users and 5xx per service.

Busiest endpoints

What users actually do: the most-called endpoints with users, errors and average time.

Most active users

By calls in the window — a row opens the user.

Most active tenants

By calls in the window, with distinct users — a row opens the tenant.

User

Requests per bucket

By service

By app

Top endpoints

Live tail — everyone

Newest first. Request ids open the end-to-end waterfall; a username opens that user.

Email notifications

Alert emails ride the platform mail queue. Changes apply immediately — no restart.

Custom alert rules

Your own thresholds on any metric, evaluated every 15 seconds — the built-in error-rate, latency, heap, disk, down, traffic-drop and infrastructure alerts stay active either way.

Rule Condition Scope Severity Emails Status Actions
No custom rules yet — compose one above.

Operators

Role-based access: SUPERADMIN manages operators, ADMIN runs the console, VIEWER sees dashboards only. Every operator enrols their own authenticator at first sign-in.
Username Role Authenticator Status Created Actions

Add operator

They sign in with the temporary password and enrol their authenticator on first use.

Monitored services

Every service that has ever shipped a snapshot. Forget a decommissioned one to drop its buffers and stop its permanent "down" alert.
Service Status Last seen Actions

Audit trail

Every sign-in and administrative action — who, when, from where.
WhenOperator ActionDetailIP
No audit entries yet.
to

Matches over time — drag on the chart to zoom into a range

Results

Nothing matched this query in this window.

Build a chart

Compose any metric into a saved, live-updating chart — your own dashboard below.
Saved in this browser — charts refresh live every 5s.
No charts yet — compose one above.

Keyboard shortcuts

⌘ KJump to a page, service or saved search ?This help rRefresh now pPause / resume auto-refresh g mFlow map g oOverview g iInsights g aAlerts g pAPIs g tTraffic g eExplore g rRuntime g fInfra g lLogs g uActivity (user activity) g bPlatform (business analytics) [  ]Previous / next service dashboard ← →Shift the service window back / forward 1 – 5Service range 15m · 1h · 3h · 24h · 7d /Focus the Explore search EscClose panels, back from a service

Every view is a link — the address bar carries the page, service, range and query, so a URL pasted into chat opens exactly what you see.

Request

Everything every service recorded about this request id — the end-to-end path.