VitalPBX has quietly become one of the best Asterisk-based PBX platforms on the market. Modern UI, unlimited extensions, solid call center features out of the box. But when it comes to analytics and real-time monitoring? That's where most VitalPBX deployments fall short.
Here's the problem: VitalPBX's built-in analytics (Sonata Stats) is only available on the Call Center plan at $200/month. If you're running the Community (free) or Enterprise ($100/month) plan, you're flying blind. No queue reports. No agent performance data. No way to know if your call center is drowning or thriving.
This guide covers everything you need to know about monitoring a VitalPBX call center — from what's built in, to what's missing, to how you can add real-time analytics without upgrading to the $200/month plan.
What VitalPBX Gives You Out of the Box
VitalPBX ships with solid call center fundamentals. Queues with ACD (Automatic Call Distribution), agent management, hot desking for shift-based teams, and supervision codes for managers who need to listen in on calls.
The core PBX handles call routing well. Ring strategies (ringall, leastrecent, fewestcalls, random, rrmemory), queue priorities, announcements, and callback options all work as expected. For basic inbound call center operations, VitalPBX delivers.
But "delivers" and "gives you visibility into what's happening" are two different things.
The Sonata Suite: VitalPBX's Commercial Add-Ons
VitalPBX offers the Sonata Suite as their premium analytics and management layer. It includes five modules:
Sonata Switchboard — Real-time call monitoring panel. See active calls, drag-and-drop transfers, listen/whisper/barge. Available on Enterprise plan ($100/month) and above.
Sonata Stats — Historical reporting. Queue reports, agent reports, lost calls, service level analysis. Only available on Call Center ($200/month) and Multi-Tenant ($250/month) plans.
Sonata Recordings — Call recording management with reference numbers, flags, notes, and ratings. Available on Enterprise ($100/month) and above.
Sonata Dialer — Outbound campaign management. Only on Call Center ($200/month) and above.
Sonata Billing — Cost tracking and billing reports. Available on Enterprise ($100/month) and above.
Notice the gap? The one module most call centers desperately need — Stats — is locked behind the most expensive plans. If you're running 10-15 agents on the Enterprise plan, you're paying $100/month for your PBX but have zero visibility into queue performance.
Where VitalPBX Analytics Falls Short
I've deployed analytics on dozens of Asterisk-based PBX systems, including VitalPBX. Here are the gaps that consistently frustrate call center managers.
No Real-Time Queue Dashboard
Sonata Switchboard shows active calls. That's useful for supervisors who need to intervene on specific calls. But it's not a queue analytics dashboard.
You can't see: current queue depth over time, average wait time trending up, service level dropping, or agents about to hit burnout-level occupancy. You're reacting to individual calls instead of managing queue health.
Real-time dashboards are the difference between "we had a bad day" and "we caught the problem at 10:15 AM and fixed staffing before it got worse." Without one, your supervisors are always 30 minutes behind.
Historical Reports Only (No Real-Time Analytics)
Sonata Stats generates reports. You pick a date range, select your queues and agents, and get a PDF or CSV. This is fine for weekly manager meetings. It's useless for making decisions at 2 PM on a Tuesday when wait times are spiking.
The reports cover:
- —Call summary by queue
- —Service level analysis
- —Agent performance (calls taken, talk time, hold time)
- —Lost/abandoned call breakdown
- —Calls by hour/day distribution
These are the basics. They tell you what happened yesterday. They don't tell you what's happening right now.
No Heatmaps or Advanced Visualizations
Sonata Stats uses tables and basic charts. There's no heatmap showing call volume patterns across the week. No trend lines showing how your average handle time has shifted over the past month. No operator leaderboard that updates in real time.
For a 5-agent team, tables work. For 20+ agents across multiple queues, you need visual patterns to spot problems before they become crises.
No CRM Integration for Analytics
VitalPBX integrates with some CRM systems for screen pops and click-to-call. But the analytics layer doesn't connect to your CRM. You can't correlate call center performance with sales outcomes, customer satisfaction, or ticket resolution.
If you're running a sales team on VitalPBX, you want to know: "Agent A has the highest call volume but the lowest conversion rate." Sonata Stats can tell you the first part. It can't tell you the second.
Limited to VitalPBX Ecosystem
Sonata Stats only works with VitalPBX. If you're running mixed infrastructure — maybe VitalPBX for one office and FreePBX for another — you need two separate reporting systems. No consolidated view.
Option 1: Build Your Own Analytics Stack
If you're technically inclined and budget-conscious, you can build a monitoring stack on top of VitalPBX. VitalPBX runs on Asterisk, which means all the standard Asterisk monitoring approaches work.
CDR + Custom Database Queries
VitalPBX stores CDR (Call Detail Records) in a MySQL/MariaDB database. You can query it directly:
-- Top 10 agents by call volume this week (VitalPBX CDR)
SELECT
dst AS agent_extension,
COUNT(*) AS total_calls,
ROUND(AVG(billsec)) AS avg_talk_seconds,
ROUND(SUM(billsec) / 3600, 1) AS total_hours
FROM cdr
WHERE calldate >= DATE_SUB(NOW(), INTERVAL 7 DAY)
AND disposition = 'ANSWERED'
AND dcontext LIKE '%queue%'
GROUP BY dst
ORDER BY total_calls DESC
LIMIT 10;-- Abandoned calls by hour (identifies staffing gaps)
SELECT
HOUR(calldate) AS hour_of_day,
COUNT(*) AS abandoned_calls,
ROUND(AVG(duration)) AS avg_wait_before_abandon
FROM cdr
WHERE calldate >= DATE_SUB(NOW(), INTERVAL 7 DAY)
AND disposition != 'ANSWERED'
AND dcontext LIKE '%queue%'
GROUP BY HOUR(calldate)
ORDER BY hour_of_day;This works. It's also slow, manual, and requires someone who knows SQL. Not exactly the "real-time dashboard" your supervisors are asking for.
queue_log + Custom Parsing
Asterisk's queue_log file contains detailed event-level data for every queue interaction. VitalPBX writes to this file like any other Asterisk system:
1711411200|1711411195.42|support|SIP/1001|CONNECT|12|from-queue|
1711411260|1711411195.42|support|SIP/1001|COMPLETECALLER|12|60||
1711411200|1711411198.43|support|NONE|ABANDON|1|1|15|
Each line records: timestamp, unique ID, queue name, agent, event type, and event-specific data. You can parse this for:
- —Queue wait times (time between ENTERQUEUE and CONNECT)
- —Agent occupancy (time in CONNECT vs total logged-in time)
- —Abandonment patterns (ABANDON events with wait duration)
- —Service level (percentage answered within threshold)
But parsing text files and building dashboards from scratch takes 40-80 hours of development time. And you still need to maintain it.
Grafana + Prometheus Stack
The most popular DIY approach for VitalPBX monitoring:
- —Install
asterisk_exporteron your VitalPBX server - —Point Prometheus at the exporter endpoint
- —Build Grafana dashboards for visualization
# prometheus.yml for VitalPBX monitoring
scrape_configs:
- job_name: 'vitalpbx-asterisk'
static_configs:
- targets: ['your-vitalpbx-ip:9100']
scrape_interval: 15sThis gets you system metrics (CPU, memory, active channels) but not queue-level analytics. For queue data, you need custom scripts that parse queue_log and expose metrics in Prometheus format.
I've seen teams spend 2-3 weeks getting a useful Grafana dashboard working for Asterisk queues. It works, but it's fragile. Every Asterisk update risks breaking your custom exporters.
My take: The Grafana approach makes sense if you already have a Prometheus/Grafana stack running for other infrastructure. If you're building it just for VitalPBX call center monitoring, the maintenance cost isn't worth it.
Option 2: QueueMetrics (The Legacy Choice)
QueueMetrics is the established player in Asterisk call center reporting. They have a dedicated VitalPBX integration page and published installation guides.
What You Get
QueueMetrics provides:
- —Historical reports (similar to Sonata Stats, but more detailed)
- —Real-time wallboards (customizable panels)
- —Agent page (personal performance view)
- —Quality assessment module
- —IVR analytics
- —API access
The Trade-Offs
Price: CHF 8 per agent per month (roughly $9 USD). For a 20-agent team, that's $180/month just for reporting — nearly the same as upgrading to VitalPBX's Call Center plan.
Technology: QueueMetrics is Java-based. It runs on Tomcat with a MySQL backend. In 2026, deploying Java applications for web dashboards feels like driving a horse cart on a highway. It works. It's just slow.
Installation: QueueMetrics requires its own server or VM, Java runtime, and database. On VitalPBX, you'll need to configure queue_log access, set up the QueueMetrics connector, and maintain the Java application separately from your PBX.
UI: The interface hasn't fundamentally changed in years. Functional, but looks like it was designed in 2012. If your supervisors live on the dashboard all day, aesthetics matter more than you think.
When QueueMetrics Makes Sense for VitalPBX
QueueMetrics is the right choice if:
- —You need detailed historical reports with custom date ranges
- —Your team already runs Java infrastructure
- —You want IVR analytics specifically
- —You need multi-PBX reporting across different Asterisk systems (QueueMetrics can aggregate)
It's the wrong choice if you primarily need real-time dashboards, want modern visualizations, or are watching your per-agent costs.
Option 3: Astervis (Real-Time Analytics Built for Asterisk PBX)
Full disclosure: this is our product. But I'm going to be straight with you about what it does and doesn't do, so you can make an informed decision.
Astervis is a real-time call center analytics platform built specifically for Asterisk-based PBX systems — including VitalPBX. It's self-hosted, installs in about 5 minutes, and connects to your existing VitalPBX infrastructure without modifying your PBX configuration.
How Astervis Works with VitalPBX
VitalPBX runs on Asterisk. Astervis reads the same data sources any Asterisk monitoring tool uses: the AMI (Asterisk Manager Interface), CDR database, and queue_log. Because VitalPBX doesn't modify Asterisk's core interfaces, the integration is seamless.
Setup on a VitalPBX server:
# One-command install on your VitalPBX server (or a separate machine)
curl -sSL https://api.astervis.io/api/releases/install.sh | bashAstervis connects to your VitalPBX's Asterisk AMI (default port 5038) and starts collecting data immediately. No Java runtime. No Tomcat. No separate database server to maintain.
Tired of guessing what's happening in your queues?
Astervis gives you 30+ real-time charts, operator KPIs, and CRM integration for your Asterisk PBX. Self-hosted. Install in 5 minutes. From $119/mo flat — unlimited operators.
What You Get: 30+ Real-Time Charts
Here's what Astervis provides that Sonata Stats and QueueMetrics don't:
Real-Time Queue Dashboard
- —Live queue depth, wait times, and service level — updated every second
- —Visual indicators when thresholds are breached (queue too deep, wait too long)
- —Historical trends overlaid on real-time data so you see patterns as they develop
Heatmaps
- —Call volume heatmap: which hours on which days get the most calls
- —Wait time heatmap: when are customers waiting longest
- —Agent availability heatmap: staffing coverage across the week
These heatmaps are the single most useful visualization for workforce planning. One glance tells you "Mondays 9-11 AM are consistently understaffed." No SQL queries needed.
Operator Performance Tracking
- —Real-time leaderboards (calls handled, average handle time, occupancy rate)
- —Individual agent scorecards with trend data
- —KPI tracking against targets you define
- —Burnout indicators: agents above 85% occupancy get flagged
Trunk Analytics
- —SIP trunk utilization in real time
- —Concurrent call tracking per trunk
- —Trunk quality metrics (if your VitalPBX has MOS data)
CRM Integration
- —Bitrix24 and AmoCRM integration built in
- —Correlate call data with deal outcomes
- —Agent-level conversion tracking
Pricing Comparison: VitalPBX Analytics Options
Here's where the numbers tell the story:
| Solution | 10 Agents | 20 Agents | 50 Agents | Real-Time |
|---|---|---|---|---|
| VitalPBX Call Center Plan | $200/mo | $200/mo | $200/mo | Limited |
| QueueMetrics | $90/mo | $180/mo | $450/mo | Yes |
| Astervis Starter | $119/mo | — | — | Yes |
| Astervis Professional | $449/mo | $449/mo | $449/mo | Yes |
| Grafana DIY | Free* | Free* | Free* | Partial |
*Grafana is free but costs 40-80 hours of development time and ongoing maintenance.
For a 10-agent VitalPBX call center on the Enterprise plan ($100/month), adding Astervis Starter ($119/month) gives you real-time analytics for a total of $219/month. That's $19 more than upgrading to VitalPBX's Call Center plan, but you get real-time dashboards instead of historical reports, and the operator count is unlimited.
For 20+ agents, the math gets even better. QueueMetrics at $9/agent/month hits $180/month for 20 agents. Astervis Starter at $119/month is flat no matter how many operators you add, and you get 30+ real-time charts, heatmaps, and CRM integration that QueueMetrics doesn't offer.
Setting Up Analytics on VitalPBX: Step by Step
Regardless of which analytics tool you choose, you need to ensure your VitalPBX is configured correctly for data collection.
Step 1: Enable AMI Access
VitalPBX manages Asterisk's manager.conf through its web interface. Navigate to Settings → PBX Settings → AMI and create a read-only AMI user:
; VitalPBX AMI configuration for monitoring
; (configured via VitalPBX web UI, shown here for reference)
[monitor]
secret = your-secure-password-here
deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1/255.255.255.0
permit = 192.168.1.0/255.255.255.0
read = system,call,log,agent
write =The read permissions are sufficient for monitoring. No write access needed — your analytics tool should never modify PBX state.
Step 2: Verify queue_log Is Active
VitalPBX writes queue events to /var/log/asterisk/queue_log by default. Verify it's working:
# Check queue_log is being written
tail -f /var/log/asterisk/queue_log
# You should see events like:
# 1711411200|1711411195.42|support|SIP/1001|CONNECT|12|
# If empty, check queues.conf:
asterisk -rx "queue show"If queue_log is empty, verify that at least one queue is configured and receiving calls. VitalPBX creates the file automatically when queues are active.
Step 3: Configure CDR Database Access
For historical analytics, your tool needs access to the CDR database. On VitalPBX, this is typically MySQL/MariaDB:
# Find CDR database credentials
grep -A5 'cdr_mysql' /etc/asterisk/cdr_mysql.conf
# Or check VitalPBX's database configuration
cat /etc/vitalpbx/vitalpbx.conf | grep -i databaseCreate a read-only database user for your analytics tool:
-- Create read-only user for analytics
CREATE USER 'analytics'@'192.168.1.%' IDENTIFIED BY 'secure-password';
GRANT SELECT ON asteriskcdr.* TO 'analytics'@'192.168.1.%';
FLUSH PRIVILEGES;Step 4: Set Up Queue Monitoring Parameters
For accurate real-time monitoring, configure your VitalPBX queues with proper timeouts and events. In VitalPBX's Queue settings:
; Key settings in queues.conf for accurate analytics
; Configure these through VitalPBX web UI → Call Center → Queues
; Enable detailed event logging
eventwhencalled = yes
eventmemberstatus = yes
; Set service level target (seconds) for SLA reporting
servicelevel = 20
; Log queue caller abandonment
log_membername_as_agent = yesThe eventwhencalled and eventmemberstatus settings are critical. Without them, your analytics tool won't capture agent state changes, which means inaccurate occupancy calculations.
Step 5: Test Your Configuration
Before connecting your analytics tool, verify data is flowing:
# Test AMI connection
asterisk -rx "manager show connected"
# Test queue is reporting events
asterisk -rx "queue show support"
# Look for: "Calls completed: X, Calls abandoned: Y"
# Verify CDR is writing
mysql -u analytics -p asteriskcdr -e "SELECT COUNT(*) FROM cdr WHERE calldate >= DATE_SUB(NOW(), INTERVAL 1 HOUR);"If all three checks pass, your VitalPBX is ready for any analytics tool — whether that's Astervis, QueueMetrics, or a custom Grafana setup.
Which VitalPBX Analytics Approach Is Right for You?
The answer depends on three things: team size, budget, and what you need to see.
Under 5 Agents: Keep It Simple
If you're running a small team, Sonata Switchboard (included in Enterprise $100/month) plus manual CDR queries might be enough. You don't need heatmaps for a 3-person queue. A weekly SQL report gives you what you need.
But even at this size, if you're on the Community (free) plan and don't want to upgrade to Enterprise just for Switchboard, Astervis Starter at $119/month gives you more analytics than Switchboard provides.
5-20 Agents: You Need Real-Time
This is the sweet spot where real-time analytics starts paying for itself. A supervisor managing 10 agents across 2-3 queues can't manually check each queue. They need a single dashboard that shows problems as they happen.
At this scale, upgrading to VitalPBX Call Center ($200/month) for Sonata Stats, or adding Astervis ($119-449/month) to your existing plan are both reasonable options. The question is whether you need real-time visualization (Astervis) or are satisfied with historical reports (Sonata Stats).
20+ Agents: Invest in Proper Analytics
Above 20 agents, you can't afford to not have real-time analytics. Every minute of excessive wait time costs money. Every staffing gap multiplies across all active queues.
At this scale, the per-agent pricing of QueueMetrics ($9/agent = $180+ for 20 agents) makes flat-rate solutions more attractive. Astervis Starter at $119/month covers unlimited agents — roughly $6/agent at 20 seats, and less with every operator you add, versus QueueMetrics' $9.
Multi-Site or Mixed PBX: Think Carefully
If you're running VitalPBX at one location and FreePBX at another, you need analytics that works across both. QueueMetrics and Astervis both support this since they connect to standard Asterisk interfaces. Sonata Stats only works with VitalPBX.
VitalPBX-Specific Monitoring Tips
A few things I've learned from monitoring VitalPBX deployments that differ from vanilla Asterisk:
Watch Your Sonata Switchboard Impact
If you're running Sonata Switchboard, it maintains persistent AMI connections. If you add another monitoring tool that also connects via AMI, make sure your VitalPBX server can handle multiple AMI sessions. On servers with less than 4GB RAM, I've seen performance dips when three or more AMI consumers are active simultaneously.
# Check current AMI connections
asterisk -rx "manager show connected"
# If you see 5+, consider whether all are necessaryVitalPBX's CDR May Include Non-Queue Calls
VitalPBX's CDR database captures all calls — not just queue calls. When building reports, filter by dcontext to isolate call center traffic:
-- Filter for queue-only calls in VitalPBX CDR
SELECT * FROM cdr
WHERE dcontext IN ('from-queue', 'ext-queues', 'macro-queue')
AND calldate >= '2026-03-01'
ORDER BY calldate DESC;The exact context names depend on your VitalPBX version and queue configuration. Check your actual dcontext values before building queries.
Hot Desking and Agent Tracking
VitalPBX's hot desking feature (where agents log into different physical phones) can confuse analytics tools that track by extension number. The agent at extension 1001 today might be at 1002 tomorrow.
To handle this cleanly:
- —Use Asterisk agent codes rather than extensions for queue membership
- —Configure your analytics tool to track by agent name, not extension
- —In Astervis, agent identity is resolved automatically from queue membership events
Monitor VitalPBX's Own Resource Usage
VitalPBX does more than vanilla Asterisk — it runs a web UI, manages configurations, and runs commercial modules. Monitor the host system alongside your call center metrics:
# Quick health check for VitalPBX server
echo "=== CPU ==="
top -bn1 | head -5
echo "=== Memory ==="
free -h
echo "=== Asterisk Channels ==="
asterisk -rx "core show channels count"
echo "=== Active Calls ==="
asterisk -rx "core show calls"A VitalPBX server running Sonata Suite modules alongside 50 concurrent calls needs at least 4 CPU cores and 8GB RAM. If you're adding external analytics on the same server, account for the additional resource consumption.
The Bottom Line
VitalPBX is an excellent PBX platform that's rightfully gaining market share. Their Sonata Suite is competent for basic reporting needs. But if you're running a serious call center operation — 10+ agents, SLA commitments, workforce optimization — you need analytics that go beyond historical reports.
Your options are clear:
- —Upgrade to VitalPBX Call Center ($200/month) for Sonata Stats. Good for teams happy with historical reporting.
- —Add QueueMetrics for more detailed reports plus real-time wallboards. Watch per-agent costs above 20 agents.
- —Add Astervis for real-time dashboards, heatmaps, and CRM integration at flat-rate pricing. Try it free for 14 days — installs in 5 minutes on your existing VitalPBX server.
- —Build with Grafana if you have DevOps resources and want full customization. Budget 40-80 hours.
Every hour your supervisors spend guessing what's happening in the queue is an hour they could spend fixing the problem. Real-time visibility isn't a luxury at scale — it's the minimum viable monitoring for a call center that takes customer experience seriously.
Stop guessing. Start monitoring.
See your Asterisk call center's real performance — queue wait times, agent activity, trunk usage, and 30+ charts. Self-hosted on your server. Install in 5 minutes. No credit card required.
From $119/mo flat. Unlimited operators. 14-day free trial.
