|
|
| (3 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. | |
| | |
| == Chart Creation Workflow ==
| |
|
| |
|
| <kroki lang="mermaid"> | | <kroki lang="mermaid"> |
| | %%{init: {'flowchart': {'nodeSpacing': 15, 'rankSpacing': 30}}}%% |
| flowchart LR | | flowchart LR |
| A[Click + button] --> B[Configure Date Range] | | A[Click + button] --> B[Configure Date Range] |
| Line 17: |
Line 15: |
| </kroki> | | </kroki> |
|
| |
|
| == Add chart == | | == Creating a Chart == |
| | |
| To create new graph click on the + button.
| |
| | |
| [[File:charts-add.png]]
| |
| | |
| == Chart configuration ==
| |
| 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.
| |
| | |
| | |
| [[File:charts-form.png]]
| |
|
| |
|
| | # 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 |
|
| |
|
| === Templates === | | === 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. |
|
| |
|
| [[File:charts-templatecombo.png]]
| | === Date Range === |
| | |
| | |
| 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.
| |
| | |
| === Viewing License Usage Per Instance (Sensor) ===
| |
| | |
| You can track license utilization (maximum, minimum, average concurrent calls) for specific instances/sensors by combining CDR filtering with chart templates. This helps identify which sensors contribute the most to your overall license usage.
| |
| | |
| ==== Step-by-Step: Track License Calls for a Specific Sensor ====
| |
| | |
| # '''Navigate to CDR View'''
| |
| * Go to GUI > CDR
| |
| | |
| # '''Apply Filter for Specific Instance'''
| |
| * In the CDR filter panel, select your sensor using the '''id_sensor''' filter
| |
| * Apply the filter to display only CDRs from that specific instance
| |
| | |
| # '''Open Charts Panel'''
| |
| * On the right-hand side of the CDR view, click the '''Charts''' button to expand the charts panel
| |
| | |
| # '''Create License Calls Chart'''
| |
| * Click the + button to create a new chart
| |
| * Select the '''Number of license calls''' template from the template dropdown
| |
| * The chart will automatically use your current CDR filter (the specific sensor you selected)
| |
| | |
| # '''View Results'''
| |
| * The chart displays the channel count (license utilization) over time for that specific sensor
| |
| * Hover over data points to see exact values
| |
| | |
| ==== Understanding Per-Instance vs Total License Usage ====
| |
| | |
| '''Important Note:''' CDR merging occurs before the license channel count is calculated at the GUI level. Therefore, the total license usage across all instances may be less than the sum of individual instance counts if calls traverse multiple instances (e.g., a call goes through Sensor A and Sensor B). This is because the GUI deduplicates CDRs based on matching the last 6 digits of caller/called numbers.
| |
| | |
| This means:
| |
| * '''Per-instance charts''' show how many channels each sensor contributes to the pool
| |
| * '''Total license usage''' may be lower than the sum of all instances due to deduplication
| |
| * This is expected behavior in distributed/geo-redundant deployments
| |
| | |
| | |
| | |
| === Date range === | |
| | |
| [[File:charts-daterange.png]]
| |
| | |
| * Time interval
| |
| [[File:charts-timeinterval.png]]
| |
| * Time axis density on the X axis.
| |
| | |
| [[File:charts-density.png]]
| |
| | |
| | |
| == Series ==
| |
| | |
| Series section contains data sources for the charts.
| |
| | |
| [[File:charts-seriessection.png]]
| |
| | |
| === Series Column ===
| |
| | |
| Series column chooses which data source will be plotted.
| |
| | |
| * '''number of calls''' - shows min/max/avg simultaneous calls distribution and total calls distribution
| |
| * '''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.
| |
| | |
| [[File:charts-templatenumberofcalls.png|thumbnail]]
| |
| | |
| * ACD average shows averaged call duration for all calls which started in the given interval.
| |
| | |
| * 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.
| |
| | |
| [[File:charts-seriescolumn.png]]
| |
| | |
| === Param ===
| |
| | |
| Param column specifies SIP response code.
| |
| | |
| [[File:charts-paramcolumn.png]]
| |
| | |
| | |
| === Axis Side ===
| |
| | |
| Axis side is used to assign data source to the left Y axis or to the right Y axis.
| |
| | |
| | |
| [[File:charts-axissidecolumn.png]]
| |
| | |
| === Primary ===
| |
| | |
| Primary checkbox is used when multiple datasources are drawn on the left or right Y axis. The primary-checked datasource fills the whole Y axis and non-primary datasources use that scale. Example:
| |
| | |
| [[File:charts-primarycolumn.png]]
| |
| | |
| === Type ===
| |
| | |
| Type of graph.
| |
| | |
| [[File:charts-typeofgraphs.png]]
| |
| | |
| === Line ===
| |
| | |
| Decoration for line type chart.
| |
| | |
| [[File:charts-linetype.png]]
| |
|
| |
|
| === Color === | | {| class="wikitable" |
| | ! Setting !! Description |
| | |- |
| | | Time interval || Start/end date for the chart |
| | |- |
| | | X-axis density || Granularity of data points (minute, hour, day) |
| | |} |
|
| |
|
| Color of chart.
| | == Series (Data Sources) == |
|
| |
|
| [[File:charts-colorcolumn.png]]
| | The Series section defines what data to plot. Add multiple series to compare metrics. |
|
| |
|
| === Fill / Markers / Smooth === | | === Available Series Types === |
|
| |
|
| * '''Fill''' - fills area below the line type chart
| | {| class="wikitable" |
| * '''Markers''' - plots dots at line points
| | ! Series Type !! Description |
| * '''Smooth''' - draws smoothed lines instead of straight lines between points
| | |- |
| | | '''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-fillmarkerssmooth.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).}} |
|
| |
|
| === Description === | | === Series Configuration === |
|
| |
|
| Description names graph, axis and sets legend position (top/left/right/bottom or no legend). | | {| 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 |
| | |} |
|
| |
|
| [[File:charts-description.png]]
| | == Filters == |
|
| |
|
| 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.
| | 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. |
|
| |
|
| [[File:charts-savetemplate.png]] | | For filter details, see [[Call_Detail_Record_-_CDR#Filtering]]. |
|
| |
|
| == Using Groups to Filter Charts by Provider == | | == Filtering by Provider (IP Groups) == |
|
| |
|
| IP groups allow you to efficiently filter charts by specific providers or destinations without manually configuring individual IP addresses for each chart. This is the recommended approach for monitoring multiple providers. | | Use IP groups to filter charts by specific providers without manual IP configuration. |
|
| |
|
| === Step-by-Step: Charting Jitter for a Specific Provider === | | === Setup === |
|
| |
|
| # '''Create IP Groups:''' | | # '''Create IP Group:''' GUI → Groups → IPs → New group → Enter provider IPs/CIDRs |
| *Navigate to GUI → Groups → IPs
| | # '''Create Chart:''' Click + → Select series type (e.g., "MOS / jitter / delay / packet loss") |
| *Click "New group"
| | # '''Apply Filter:''' Filters - common tab → Group Filters → Select your IP group from "Caller Groups" or "Called Groups" |
| *Enter a group name for your provider (e.g., "Provider A Trunk")
| |
| *Add the provider's IP addresses or CIDR ranges, one per line
| |
| *Save the group
| |
|
| |
|
| Repeat for each provider you want to monitor.
| | {{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.}} |
|
| |
|
| # '''Create the Chart:'''
| | == License Usage Per Sensor == |
| *Navigate to CDR tab in the GUI
| |
| *Click the Charts button
| |
| *Click the + button to create a new graph
| |
|
| |
|
| # '''Configure the Data Source:'''
| | To track license utilization for specific sensors: |
| *In the Series table, select "MOS / jitter / delay / packet loss" as the series type
| |
| *Set axis side (Left or Right) as needed
| |
|
| |
|
| # '''Apply the IP Group as a Filter:''' | | # Navigate to '''GUI → CDR''' |
| *Go to the Filters - common tab
| | # Filter by '''id_sensor''' for your target sensor |
| *In the "Group Filters" section, select your IP group from the "Called Groups" or "Caller Groups" dropdown
| | # Open '''Charts''' panel → Click '''+''' |
| | # Select '''Number of license calls''' template |
|
| |
|
| # '''Optional: Filter for Successful Calls:'''
| | {{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).}} |
| *In the Filters - common tab, add a filter for "Last SIP response = 200" to chart only successful calls
| |
|
| |
|
| # '''Optional: Compare Multiple Providers:**
| | '''487 Request Terminated''' calls are excluded from concurrent call counts. |
| *Add additional series to the same chart
| |
| *For each series, apply a different IP group filter
| |
| *Use the tools icon (settings icon) next to the filter to name each series
| |
| *The names will appear in the chart legend for easy identification
| |
|
| |
|
| This approach allows you to monitor jitter, MOS, delay, and packet loss across multiple providers on a single chart or create separate charts for each provider.
| | == Custom SIP Header Analysis == |
|
| |
|
| == Filters - common ==
| | To visualize traffic by custom headers (e.g., <code>x-route</code> for carrier routing): |
|
| |
|
| Filters CDR data in the same way as CDR filter formular except date range which is in the first base chart data section.
| | === Prerequisites === |
|
| |
|
| [[File:charts-filters-common.png]]
| |
|
| |
| == Filters - RTP ==
| |
|
| |
| Filters CDR data in the same way as CDR filter formular
| |
|
| |
| [[File:charts-filters-rtp.png]]
| |
|
| |
| == Creating Percentage Comparisons for Custom SIP Headers ==
| |
|
| |
| While the CDR Dashboard panels support grouping by specific fields (Last SIP Response, Codec, SIP IP, or predefined IP Groups), custom SIP headers cannot be used directly as a "Group By" dimension. However, you can create percentage/distribution comparisons for custom headers (such as <code>x-route</code> for carrier routing analysis) using the Charts module with multiple series and wildcard filtering.
| |
|
| |
| === Prerequisites: Configure Custom Header Capture ===
| |
|
| |
| Before creating charts with custom headers, you must ensure the header is captured and stored in CDR data:
| |
|
| |
| 1. Configure the sniffer to capture the header in <code>voipmonitor.conf</code>:
| |
| <syntaxhighlight lang="ini"> | | <syntaxhighlight lang="ini"> |
| | # /etc/voipmonitor.conf |
| custom_headers = x-route | | custom_headers = x-route |
| </syntaxhighlight>
| |
| 2. Enable the header in GUI Settings for CDR display:
| |
| * Navigate to '''Settings > CDR Custom Headers'''
| |
| * Select your custom header (e.g., <code>x-route</code>)
| |
| * Check '''"Show as Column"''' to make the value visible in the CDR list
| |
|
| |
| === Method 1: Compare Specific Route vs All Traffic (Recommended) ===
| |
|
| |
| To visualize how a specific route contributes as a percentage of total traffic over time, create a chart with two series:
| |
|
| |
| 1. Navigate to '''GUI > CDR > Charts'''
| |
| 2. Click '''+'' to create a new chart
| |
| 3. Configure '''two series''':
| |
|
| |
| '''Series 1: All Traffic with Custom Header'''
| |
| * Series type: <code>number of calls</code>
| |
| * Go to '''Filters - common''' tab
| |
| * Filter by your custom header using wildcard: <code>x-route = %</code>
| |
| * This captures all CDRs that have any value for this header
| |
|
| |
| '''Series 2: Traffic for Specific Route'''
| |
| * Add a second series with type: <code>number of calls</code>
| |
| * Go to '''Filters - common''' tab
| |
| * Filter by the specific route value: <code>x-route = ATT</code> (or your route identifier)
| |
| * Use the tools icon (settings) next to the series to name it "Route: ATT"
| |
|
| |
| 4. Set the date range and save the chart
| |
|
| |
| The resulting chart shows two lines:
| |
| * The top line represents all traffic with the custom header
| |
| * The lower line represents traffic for the specific route
| |
| * The visual gap between the lines shows the relative contribution (not an exact percentage calculated by the chart, but a visual comparison)
| |
|
| |
| === Limitations ===
| |
|
| |
| ''This approach provides a visual trend comparison rather than an exact percentage calculation. The chart displays raw call counts, not calculated percentages.''
| |
|
| |
| ''If you need exact percentage values over time, you must query the database directly using SQL.''
| |
|
| |
| === Method 2: Display Multiple Routes on Same Chart ===
| |
|
| |
| For comparing multiple routes on a single chart:
| |
|
| |
| 1. Create a chart with <code>number of calls</code> as the series type
| |
| 2. Add multiple series, one for each route:
| |
| * Series 1: Filter <code>x-route = ATT</code> (name it "Route: ATT")
| |
| * Series 2: Filter <code>x-route = Vodafone</code> (name it "Route: Vodafone")
| |
| * Series 3: Filter <code>x-route = Tele2</code> (name it "Route: Tele2")
| |
| 3. Each series will appear as a separate line on the chart
| |
|
| |
| '''Be aware:''' Data points with identical values from different series may overlap, making it difficult to distinguish between routes when they have similar call volumes. For clear visualization, consider creating separate charts for each route or use Method 1 to compare individual routes against total traffic.
| |
|
| |
| === For Exact Percentage Analysis ===
| |
|
| |
| If you need precise percentage distributions (e.g., "ATT = 35%, Vodafone = 25%, Tele2 = 40%"), use direct SQL queries on the database:
| |
|
| |
| <syntaxhighlight lang="sql">
| |
| -- Count CDRs per custom header value
| |
| SELECT
| |
| custom_header_value AS route,
| |
| COUNT(*) AS call_count,
| |
| ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER(), 2) AS percentage
| |
| FROM cdr_custom_headers
| |
| WHERE cdr_custom_header_field = 'x-route'
| |
| AND calldate BETWEEN '2025-01-01 00:00:00' AND '2025-01-01 23:59:59'
| |
| GROUP BY custom_header_value
| |
| ORDER BY call_count DESC;
| |
| </syntaxhighlight>
| |
|
| |
| This requires joining with the <code>cdr_next_X</code> tables to match CDR IDs and filtering by your desired time range.
| |
|
| |
| == Common Issues ==
| |
|
| |
| === Why do SIP response codes change colors in dashboard graphs? ===
| |
|
| |
| When viewing SIP response codes in charts or dashboard graphs, the colors are '''not fixed''' and may rotate or change over time.
| |
|
| |
| * '''Current behavior:''' The dominant (most frequent) SIP response code automatically receives the 'green' color, while other codes get different colors. If 200 OK is the dominant code today, it will be green. If 404 Not Found becomes dominant tomorrow, 404 will become green and 200 OK will shift to a different color.
| |
|
| |
| * '''Impact on monitoring:''' This color rotation makes it difficult to interpret trends consistently over time, as you cannot rely on a specific color always representing a specific SIP response code.
| |
|
| |
| * '''Status:''' This is a known limitation. A feature request (VG-3031) has been created to make colors for response codes settable/configurable in a future release.
| |
|
| |
| * '''Workaround:''' There is currently no workaround to lock colors to specific SIP response codes. You must wait for a future release where this feature will be implemented.
| |
|
| |
| === Why do flow diagrams and pie charts show different SIP response percentages? ===
| |
|
| |
| Flow diagrams (time-series charts in the Charts module) and pie charts (CDR dashboard sections) may show different percentages for the same SIP response codes even when they appear to cover the same time period. This typically has two causes:
| |
|
| |
| ==== Different Time Intervals ====
| |
|
| |
| The most common cause is that the charts are actually configured for slightly different time ranges.
| |
|
| |
| * '''Resolution:''' Ensure both the pie chart (CDR Dashboard) and the flow diagram (Charts module) are configured with exactly the same time interval. Check the time filters in both views carefully - the Dashboard pie chart uses the CDR view's time range, while Charts has its own independent "Date range" settings.
| |
|
| |
| ==== Flow Diagrams Near Current Time Show Lower 200 OK ====
| |
|
| |
| For time periods very close to the current time, flow diagrams will naturally show a lower percentage of 200 OK responses compared to pie charts, even with identical time intervals.
| |
|
| |
| This occurs because of how VoIPmonitor captures and records calls:
| |
|
| |
| * '''Calls in progress:''' Calls that are still active when you query the data have not yet completed their SIP signaling and cannot be classified with a final response code. They are excluded from flow diagram calculations.
| |
| * '''Database latency:''' Even after calls complete, there is a delay before they are processed, saved to the database, and become available for chart queries. This negative caching period means that very recent calls may not be included in flow diagrams yet.
| |
| * '''Result:''' The flow diagram shows the percentage of completed/categorized calls, which skews toward lower success rates for periods close to "now" because many 200 OK calls are still in progress or not yet written to the database.
| |
|
| |
| * '''Resolution:''' For accurate, consistent comparisons between flow diagrams and pie charts, use a time period that is at least several minutes old (older than your typical call duration plus database write latency). Historical time periods will show consistent percentages across both chart types.
| |
|
| |
| === Why do concurrent calls from Tools differ from the Concurrent Calls chart? ===
| |
|
| |
| You may notice that the "Concurrent Calls Stats" report in Tools and the "Concurrent Calls" chart display different numbers for the same time period. This is expected behavior due to differences in how the two features count and display calls.
| |
|
| |
| ==== Understanding the Counting Methods ====
| |
|
| |
| * '''Tools Concurrent Calls Stats:''' Available from GUI > Tools > Concurrent Calls Stats, this report is designed for GUI licensing compliance. It displays maximum concurrent call statistics for the last 14 days, averaged over 60-minute windows. This report counts all CDR legs separately (for example, if you have 100 calls with 2 legs each, it will show 200). This count includes all CDR records without applying any call merging or correlation logic. The tools report applies primarily to GUI licensing - if you exceed your licensed concurrent call limit, the GUI will warn or block access after 14 days.
| |
|
| |
| * '''Concurrent Calls Chart:''' Available from GUI > CDR > Charts, by default this chart type uses the standard "concurrent calls" data source which also counts every CDR leg separately, matching the behavior of alerts. If you are seeing different values between Tools and charts, verify which chart series type you have selected. Some chart variations may apply call merging logic (such as matching the last 6 digits of caller/called numbers within a 10-second window) to combine correlated legs into single end-to-end calls in the visualization.
| |
|
| |
| ==== Identifying the Right Data Source ====
| |
|
| |
| * '''For license planning or capacity planning:''' Use Tools > Concurrent Calls Stats for license compliance checks. Use Charts > "concurrent calls - license chart" series type if you want to see the number of end-to-end phone conversations (merged legs) rather than CDR records.
| |
|
| |
| * '''For alert troubleshooting:''' Create a standard "concurrent calls" chart (not the license chart type) with the same filters as your alert. This will show exactly what the alert monitoring engine evaluates.
| |
|
| |
| * '''For troubleshooting discrepancies:''' Check the Series column in your chart configuration. Different series types have different counting methods. If you need to match the Tools report count, ensure you are using a chart series that does not apply leg merging.
| |
|
| |
| The chart configuration also offers more filtering options (such as per-sensor filtering or custom SIP header filters) compared to the Tools report, which can result in different filtered results even if the underlying counting method is the same.
| |
|
| |
| === Why do concurrent call alerts differ from "concurrent calls - license chart"? ===
| |
|
| |
| You may notice that concurrent call alerts show different values than call graph reports, even when using the same filters. This is because alerts and charts count concurrent calls differently.
| |
|
| |
| ==== Understanding the Counting Methods ====
| |
|
| |
| * '''Alerts count every CDR leg separately:''' Concurrent call alerts monitor and count each individual CDR leg recorded by VoIPmonitor. If a single end-to-end call creates multiple CDR records (for example, when acting as a proxy and different call legs involve different IP addresses), each leg contributes separately to the concurrent call count in the alert.
| |
|
| |
| * '''License chart merges correlated call legs:''' The "concurrent calls - license chart" report type intelligently merges multiple CDR legs that belong to the same end-to-end call. This merged count represents the actual number of concurrent phone calls rather than the number of CDR records.
| |
|
| |
| This explains why an alert might report 132 concurrent calls while a "concurrent calls - license chart" shows a different number like 650 - the alert counted individual CDR legs, while the license chart merged correlated legs into end-to-end calls.
| |
|
| |
| ==== Generating Reports That Match Alert Behavior ====
| |
|
| |
| If you want a chart that accurately reflects what concurrent call alerts monitor (i.e., counting every CDR leg separately):
| |
|
| |
| 1. '''Do not use the "license chart" type'''
| |
| 2. Use the standard "concurrent calls" chart instead
| |
| 3. Apply the same filters that your alert uses
| |
|
| |
| The standard "concurrent calls" chart counts CDR legs separately, matching how alerts evaluate concurrency.
| |
|
| |
| ==== Proxy Use Case: Separating Calls by Carrier ====
| |
|
| |
| When acting as a proxy where multiple carriers route through your system, you may want to monitor concurrent calls per carrier rather than total system concurrency. In this scenario:
| |
|
| |
| * Alerts counting individual CDR legs is usually desired behavior - you want to know when a specific carrier (identified by IP or SIP headers) exceeds a threshold
| |
| * Create separate alerts and charts for each carrier using filters:
| |
| ** IP filters: Filter by destination IP to track a specific carrier network
| |
| ** Custom SIP headers: Use Groups or capture custom headers to filter by carrier identification information
| |
| ** Apply the same filters to both the alert and the chart for accurate comparison
| |
|
| |
| ==== Why Alerts Triggered Only Once ====
| |
|
| |
| A concurrent call alert may trigger only once even during a long traffic spike. This is by design:
| |
|
| |
| * '''Edge triggering:''' Alerts fire when the metric crosses the configured threshold (e.g., going from 99 calls to 132 calls that exceeds a 100-call threshold)
| |
| * '''Sustained state:''' Once the condition is met (calls greater than threshold), the alert remains in a triggered state but does not send a new notification for every additional call
| |
| * '''Reset condition:''' The alert will trigger again only if concurrency drops below the threshold and then crosses it again, or if configured with recurring intervals (e.g., "alert every 5 minutes while condition is met")
| |
|
| |
| A single alert notification indicates a sustained violation over time, not a one-time momentary spike.
| |
|
| |
| ==== Verifying CDR Leg Behavior ====
| |
|
| |
| To understand how your specific calls are being recorded as CDR legs:
| |
|
| |
| 1. Navigate to '''GUI > CDR > Browse'''
| |
| 2. Search for a specific phone call using caller/called number or time range
| |
| 3. Review the results - if a single end-to-end call appears as multiple CDR records, you are seeing the multi-leg scenario
| |
|
| |
| Each separate CDR record will be counted independently in concurrent call alerts, while correlation mechanisms merge them in charts that support leg merging.
| |
|
| |
| === Troubleshooting Sudden Unexplained Increase in Reported Calls ===
| |
|
| |
| If you observe a sudden, unexplained increase in reported calls that does not match your actual network traffic (e.g., no increase in voice conversations), this may indicate a probe software version change that affected CDR merging or license counting.
| |
|
| |
| ==== Step 1: Check System Logs for Probe Version Changes ====
| |
|
| |
| When investigating when the issue started, check system logs for clues about probe software updates or configuration changes.
| |
|
| |
| <syntaxhighlight lang="bash">
| |
| # Check syslog for voipmonitor messages around the time the issue started
| |
| grep voipmonitor /var/log/syslog | less
| |
|
| |
| # On some systems, logs may be in /var/log/messages
| |
| grep voipmonitor /var/log/messages | less
| |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| Look for:
| | Enable in GUI: Settings → CDR Custom Headers → Check "Show as Column" |
| * Probe startup/restart messages around the time the issue began
| |
| * Version numbers indicating a software upgrade
| |
| * Any configuration changes that might affect CDR processing
| |
|
| |
|
| ==== Step 2: Use Concurrent Licensed Calls Chart with Sensor Filtering ==== | | === Method: Compare Specific Route vs All Traffic === |
|
| |
|
| Use the "concurrent calls - license chart" report type to isolate which probe is reporting the increased call count.
| | # 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) |
|
| |
|
| 1. Navigate to '''GUI > Charts'''
| | The gap between lines shows relative contribution (visual comparison, not calculated percentage). |
| 2. Click the + button to create a new chart
| |
| 3. In the '''Series''' section, select:
| |
| * '''series''': concurrent calls - license chart
| |
| 4. In the '''Filters - common''' tab, apply sensor filters:
| |
| * Add a series for each sensor using the '''Filter by id_sensor''' option
| |
| * Or create separate charts, one per sensor, to compare call counts
| |
| 5. Set the date range to cover the period before and after the issue started
| |
|
| |
|
| This allows you to:
| | {{Note|For exact percentages, use direct SQL queries on the database.}} |
| * Identify which specific probe is causing the spike
| |
| * Determine if only one probe is affected or if multiple probes show the issue
| |
| * Correlate the timing with any probe version changes found in system logs
| |
|
| |
|
| ==== Step 3: Investigate CDR Merging Changes via SIP History ==== | | == Troubleshooting == |
|
| |
|
| Changes in CDR merging behavior can affect license counting after probe upgrades. VoIPmonitor versions may change how correlated call legs are merged, which impacts the "concurrent calls - license chart" calculation.
| | === SIP Response Colors Change === |
|
| |
|
| To investigate CDR merging issues:
| | Colors are '''not fixed''' – the dominant (most frequent) response code gets green, others rotate. This is a known limitation (VG-3031 feature request). |
|
| |
|
| 1. Navigate to a specific CDR in '''GUI > CDR > Browse'''
| | === Flow Diagrams vs Pie Charts Show Different Percentages === |
| 2. Open the SIP history for affected calls
| |
| 3. Compare call legs from the problematic time period to determine:
| |
| * Are multiple call legs being counted separately instead of merged?
| |
| * Has the correlation logic changed after a probe upgrade?
| |
| * Are legs that were previously merged now being counted individually?
| |
|
| |
|
| This investigation helps determine if the call count increase is due to:
| | '''Cause 1:''' Different time ranges configured. Verify both use identical intervals. |
| * A software change in how CDR legs are merged for license counting
| |
| * Configuration differences between probes
| |
| * Network topology changes affecting call correlation
| |
|
| |
|
| === Filter Works in CDR List but Not in Dashboard Chart ===
| | '''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 |
|
| |
|
| If you notice that a filter (e.g., <code>SIP Agent = Rebtel%Android%</code>) works correctly in the CDR list but returns no data in a dashboard chart, while a similar filter (e.g., <code>SIP Agent = Rebtel%iOS%</code>) works in both places, this may indicate an issue beyond simple performance problems.
| | '''Solution:''' Use time periods at least several minutes old for consistent comparison. |
|
| |
|
| ==== Possible Causes ==== | | === Tools Concurrent Calls Stats vs Charts Differ === |
|
| |
|
| Before assuming this is a performance issue, consider these potential causes:
| | {| 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 |
| | |} |
|
| |
|
| * '''Special characters in SIP Agent strings:''' Certain characters in User-Agent headers may interfere with filter parsing in charts, even though they work in the CDR list search.
| | To match alert behavior, use standard "concurrent calls" chart (not license chart) with same filters. |
|
| |
|
| * '''Filter syntax differences:''' Wildcard patterns (<code>%</code>) may behave differently in chart queries compared to CDR list queries.
| | === Making Charts Match License Count for Specific Segments === |
|
| |
|
| * '''Dashboard chart configuration:''' The specific chart or panel may have different time ranges, data sources, or filter settings applied.
| | Apply IP filters to count only specific traffic: |
|
| |
|
| * '''CDR Summary table inconsistencies:''' If CDR Summary is enabled, there may be synchronization issues between the summary table and detailed CDR data for certain filter patterns. | | * '''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) |
|
| |
|
| ==== Diagnostic Data Collection ==== | | === Alerts Fire Once During Sustained Spike === |
|
| |
|
| If basic troubleshooting (simplifying the filter, verifying time ranges, checking for special characters) does not resolve the issue, collect the following diagnostic data for support team analysis:
| | 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. |
|
| |
|
| 1. '''Sample SIP pcap file:''' Provide a SIP packet capture (pcap) of a call that should be included in the chart based on your filter but is not appearing.
| | === Chart Timeouts for Multi-Day Ranges === |
|
| |
|
| 2. '''GUI configuration backup:''' Backup your GUI configuration via '''GUI > Tools > Backup & Restore > backup GUI: configuration tables''' to provide complete settings for the dashboard and chart.
| | '''Primary solution:''' Increase MySQL buffer: |
| | |
| 3. '''Chart details:''' Specify the exact name of the dashboard panel and the name of the chart where the issue occurs.
| |
| | |
| 4. '''Filter details:''' Provide the exact filter string that works in CDR list but not in the chart, along with any variations you have tested.
| |
| | |
| ==== Troubleshooting Steps Before Contacting Support ====
| |
| | |
| Try the following to isolate the issue:
| |
| | |
| * '''Create a new simple chart with only the problematic filter:''' If the new chart works, the original chart may have conflicting filters or configuration issues.
| |
| | |
| * '''Test with exact match instead of wildcard:''' If <code>Rebtel%Android%</code> fails, try an exact match like <code>Rebtel-Android-1.0</code> to determine if wildcards are the problem.
| |
| | |
| * '''Check for special characters:''' If the SIP Agent string contains parentheses, quotes, or other special characters, try escaping them or using a different approach.
| |
| | |
| * '''Verify CDR Summary status:''' If using CDR Summary, test with <code>disable_cdr_summary = yes</code> in <code>voipmonitor.conf</code> to check if the summary table is causing issues.
| |
| | |
| * '''Compare data volumes:''' Check if the Android filter matches significantly more records than the iOS filter (look at the "X results found" counter in CDR list). If the difference is massive, performance may indeed be the issue.
| |
| | |
| === Troubleshooting Chart Timeout Issues ===
| |
| | |
| When generating charts for date ranges longer than a single day, you may experience timeouts. This typically occurs when the database query takes too long to execute due to insufficient buffering for large data sets.
| |
| | |
| ==== Solution: Increase InnoDB Buffer Pool Size ====
| |
| | |
| The primary solution is to increase the <code>innodb_buffer_pool_size</code> MySQL configuration parameter to allocate more RAM for caching data. This allows the database to keep more data in memory, dramatically reducing disk I/O for chart queries.
| |
| | |
| To configure <code>innodb_buffer_pool_size</code>:
| |
|
| |
|
| <syntaxhighlight lang="ini"> | | <syntaxhighlight lang="ini"> |
| [mysqld] | | [mysqld] |
| # Allocate 70-80% of available RAM for buffer pool | | innodb_buffer_pool_size = 16G # 70-80% of available RAM |
| innodb_buffer_pool_size = 16G
| |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| After modifying MySQL configuration, restart the service:
| | '''Workarounds:''' |
| | | * Generate charts during off-peak hours |
| <syntaxhighlight lang="bash">
| | * Use [[Reports#Daily_Charts_Report|Daily Charts Report]] to schedule automatic generation |
| sudo systemctl restart mysql
| |
| </syntaxhighlight>
| |
| | |
| For detailed MySQL performance tuning guidance, see [[High-Performance_VoIPmonitor_and_MySQL_Setup_Manual]].
| |
| | |
| ==== Workaround: Generate Charts During Off-Peak Hours ====
| |
| | |
| As a temporary workaround, generate challenging charts (multi-day ranges) during off-peak hours when database load from real-time CDR processing is lower (e.g., nighttime or weekends).
| |
|
| |
|
| ==== Workaround: Schedule Chart Generation via Daily Reports ====
| | For detailed tuning, see [[Scaling]]. |
|
| |
|
| Instead of manually generating large charts, use the [[Reports|Daily Email Reports]] feature to schedule chart generation and receive results via email:
| | === Filter Works in CDR List but Not in Chart === |
|
| |
|
| # Navigate to '''GUI > Reports > Configure Daily Reports'''
| | Check for: |
| # Select '''Daily Charts Report''' as the report type
| | * Special characters in filter values (parentheses, quotes) |
| # Configure the date range, filters, and schedule (e.g., run at 2:00 AM)
| | * Wildcard (<code>%</code>) behavior differences |
| # Add recipient email addresses to receive the generated charts
| | * Different time ranges between CDR list and chart |
| | * CDR Summary table issues (test with <code>disable_cdr_summary = yes</code>) |
|
| |
|
| This approach generates charts during low-traffic periods automatically, avoiding timeout issues during peak usage hours.
| | === Cannot Aggregate Time-of-Day Across Days === |
|
| |
|
| === Cannot Aggregate Time-of-Day Data Across Multiple 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"). |
|
| |
|
| {{Warning|The Charts module creates time-series graphs that plot data chronologically over a selected date range. It does not support aggregating or stacking time slots to create patterns like "total calls from 9-10 AM across all days in this week".}}
| | For time-of-day pattern analysis, use direct SQL queries or third-party reporting tools. |
|
| |
|
| For example, if you select a 1-week date range:
| | == See Also == |
| * '''What Charts shows:''' Continuous timeline from Monday 00:00 to Sunday 23:59 (e.g., "Mon 9AM: 50 calls, Mon 10AM: 40 calls, Tue 9AM: 45 calls...")
| |
| * '''What Charts cannot do:''' Aggregate similar time slots (e.g., "All 9-10AM slots combined: 500 total calls, All 10-11AM slots combined: 300 calls")
| |
|
| |
|
| For time-of-day pattern analysis that aggregates across multiple days, you would need to use direct SQL queries on the database or third-party reporting tools. This functionality has been added to the development roadmap for a future release. If urgently needed, it can be implemented as a paid custom development request.
| | * [[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 == | | == 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 like number of calls, MOS/jitter/delay/packet loss, RTCP, ACD/ASR/PDD, codecs, CallPerSec), and description. Templates provide quick configurations. For license usage per sensor: CDR filter by id_sensor → Charts → "Number of license calls" template. Note: total license usage may be less than sum of individual instances due to CDR deduplication based on last 6 digits of caller/called numbers. Use IP groups (GUI → Groups → IPs) to filter charts by provider. Common issues: (1) SIP response code colors are not fixed - dominant code gets green, colors rotate (no workaround, VG-3031 feature request). (2) Flow diagrams vs pie charts show different percentages near current time due to in-progress calls and DB latency. (3) Tools Concurrent Calls Stats vs Concurrent Calls chart differ - standard chart counts CDR legs separately (like alerts), "license chart" merges legs. (4) Chart timeouts for multi-day ranges - increase innodb_buffer_pool_size or use Daily Reports. (5) Filter works in CDR list but not chart - check special characters, wildcards, CDR Summary. (6) Cannot aggregate time-of-day data across multiple days - Charts shows continuous time-series (e.g., "Mon 9AM, Mon 10AM, Tue 9AM...") but cannot stack similar time slots (e.g., "Total calls in all 9-10AM slots"). This is a known limitation, added to roadmap for future release, or available as paid custom development. | | '''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 per sensor, id_sensor filter, concurrent calls, license chart, CDR leg, color rotation, chart timeout, innodb_buffer_pool_size, custom SIP header, x-route, wildcard filter, time-of-day pattern, aggregate, weekly usage pattern, heatmap, stack days | | '''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:''' | | '''Key Questions:''' |
| Line 575: |
Line 234: |
| * What is the difference between "concurrent calls" and "concurrent calls - license chart"? | | * What is the difference between "concurrent calls" and "concurrent calls - license chart"? |
| * Why do charts timeout for date ranges longer than a day? | | * Why do charts timeout for date ranges longer than a day? |
| * Why does a filter work in CDR list but not in dashboard chart?
| |
| * How to create percentage comparison for custom SIP headers? | | * How to create percentage comparison for custom SIP headers? |
| * How to create a weekly usage pattern graph that aggregates call counts by time of day across multiple days?
| |
| * Can Charts show total calls from 9-10 AM for the whole week (heatmap stacked days)?
| |
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
- 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
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
- 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"
💡 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:
- Navigate to GUI → CDR
- Filter by id_sensor for your target sensor
- Open Charts panel → Click +
- 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.
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
- Create chart with two series (both "number of calls")
- Series 1: Filter
x-route = % (all traffic with header)
- 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?