Reports: Difference between revisions
(Add CDR summary type options (source/destination IP and telephone number)) |
(Add troubleshooting section for monthly reports failing due to database partition operations in distributed sensor setups) |
||
| Line 369: | Line 369: | ||
* '''Incorrect schedule:''' Verify task has valid "Next run" time in the future | * '''Incorrect schedule:''' Verify task has valid "Next run" time in the future | ||
* '''Stuck tasks:''' Edit and save the task again to reset its state | * '''Stuck tasks:''' Edit and save the task again to reset its state | ||
==== Monthly Reports Fail Due to Database Partition Operations ==== | |||
In distributed sensor setups with multiple sniffer sensors, monthly reports may fail to generate if database partition maintenance operations conflict with report generation. | |||
'''Symptoms:''' | |||
* Monthly reports configured in GUI do not generate or send as scheduled | |||
* Manual report generation works fine | |||
* Issue occurs specifically in multi-sensor environments | |||
'''Root Cause:''' | |||
VoIPmonitor performs automatic database partition maintenance operations to manage data retention. In distributed setups, when multiple sensors attempt partition operations simultaneously, database locks can prevent monthly reports from being generated. | |||
'''Solution: Configure Partition Operations to Prevent Conflicts''' | |||
To avoid conflicts, disable partition operations on sniffer sensors and configure them to run only on the main server during off-peak hours. | |||
;1. On all sniffer sensors: | |||
Edit <code>/etc/voipmonitor.conf</code> and add: | |||
<pre>disable_partition_operations = yes</pre> | |||
;2. On the main server (GUI server): | |||
Edit <code>/etc/voipmonitor.conf</code> and configure: | |||
<pre>disable_partition_operations = no | |||
partition_operations_enable_fromto = 4-5</pre> | |||
The <code>partition_operations_enable_fromto</code> setting defines a maintenance window (in this example, 4:00 AM to 5:00 AM) when partition operations will run. Adjust this time to align with your least busy period. | |||
;3. Restart the VoIPmonitor service on all affected sensors and the main server: | |||
<syntaxhighlight lang="bash"> | |||
sudo systemctl restart voipmonitor | |||
</syntaxhighlight> | |||
;4. Verify the report configuration: | |||
Navigate to '''GUI > Reports > Configure Daily Reports''' and verify that for each monthly report, the '''day of month''' field is set correctly for when the report should run. | |||
;5. Check GUI timezone: | |||
Ensure the GUI timezone (in '''GUI > Settings > System Configuration > National''') is set correctly so the scheduled time aligns with your intended local time. | |||
This configuration ensures that partition maintenance runs only once during the off-peak window on the main server, preventing database lock conflicts with monthly report generation. | |||
=== See Also === | === See Also === | ||
| Line 378: | Line 419: | ||
== AI Summary for RAG == | == AI Summary for RAG == | ||
'''Summary:''' VoIPmonitor reports system provides daily email reports (RTP summaries, CPS reports with max/average calls per second, daily charts, CDR summary with flexible summary types including source/destination IP and source/destination telephone number, plus optional price columns for billing costs), a report generator for historical data analysis, call summary grouped by IP addresses, QoS reports emphasizing RTP metrics, and simplified CDR views. CSV exports can be automated via crontab scheduler. The <code>cron/reports</code> setting in GUI Settings controls parallel report and alert generation processes; reduce it to 8 or less for shared environments (database on same machine as other services) to prevent database overload. This is independent from the <code>parallel tasks</code> setting which controls audio merging, not report generation. Common troubleshooting involves timezone alignment between GUI and OS settings. | '''Summary:''' VoIPmonitor reports system provides daily email reports (RTP summaries, CPS reports with max/average calls per second, daily charts, CDR summary with flexible summary types including source/destination IP and source/destination telephone number, plus optional price columns for billing costs), a report generator for historical data analysis, call summary grouped by IP addresses, QoS reports emphasizing RTP metrics, and simplified CDR views. CSV exports can be automated via crontab scheduler. The <code>cron/reports</code> setting in GUI Settings controls parallel report and alert generation processes; reduce it to 8 or less for shared environments (database on same machine as other services) to prevent database overload. This is independent from the <code>parallel tasks</code> setting which controls audio merging, not report generation. Common troubleshooting involves timezone alignment between GUI and OS settings. For monthly reports failing in distributed sensor setups, configure <code>disable_partition_operations = yes</code> on sniffer sensors and <code>disable_partition_operations = no</code> with <code>partition_operations_enable_fromto = 4-5</code> on the main server to prevent database lock conflicts during maintenance. | ||
'''Keywords:''' reports, daily reports, RTP, CPS, calls per second, charts, CDR summary, summary type, source number, source IP, destination number, destination IP, price columns, billing costs, call summary, QoS, ASR, ACD, NER, MOS, CSV export, crontab scheduler, timezone, cron/reports, parallel tasks, parallel processing, database load, SQL queue, shared environments | '''Keywords:''' reports, daily reports, RTP, CPS, calls per second, charts, CDR summary, summary type, source number, source IP, destination number, destination IP, price columns, billing costs, call summary, QoS, ASR, ACD, NER, MOS, CSV export, crontab scheduler, timezone, cron/reports, parallel tasks, parallel processing, database load, SQL queue, shared environments, monthly reports fail, distributed sensors, partition operations, disable_partition_operations, partition_operations_enable_fromto | ||
'''Key Questions:''' | '''Key Questions:''' | ||
| Line 395: | Line 436: | ||
* How to export CDRs to CSV automatically? | * How to export CDRs to CSV automatically? | ||
* Why are scheduled reports not being sent? | * Why are scheduled reports not being sent? | ||
* Why do monthly reports fail to generate in distributed sensor setups? | |||
* How to fix monthly reports failing due to partition operations? | |||
* What is disable_partition_operations and when to use it? | |||
Revision as of 04:03, 6 January 2026
Category:GUI manual
Reports
Reports include daily reports, instant report generator, call summary, QoS report, and CDR simplified view.
Daily Email Reports
Daily email reports resemble alerts but send once per day and can include daily charts based on criteria.

RTP Daily Report
Summarizes RTP metrics: MOS, packet loss, jitter, delay (PDV), duration, one-way, and missing RTP.

CPS Daily Report
CPS (Calls Per Second) report provides daily statistics of call volume rate. Reports maximum and average CPS over the selected period.
- Navigate to GUI > Reports > Configure Daily Reports
- Select CPS as the report type to receive periodic email summaries of maximum and average CPS
Daily Charts Report
Generates daily chart statistics. Create multiple charts per report, filtered by CDR criteria (e.g., SIP trunks).

Chart creation dialog allows custom charts with filters on numbers, IP, RTP stats.

Preview results or send test emails via buttons.


CDR Summary Report
The CDR Summary report provides a daily summary of call data that can be grouped by different criteria. This report type includes optional billing cost information and flexible aggregation options.
To generate a CDR summary report:
- Navigate to GUI > Reports > Configure Daily Reports
- Select CDR summary as the report type
- Choose the Summary type from the dropdown menu:
- source IP - Group calls by source IP address (default)
- source number - Group calls by source telephone number
- destination IP - Group calls by destination IP address
- destination number - Group calls by destination telephone number
- Configure filters using the filter tabs:
- In the Common tab, set Last SIP response to specific codes (e.g.,
404,603) to filter by SIP response
- In the Common tab, set Last SIP response to specific codes (e.g.,
- Configure the date range, schedule, and recipients
- (Optional) Enable the Price columns option to include billing costs (requires Billing Configuration)
Note: For costs to appear in the report, the billing system must be configured and costs must be calculated for the CDRs in your database. See CDR View for how to verify costs are being calculated by enabling the PRICE column.
Report Generator
Creates reports from historical data by criteria.
- "Only CDR with RTP" checkbox: Reports connected calls only (ASR always 100%) or all CDRs.

Results table appears below form after selecting date, IP ranges, QoS parameters.

Call Summary
Overview grouped by source/destination IPs, focusing on signaling metrics: ASR, ACD, total duration, call count. Toolbar filters by date range, source/destination numbers.

Export Column Reference
The following tables describe columns available in CSV exports.
Basic Metrics:
| Column | Description |
|---|---|
| sipip / sip_ip | Source IP address |
| cnt_all | Count of CDRs |
| cnt_connected | Count of connected CDRs |
| duration_all | Sum of connected seconds |
| acd_all | Average Call Duration |
| asr_all | Answer Seizure Ratio |
| ner_all | Network Effectiveness Ratio |
| seer_all | Session Establishment Effectiveness Ratio |
| short_60 | Ratio (%) of CDRs with connect duration < 60s |
| short_20 | Ratio (%) of CDRs with connect duration < 20s |
| mos_all | MOS average (min from caller/called) |
| response_time_100_all | Response time from INVITE to 100/183 (ms) |
| pdd_all | Post Dial Delay (time to hear announcement) |
| packets_lost_all | Lost packets count |
| jitter_all | Average RTP jitter (max from caller/called) |
| delay_all | Average of median jitter (PDV in ms) |
MOS XR Columns (from RTCP-XR reports):
| Column | Description |
|---|---|
| mos_xr_avg_all | MOS XR average (min of caller/called) |
| mos_xr_avg_caller_all | MOS XR average for caller stream |
| mos_xr_avg_called_all | MOS XR average for called stream |
| mos_xr_min_all | MOS XR minimal (caller/called) |
| mos_xr_min_caller_all | MOS XR minimal for caller stream |
| mos_xr_min_called_all | MOS XR minimal for called stream |
RTCP Columns:
| Column | Description |
|---|---|
| rtcp_maxfr | Maximum fraction loss reported in RTCP |
| rtcp_maxjitter | Maximum jitter reported in RTCP |
| rtcp_avgfr | Average fraction loss reported |
| rtcp_avgjitter | Average jitter reported in RTCP |
| rtcp_maxrtd | Max round trip delay (ms) |
| rtcp_avgrtd | Average round trip delay (ms) |
Silence/Clipping Columns (requires silence detection enabled):
| Column | Description |
|---|---|
| mos_silence_avg_all | MOS during silence periods (min of caller/called) |
| mos_silence_avg_caller_all | MOS during silence periods (caller stream) |
| mos_silence_avg_called_all | MOS during silence periods (called stream) |
| mos_silence_min_all | MOS minimal during silence |
| mos_silence_min_caller_all | MOS minimal during silence (caller stream) |
| mos_silence_min_called_all | MOS minimal during silence (called stream) |
| silence_all | Percentage of call that was silence |
| silence_end_all | Seconds of silence before BYE packet |
| clipping_all | Number of clipped frames (requires clippingdetect=yes)
|
Other Columns:
| Column | Description |
|---|---|
| mos_lqo_caller_all | MOS listening quality objective (caller) |
| mos_lqo_called_all | MOS listening quality objective (called) |
| sip_hostname | Hostname from DB IP lookup (if enabled) |
| sip_hostname_color | Color setting from DB IP lookup |
| id | IP address with underscores instead of dots |
QoS Report
Similar to call summary but emphasizes RTP stats: MOS, jitter, delay, packet loss. Toolbar filters by date range, IP range.

Call Detail Records
Simplified CDR interface showing IPs and numbers, with quick toolbar filters.

Controlling Parallel Report Processing
When reports are slow generating or cause database overload, you may need to adjust the number of parallel processes used for report generation.
= cron/reports vs parallel tasks
VoIPmonitor has two independent parallel processing settings:
cron/reports: Controls the number of parallel report and alert generation tasks (CLI-based). This is configured in GUI > Settings > System Configuration > Advanced.parallel tasks: Controls parallel audio merging operations in the GUI (for recordings). This is not related to report generation.
These settings are independent and serve different purposes.
= Reducing Database Load from Reports
If the MySQL database is hosted on the same machine as other services (or has limited resources), high parallel report processing can overwhelm the database and cause:
- Slow report generation
- Growing SQL cache files
- Increasing CDR queue (SQLq metric in sensor status)
Solution: Reduce the cron/reports setting
Navigate to GUI > Settings > System Configuration > Advanced and find the cron/reports option.
- Recommended values
-
- 8 or less for shared environments (database on same machine as other services)
- 4 or less for severely resource-constrained environments
- 16-32 for dedicated database servers with sufficient resources
Impact of cron/reports value:
| Value | Behavior | When to Use |
|---|---|---|
| Too high (20+) | Many reports generate simultaneously, saturating database I/O and CPU | Dedicated database with powerful hardware |
| Moderate (8-16) | Balanced parallelism with acceptable database load | Standard dedicated VoIPmonitor servers |
| Low (4-8) | Sequential or low-parallel processing, minimal database impact | Shared CPU or database hosting other services |
Primary solution for performance issues:
If reducing cron/reports does not resolve performance problems, the optimal solution is to move the MySQL database to a separate, dedicated host. This eliminates I/O contention and allows higher parallel processing without resource conflicts.
CSV Export via Crontab Scheduler
You can export CDRs to a local directory on a schedule instead of (or in addition to) receiving them via email. This is useful for automated processing, archiving, or integration with external systems.
Configuration Steps
- 1. Set the Export Folder
-
- Navigate to GUI > Settings > System Configuration > Advanced
- Set "Folder for export CSV" to your desired directory (e.g.,
/var/backups/cdrs) - Optionally set "CSV name prefix" for filename prefixes
- Optionally set "Delete CSV after X days" for automatic cleanup
- 2. Create a Crontab Scheduler Task
-
- Navigate to GUI > Settings > Crontab Scheduler
- Create a new task with:
- Type: Report type (Call Summary, Report Generator, etc.)
- Schedule: Frequency (hourly, daily, weekly, or cron expression)
- Report parameters: Date range, IP ranges, etc.
- 3. Verify Permissions
-
- Web server user (
www-dataorapache) must have write access to export folder - Ensure sufficient disk space for accumulated files
- Web server user (
For custom export formats, consider using the Web API instead.
Troubleshooting Scheduled Reports
If scheduled reports are not sent automatically but manual generation works, check these common causes:
Timezone Mismatch
The GUI and server OS must use the same timezone. If they differ, scheduled tasks may run at wrong times or appear to be skipped.
Symptoms:
- Manual report generation works immediately
- Scheduled reports appear configured but don't run at expected time
Solution:
- 1. Check GUI timezone
- Navigate to GUI > Settings > System Configuration > National > Timezone
- 2. Check OS timezone
date
timedatectl
- 3. Align timezones
# Change OS timezone to match GUI (example)
timedatectl set-timezone Europe/Prague
- 4. Verify system cronjob
crontab -l
# Should contain:
# * * * * * root php /var/www/html/php/run.php cron
Other Common Causes
- Email delivery issues: Check MTA logs with
mailqandtail /var/log/mail.log - Incorrect schedule: Verify task has valid "Next run" time in the future
- Stuck tasks: Edit and save the task again to reset its state
Monthly Reports Fail Due to Database Partition Operations
In distributed sensor setups with multiple sniffer sensors, monthly reports may fail to generate if database partition maintenance operations conflict with report generation.
Symptoms:
- Monthly reports configured in GUI do not generate or send as scheduled
- Manual report generation works fine
- Issue occurs specifically in multi-sensor environments
Root Cause:
VoIPmonitor performs automatic database partition maintenance operations to manage data retention. In distributed setups, when multiple sensors attempt partition operations simultaneously, database locks can prevent monthly reports from being generated.
Solution: Configure Partition Operations to Prevent Conflicts
To avoid conflicts, disable partition operations on sniffer sensors and configure them to run only on the main server during off-peak hours.
- 1. On all sniffer sensors
Edit /etc/voipmonitor.conf and add:
disable_partition_operations = yes
- 2. On the main server (GUI server)
Edit /etc/voipmonitor.conf and configure:
disable_partition_operations = no partition_operations_enable_fromto = 4-5
The partition_operations_enable_fromto setting defines a maintenance window (in this example, 4:00 AM to 5:00 AM) when partition operations will run. Adjust this time to align with your least busy period.
- 3. Restart the VoIPmonitor service on all affected sensors and the main server
sudo systemctl restart voipmonitor
- 4. Verify the report configuration
Navigate to GUI > Reports > Configure Daily Reports and verify that for each monthly report, the day of month field is set correctly for when the report should run.
- 5. Check GUI timezone
Ensure the GUI timezone (in GUI > Settings > System Configuration > National) is set correctly so the scheduled time aligns with your intended local time.
This configuration ensures that partition maintenance runs only once during the off-peak window on the main server, preventing database lock conflicts with monthly report generation.
See Also
- Alerts & Reports - Email alert configuration
- Silence Detection - Enable silence/clipping metrics
- Web API - Programmatic report access
AI Summary for RAG
Summary: VoIPmonitor reports system provides daily email reports (RTP summaries, CPS reports with max/average calls per second, daily charts, CDR summary with flexible summary types including source/destination IP and source/destination telephone number, plus optional price columns for billing costs), a report generator for historical data analysis, call summary grouped by IP addresses, QoS reports emphasizing RTP metrics, and simplified CDR views. CSV exports can be automated via crontab scheduler. The cron/reports setting in GUI Settings controls parallel report and alert generation processes; reduce it to 8 or less for shared environments (database on same machine as other services) to prevent database overload. This is independent from the parallel tasks setting which controls audio merging, not report generation. Common troubleshooting involves timezone alignment between GUI and OS settings. For monthly reports failing in distributed sensor setups, configure disable_partition_operations = yes on sniffer sensors and disable_partition_operations = no with partition_operations_enable_fromto = 4-5 on the main server to prevent database lock conflicts during maintenance.
Keywords: reports, daily reports, RTP, CPS, calls per second, charts, CDR summary, summary type, source number, source IP, destination number, destination IP, price columns, billing costs, call summary, QoS, ASR, ACD, NER, MOS, CSV export, crontab scheduler, timezone, cron/reports, parallel tasks, parallel processing, database load, SQL queue, shared environments, monthly reports fail, distributed sensors, partition operations, disable_partition_operations, partition_operations_enable_fromto
Key Questions:
- What types of reports does VoIPmonitor provide?
- How to configure daily email reports with billing costs?
- How to enable price columns in CDR summary reports?
- What summary types are available in CDR summary reports?
- How to group CDR summary by source or destination telephone number?
- How to filter CDR summary by SIP response codes like 404 or 603?
- What is the difference between cron/reports and parallel tasks?
- How to reduce database load from report generation?
- What value should cron/reports be set to for shared environments?
- What columns are available in CSV export?
- How to export CDRs to CSV automatically?
- Why are scheduled reports not being sent?
- Why do monthly reports fail to generate in distributed sensor setups?
- How to fix monthly reports failing due to partition operations?
- What is disable_partition_operations and when to use it?