Charts: Difference between revisions

From VoIPmonitor.org
(Add Key Questions to AI Summary)
(Rewrite: konsolidace struktury, odstranění duplicit, přidání tabulek pro přehlednost)
 
(17 intermediate revisions by the same user not shown)
Line 1: Line 1:
= Charts =
= Charts =


Charts are used to plot various data sources like number of concurrent calls or quality of calls over time. Data sources can be combined to one chart allowing the viewer to see the correlation of desired data sources like SIP 4XX/5XX responses on ASR. The graph itself is interactive – clicking on a particular legend hides the datasource. Hovering on a datasource highlights it and shows the local value.
Charts visualize call data (concurrent calls, quality metrics, SIP responses) over time. The graph is interactive – click legend items to hide/show data sources, hover to see values.


Charts also appear in the CDR view's right panel, automatically filtering based on the current CDR selection.


Charts are also present in the CDR window in the right mini-window sharing the same functionality with only difference that in CDR section the graph takes data from the current filter.
<kroki lang="mermaid">
%%{init: {'flowchart': {'nodeSpacing': 15, 'rankSpacing': 30}}}%%
flowchart LR
    A[Click + button] --> B[Configure Date Range]
    B --> C[Add Series<br/>Data Sources]
    C --> D[Apply Filters<br/>Common/RTP]
    D --> E[Set Description<br/>& Save Template]
    E --> F[View Interactive<br/>Chart]
</kroki>


== Add chart ==
== Creating a Chart ==


To create new graph click on the + button.
# Click the '''+''' button in the Charts panel
# Configure the '''Date range''' (time interval and X-axis density)
# Add '''Series''' (data sources to plot)
# Apply '''Filters''' (Common/RTP tabs – same as CDR filter)
# Set '''Description''' to name and save the chart as a template


[[File:charts-add.png]]
=== Templates ===


== Chart configuration ==
Templates store chart configurations for reuse. To save a new template, enter a name in the Description field a "Save" button appears next to the template dropdown.
Chart configuration contains three tabs at the top – base chart data, filters – common and filters rtp. The filters tab is used to filter data sources by various criteria – for detailed description please refer to CDR chapter.
[[File:charts-threetabs.png]]


The chart configuration panel is divided to three sections. Date range, series and description.
=== Date Range ===


{| class="wikitable"
! Setting !! Description
|-
| Time interval || Start/end date for the chart
|-
| X-axis density || Granularity of data points (minute, hour, day)
|}


[[File:charts-form.png]]
== Series (Data Sources) ==


The Series section defines what data to plot. Add multiple series to compare metrics.


=== Templates ===
=== Available Series Types ===


{| class="wikitable"
! Series Type !! Description
|-
| '''Number of calls''' || Min/max/avg concurrent calls, total call distribution
|-
| '''MOS / jitter / delay / packet loss''' || RTP quality metrics
|-
| '''RTCP''' || RTCP protocol statistics
|-
| '''ACD, ASR, PDD, SIP responses''' || Signaling metrics
|-
| '''Codecs''' || Codec usage distribution
|-
| '''CallPerSec''' || Calls Per Second (CPS) rate
|}


[[File:charts-templatecombo.png]]
{{Note|1='''ACD Average''' = mean duration of calls ''started'' in the interval. '''ACD Immediate''' = mean duration of calls ''ongoing'' in the interval (shows higher values for short intervals).}}


=== Series Configuration ===


template field contains predefined chart configurations and custom templates which you can create / modify. To create new template - write name of it to description title field which shows save template button next to templates combo box.
{| class="wikitable"
! Column !! Description
|-
| '''Param''' || SIP response code (for SIP response series)
|-
| '''Axis Side''' || Assign to Left or Right Y-axis
|-
| '''Primary''' || Sets the Y-axis scale; non-primary series use this scale
|-
| '''Type''' || Line, bar, area chart type
|-
| '''Line''' || Line decoration style
|-
| '''Color''' || Series color
|-
| '''Fill''' || Fill area below line
|-
| '''Markers''' || Show data point dots
|-
| '''Smooth''' || Smooth lines between points
|}


== Filters ==


The '''Filters - common''' and '''Filters - RTP''' tabs filter chart data using the same criteria as the CDR filter form. The date range is set separately in the main configuration section.


=== Date range ===
For filter details, see [[Call_Detail_Record_-_CDR#Filtering]].


[[File:charts-daterange.png]]
== Filtering by Provider (IP Groups) ==


* Time interval
Use IP groups to filter charts by specific providers without manual IP configuration.
[[File:charts-timeinterval.png]]
* Time axes is density on the X axis.


[[File:charts-density.png]]
=== Setup ===


# '''Create IP Group:''' GUI → Groups → IPs → New group → Enter provider IPs/CIDRs
# '''Create Chart:''' Click + → Select series type (e.g., "MOS / jitter / delay / packet loss")
# '''Apply Filter:''' Filters - common tab → Group Filters → Select your IP group from "Caller Groups" or "Called Groups"


=== series ===
{{Tip|To compare multiple providers: add separate series for each, apply different IP group filters, and use the settings icon to name each series for the legend.}}


Series section contains data sources for the charts.
== License Usage Per Sensor ==


[[File:charts-seriessection.png]]
To track license utilization for specific sensors:


==== series column ====
# Navigate to '''GUI → CDR'''
# Filter by '''id_sensor''' for your target sensor
# Open '''Charts''' panel → Click '''+'''
# Select '''Number of license calls''' template


Series column chooses which data source will be plotted.
{{Note|1=Total license usage may be lower than sum of individual sensors due to CDR deduplication (matching last 6 digits of caller/called within ±10s window).}}


*number of calls shows min/max/avg simultaneous calls distribution and total calls distribution [[File:charts-templatenumberofcalls.png|thumbnail]]*MOS / jitter / delay / packet loss shows RTP statistics *RTCP shows RTCP protocol values*ACD, ASR, PDD, SIP responses shows signalization related values*codecs shows codec distribution*CallPerSec shows Calls Per Second (CPS) rate over time - use the CallPerSec template for quick CPS visualization
'''487 Request Terminated''' calls are excluded from concurrent call counts.


* ACD average shows averaged call duration for all calls which started in the given interval.
== Custom SIP Header Analysis ==


* ACD immediate shows averaged call duration for all calls which are ongoing in the given interval. Thus this chart will show higher ACD for short intervals.
To visualize traffic by custom headers (e.g., <code>x-route</code> for carrier routing):


[[File:charts-seriescolumn.png]]
=== Prerequisites ===


==== param ====
<syntaxhighlight lang="ini">
# /etc/voipmonitor.conf
custom_headers = x-route
</syntaxhighlight>


Param column specifies SIP response code
Enable in GUI: Settings → CDR Custom Headers → Check "Show as Column"


[[File:charts-paramcolumn.png]]
=== Method: Compare Specific Route vs All Traffic ===


# Create chart with '''two series''' (both "number of calls")
# '''Series 1:''' Filter <code>x-route = %</code> (all traffic with header)
# '''Series 2:''' Filter <code>x-route = ATT</code> (specific route)


==== axis side ====
The gap between lines shows relative contribution (visual comparison, not calculated percentage).


{{Note|For exact percentages, use direct SQL queries on the database.}}


Axis side is used to assign data source to the left Y axis or to the right Y axis.
== Troubleshooting ==


=== SIP Response Colors Change ===


[[File:charts-axissidecolumn.png]]
Colors are '''not fixed''' – the dominant (most frequent) response code gets green, others rotate. This is a known limitation (VG-3031 feature request).


==== primary ====
=== Flow Diagrams vs Pie Charts Show Different Percentages ===


Primary checkbox is used in case where more datasources are drawn on left or right Y. The primary checked datasource fills the whole Y axe and non-primary datasources use that scale. Here is example:
'''Cause 1:''' Different time ranges configured. Verify both use identical intervals.


[[File:charts-primarycolumn.png]]
'''Cause 2:''' Near current time, flow diagrams show lower 200 OK because:
* In-progress calls haven't completed signaling
* Database write latency excludes recent calls


==== type ====
'''Solution:''' Use time periods at least several minutes old for consistent comparison.


Type of graph
=== Tools Concurrent Calls Stats vs Charts Differ ===


[[File:charts-typeofgraphs.png]]
{| class="wikitable"
! Source !! Counting Method
|-
| '''Tools → Concurrent Calls Stats''' || Counts every CDR leg separately (for license compliance)
|-
| '''Standard "concurrent calls" chart''' || Counts every CDR leg separately (matches alerts)
|-
| '''"concurrent calls - license chart"''' || Merges correlated legs into end-to-end calls
|}


==== Line ====
To match alert behavior, use standard "concurrent calls" chart (not license chart) with same filters.


Decoration for line type chart
=== Making Charts Match License Count for Specific Segments ===


[[File:charts-linetype.png]]
Apply IP filters to count only specific traffic:


==== Color ====
* '''Carrier IP filter:''' Counts calls between your system and that carrier only
* '''Customer IP filter:''' Counts calls between customers and your PBX only
* '''No filter:''' Counts ALL captured traffic (determines actual license usage)


Color of chart
=== Alerts Fire Once During Sustained Spike ===


[[File:charts-colorcolumn.png]]
Alerts use '''edge triggering''' – they fire when crossing the threshold, then remain triggered. A new notification requires the metric to drop below threshold and cross again.


==== Fill / Markers / Smooth ====
=== Chart Timeouts for Multi-Day Ranges ===


*Fill fills area below the line type chart
'''Primary solution:''' Increase MySQL buffer:
*Markers plot dots at line
*Smooth draw smoothes line instead of straight lines between points


[[File:charts-fillmarkerssmooth.png]]
<syntaxhighlight lang="ini">
[mysqld]
innodb_buffer_pool_size = 16G  # 70-80% of available RAM
</syntaxhighlight>


=== Description ===
'''Workarounds:'''
* Generate charts during off-peak hours
* Use [[Reports#Daily_Charts_Report|Daily Charts Report]] to schedule automatic generation


Description names graph, axis and sets legend position (top/left/right/bottom or no legend).
For detailed tuning, see [[Scaling]].


[[File:charts-description.png]]
=== Filter Works in CDR List but Not in Chart ===


Setting your own title will allow to save a created graph for repetitive use. Once the title is filled or changed, the save button will appear next to type chart.
Check for:
* Special characters in filter values (parentheses, quotes)
* Wildcard (<code>%</code>) behavior differences
* Different time ranges between CDR list and chart
* CDR Summary table issues (test with <code>disable_cdr_summary = yes</code>)


[[File:charts-savetemplate.png]]
=== Cannot Aggregate Time-of-Day Across Days ===


== Filters - common ==
Charts show continuous time-series (Mon 9AM, Mon 10AM, Tue 9AM...). They '''cannot''' aggregate similar time slots across days (e.g., "total 9-10AM calls for the week").


Filters CDR data in the same way as CDR filter formular except date range which is in the first base chart data section.
For time-of-day pattern analysis, use direct SQL queries or third-party reporting tools.


[[File:charts-filters-common.png]]
== See Also ==


== Filters - RTP ==
* [[Reports]] – Scheduled reports including Daily Charts
* [[Groups]] – IP and telephone number groups for filtering
* [[Alerts]] – Threshold-based alerting system
* [[Scaling]] – Database performance tuning


Filters CDR data in the same way as CDR filter formular
== AI Summary for RAG ==


[[File:charts-filters-rtp.png]]
'''Summary:''' Charts in VoIPmonitor visualize call data over time with interactive graphs. Create by clicking + and configuring date range, series (number of calls, MOS/jitter/delay/packet loss, RTCP, ACD/ASR/PDD, codecs, CallPerSec), and filters. Templates save configurations for reuse. For license usage per sensor: CDR filter by id_sensor → Charts → "Number of license calls" template. Total license may be lower than sum of sensors due to CDR deduplication (last 6 digits matching). Use IP groups (GUI → Groups → IPs) to filter by provider. Three concurrent calls counting methods: Tools/standard chart count CDR legs separately; "license chart" merges legs. Common issues: SIP response colors rotate (no fix, VG-3031), flow vs pie charts differ near current time (use older periods), chart timeouts (increase innodb_buffer_pool_size), cannot aggregate time-of-day across days (use SQL).
 
== AI Summary for RAG ==


'''Summary:''' Charts in VoIPmonitor visualize call data over time with interactive graphs. Create charts by clicking + and configuring date range, series (data sources), and description. Available data sources include number of calls, MOS/jitter/delay/packet loss, RTCP values, ACD/ASR/PDD/SIP responses, codecs, and CallPerSec for calls per second metrics. Templates provide quick chart configurations. Filters (common and RTP) can be applied to CDR data same as CDR filter forms.
'''Keywords:''' charts, graphs, visualization, number of calls, CallPerSec, CPS, MOS, jitter, delay, packet loss, RTCP, ACD, ASR, PDD, codecs, templates, filters, IP groups, provider filtering, license usage, id_sensor, concurrent calls, license chart, CDR leg, color rotation, chart timeout, innodb_buffer_pool_size, custom SIP header, x-route, wildcard filter


'''Keywords:''' charts, graphs, visualization, number of calls, CallPerSec, CPS, calls per second, MOS, jitter, delay, packet loss, RTCP, ACD, ASR, PDD, codecs, templates, filters
'''Key Questions:'''
'''Key Questions:'''
* How to create charts in VoIPmonitor GUI?
* How to create charts in VoIPmonitor GUI?
* How to view Calls Per Second (CPS) in a graph?
* How to view Calls Per Second (CPS) in a graph?
* What metrics can I visualize in VoIPmonitor charts?
* How to monitor MOS, jitter, delay, and packet loss over time?
* How to monitor MOS, jitter, delay, and packet loss over time?
* How to use CallPerSec template for CPS visualization?
* How to identify license usage per instance/sensor?
* How to use IP groups to filter charts by provider?
* Why do SIP response code colors change in charts?
* Why do flow diagrams and pie charts show different SIP response percentages?
* Why do concurrent calls in Tools differ from Concurrent Calls chart?
* What is the difference between "concurrent calls" and "concurrent calls - license chart"?
* Why do charts timeout for date ranges longer than a day?
* How to create percentage comparison for custom SIP headers?

Latest revision as of 16:50, 8 January 2026

Charts

Charts visualize call data (concurrent calls, quality metrics, SIP responses) over time. The graph is interactive – click legend items to hide/show data sources, hover to see values.

Charts also appear in the CDR view's right panel, automatically filtering based on the current CDR selection.

Creating a Chart

  1. Click the + button in the Charts panel
  2. Configure the Date range (time interval and X-axis density)
  3. Add Series (data sources to plot)
  4. Apply Filters (Common/RTP tabs – same as CDR filter)
  5. Set Description to name and save the chart as a template

Templates

Templates store chart configurations for reuse. To save a new template, enter a name in the Description field – a "Save" button appears next to the template dropdown.

Date Range

Setting Description
Time interval Start/end date for the chart
X-axis density Granularity of data points (minute, hour, day)

Series (Data Sources)

The Series section defines what data to plot. Add multiple series to compare metrics.

Available Series Types

Series Type Description
Number of calls Min/max/avg concurrent calls, total call distribution
MOS / jitter / delay / packet loss RTP quality metrics
RTCP RTCP protocol statistics
ACD, ASR, PDD, SIP responses Signaling metrics
Codecs Codec usage distribution
CallPerSec Calls Per Second (CPS) rate

ℹ️ Note: ACD Average = mean duration of calls started in the interval. ACD Immediate = mean duration of calls ongoing in the interval (shows higher values for short intervals).

Series Configuration

Column Description
Param SIP response code (for SIP response series)
Axis Side Assign to Left or Right Y-axis
Primary Sets the Y-axis scale; non-primary series use this scale
Type Line, bar, area chart type
Line Line decoration style
Color Series color
Fill Fill area below line
Markers Show data point dots
Smooth Smooth lines between points

Filters

The Filters - common and Filters - RTP tabs filter chart data using the same criteria as the CDR filter form. The date range is set separately in the main configuration section.

For filter details, see Call_Detail_Record_-_CDR#Filtering.

Filtering by Provider (IP Groups)

Use IP groups to filter charts by specific providers without manual IP configuration.

Setup

  1. Create IP Group: GUI → Groups → IPs → New group → Enter provider IPs/CIDRs
  2. Create Chart: Click + → Select series type (e.g., "MOS / jitter / delay / packet loss")
  3. Apply Filter: Filters - common tab → Group Filters → Select your IP group from "Caller Groups" or "Called Groups"

💡 Tip: To compare multiple providers: add separate series for each, apply different IP group filters, and use the settings icon to name each series for the legend.

License Usage Per Sensor

To track license utilization for specific sensors:

  1. Navigate to GUI → CDR
  2. Filter by id_sensor for your target sensor
  3. Open Charts panel → Click +
  4. Select Number of license calls template

ℹ️ Note: Total license usage may be lower than sum of individual sensors due to CDR deduplication (matching last 6 digits of caller/called within ±10s window).

487 Request Terminated calls are excluded from concurrent call counts.

Custom SIP Header Analysis

To visualize traffic by custom headers (e.g., x-route for carrier routing):

Prerequisites

# /etc/voipmonitor.conf
custom_headers = x-route

Enable in GUI: Settings → CDR Custom Headers → Check "Show as Column"

Method: Compare Specific Route vs All Traffic

  1. Create chart with two series (both "number of calls")
  2. Series 1: Filter x-route = % (all traffic with header)
  3. Series 2: Filter x-route = ATT (specific route)

The gap between lines shows relative contribution (visual comparison, not calculated percentage).

ℹ️ Note: For exact percentages, use direct SQL queries on the database.

Troubleshooting

SIP Response Colors Change

Colors are not fixed – the dominant (most frequent) response code gets green, others rotate. This is a known limitation (VG-3031 feature request).

Flow Diagrams vs Pie Charts Show Different Percentages

Cause 1: Different time ranges configured. Verify both use identical intervals.

Cause 2: Near current time, flow diagrams show lower 200 OK because:

  • In-progress calls haven't completed signaling
  • Database write latency excludes recent calls

Solution: Use time periods at least several minutes old for consistent comparison.

Tools Concurrent Calls Stats vs Charts Differ

Source Counting Method
Tools → Concurrent Calls Stats Counts every CDR leg separately (for license compliance)
Standard "concurrent calls" chart Counts every CDR leg separately (matches alerts)
"concurrent calls - license chart" Merges correlated legs into end-to-end calls

To match alert behavior, use standard "concurrent calls" chart (not license chart) with same filters.

Making Charts Match License Count for Specific Segments

Apply IP filters to count only specific traffic:

  • Carrier IP filter: Counts calls between your system and that carrier only
  • Customer IP filter: Counts calls between customers and your PBX only
  • No filter: Counts ALL captured traffic (determines actual license usage)

Alerts Fire Once During Sustained Spike

Alerts use edge triggering – they fire when crossing the threshold, then remain triggered. A new notification requires the metric to drop below threshold and cross again.

Chart Timeouts for Multi-Day Ranges

Primary solution: Increase MySQL buffer:

[mysqld]
innodb_buffer_pool_size = 16G  # 70-80% of available RAM

Workarounds:

For detailed tuning, see Scaling.

Filter Works in CDR List but Not in Chart

Check for:

  • Special characters in filter values (parentheses, quotes)
  • Wildcard (%) behavior differences
  • Different time ranges between CDR list and chart
  • CDR Summary table issues (test with disable_cdr_summary = yes)

Cannot Aggregate Time-of-Day Across Days

Charts show continuous time-series (Mon 9AM, Mon 10AM, Tue 9AM...). They cannot aggregate similar time slots across days (e.g., "total 9-10AM calls for the week").

For time-of-day pattern analysis, use direct SQL queries or third-party reporting tools.

See Also

  • Reports – Scheduled reports including Daily Charts
  • Groups – IP and telephone number groups for filtering
  • Alerts – Threshold-based alerting system
  • Scaling – Database performance tuning

AI Summary for RAG

Summary: Charts in VoIPmonitor visualize call data over time with interactive graphs. Create by clicking + and configuring date range, series (number of calls, MOS/jitter/delay/packet loss, RTCP, ACD/ASR/PDD, codecs, CallPerSec), and filters. Templates save configurations for reuse. For license usage per sensor: CDR filter by id_sensor → Charts → "Number of license calls" template. Total license may be lower than sum of sensors due to CDR deduplication (last 6 digits matching). Use IP groups (GUI → Groups → IPs) to filter by provider. Three concurrent calls counting methods: Tools/standard chart count CDR legs separately; "license chart" merges legs. Common issues: SIP response colors rotate (no fix, VG-3031), flow vs pie charts differ near current time (use older periods), chart timeouts (increase innodb_buffer_pool_size), cannot aggregate time-of-day across days (use SQL).

Keywords: charts, graphs, visualization, number of calls, CallPerSec, CPS, MOS, jitter, delay, packet loss, RTCP, ACD, ASR, PDD, codecs, templates, filters, IP groups, provider filtering, license usage, id_sensor, concurrent calls, license chart, CDR leg, color rotation, chart timeout, innodb_buffer_pool_size, custom SIP header, x-route, wildcard filter

Key Questions:

  • How to create charts in VoIPmonitor GUI?
  • How to view Calls Per Second (CPS) in a graph?
  • How to monitor MOS, jitter, delay, and packet loss over time?
  • How to identify license usage per instance/sensor?
  • How to use IP groups to filter charts by provider?
  • Why do SIP response code colors change in charts?
  • Why do flow diagrams and pie charts show different SIP response percentages?
  • Why do concurrent calls in Tools differ from Concurrent Calls chart?
  • What is the difference between "concurrent calls" and "concurrent calls - license chart"?
  • Why do charts timeout for date ranges longer than a day?
  • How to create percentage comparison for custom SIP headers?