Reports: Difference between revisions

From VoIPmonitor.org
(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.

Daily reports configuration

RTP Daily Report

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

RTP daily report example

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).

Daily charts report configuration

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

Chart creation dialog

Preview results or send test emails via buttons.

Report preview and test buttons
Report preview result

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:

  1. Navigate to GUI > Reports > Configure Daily Reports
  2. Select CDR summary as the report type
  3. 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
  1. 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
  1. Configure the date range, schedule, and recipients
  2. (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.
Report generator form

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

Report generator results

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.

Call summary report

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.

QoS report

Call Detail Records

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

Simplified CDR view

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-data or apache) must have write access to export folder
  • Ensure sufficient disk space for accumulated files

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 mailq and tail /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

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?