Monitoring
Aveloxis includes a built-in web dashboard and REST API for monitoring collection progress.
Dashboard
URL and configuration
The monitoring dashboard is served by aveloxis serve at the address specified by the --monitor flag:
# Default: http://localhost:5555
aveloxis serve --monitor :5555
# Custom port
aveloxis serve --monitor :8082
# Bind to all interfaces (for remote access)
aveloxis serve --monitor 0.0.0.0:5555
Open your browser to http://localhost:5555 (or your configured address).
The dashboard auto-refreshes every 10 seconds.
Queue statistics
The top of the dashboard shows aggregate queue statistics:
Metric |
Description |
|---|---|
Total |
Total number of repos in the queue |
Queued |
Repos waiting to be collected |
Collecting |
Repos currently being collected by a worker |
Repo status table
Below the statistics, a paginated table shows the queue ordered by
collecting first, then queued, then priority and due date.
Column |
Description |
|---|---|
Repo |
Repository owner/name |
Status |
Current status: |
Priority |
Queue priority (lower = collected sooner) |
Due Time |
When the repo is next eligible for collection |
Last Run |
Results of the most recent collection (entity counts, errors) |
Actions |
Boost button to push the repo to the front |
Search and pagination (v0.18.6)
The dashboard supports a search box and per-page selector above the table, and Prev/Next controls below it. Query parameters:
Parameter |
Default |
Notes |
|---|---|---|
|
|
1-based page number |
|
|
Rows per page; capped at |
|
(empty) |
Case-insensitive substring match on |
Example: http://localhost:5555/?q=apache&page_size=200&page=2.
Before v0.18.6 the dashboard rendered every row on a single page and
issued one SELECT per row to look up repo metadata (N+1). On large
fleets that combination (1) made the page slow to render during active
collection and (2) competed with collection workers for pgx pool
connections. The dashboard now issues three queries total per refresh
(QueueStats, ListQueuePage, and a batched GetReposBatch +
GetRepoStatsBatch), regardless of fleet size.
REST API endpoints
The monitoring server exposes a REST API for programmatic access.
GET /api/queue
Returns the full queue state as JSON.
curl http://localhost:5555/api/queue
Response:
[
{
"repo_id": 42,
"repo_git": "https://github.com/chaoss/augur",
"status": "collecting",
"priority": 100,
"due_at": "2026-04-05T12:00:00Z",
"last_collected_at": "2026-04-04T12:00:00Z"
},
...
]
GET /api/stats
Returns aggregate queue statistics.
curl http://localhost:5555/api/stats
Response:
{
"queued": 150,
"collecting": 4,
"total": 200
}
POST /api/prioritize/{repoID}
Pushes a repo to the top of the queue by its repo_id.
curl -X POST http://localhost:5555/api/prioritize/42
Returns 200 on success.
Log output
Aveloxis logs to standard output. The verbosity is controlled by the log_level setting in aveloxis.json.
INFO level (default)
At the default INFO level, you see per-repo progress:
INFO starting collection for chaoss/augur (repo_id=42)
INFO prelim: URL OK, no redirect
INFO phase1: staged 234 issues, 189 PRs, 1042 events, 523 messages
INFO phase2: processed 234 issues, 189 PRs, 1042 events, 523 messages
INFO phase3: facade: 15234 commits from git log
INFO phase4: resolved 892/1204 commit authors
INFO phase5: enriched 45 contributor emails
INFO phase6: analysis: 312 dependencies, 287 libyear entries, 1523 repo_labor rows
INFO completed chaoss/augur in 2m34s
DEBUG level
At DEBUG level, you see individual API calls, staging writes, contributor resolution details, and SQL operations. Useful for troubleshooting but very verbose.
Where logs go
Logs are written to standard output (stdout). To save logs to a file:
aveloxis serve --monitor :5555 2>&1 | tee aveloxis.log
Or redirect:
aveloxis serve --monitor :5555 > aveloxis.log 2>&1 &
For production deployments, consider using a process manager like systemd that captures output automatically:
# /etc/systemd/system/aveloxis.service
[Unit]
Description=Aveloxis Collection Service
After=postgresql.service
[Service]
Type=simple
User=aveloxis
WorkingDirectory=/opt/aveloxis
ExecStart=/usr/local/bin/aveloxis serve --workers 4 --monitor :5555
ExecStop=/usr/local/bin/aveloxis stop
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
Logs can then be viewed with:
journalctl -u aveloxis -f
Checking status via psql
You can also query the queue directly in PostgreSQL:
-- Queue summary
SELECT status, COUNT(*)
FROM aveloxis_ops.collection_queue
GROUP BY status;
-- Currently collecting
SELECT q.repo_id, r.repo_owner, r.repo_name, q.locked_at
FROM aveloxis_ops.collection_queue q
JOIN aveloxis_data.repos r ON r.repo_id = q.repo_id
WHERE q.status = 'collecting';
-- Repos with errors
SELECT q.repo_id, r.repo_owner, r.repo_name, q.last_error
FROM aveloxis_ops.collection_queue q
JOIN aveloxis_data.repos r ON r.repo_id = q.repo_id
WHERE q.last_error IS NOT NULL AND q.last_error != '';
-- Staging table size (should be near 0 when not collecting)
SELECT COUNT(*) AS staged_rows
FROM aveloxis_ops.staging;
Next steps
Scaling – worker count and throughput tuning
Troubleshooting – diagnosing common issues
Commands Reference – CLI command details