GUI troubleshooting: Difference between revisions
(Add solution for VM Binary (binary missing) error during GUI upgrade) |
(Add spool directory ownership fix for GUI loading issues) |
||
| (46 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
= GUI Troubleshooting = | |||
This | This guide covers common VoIPmonitor GUI issues organized by symptom category. | ||
== | == Quick Navigation == | ||
{| class="wikitable" | |||
! Category !! Common Issues | |||
|- | |||
| [[#Access Issues|Access Issues]] || HTTP 500, blank screen, single user cannot access | |||
|- | |||
| [[#No Data Issues|No Data Issues]] || No CDR for today, empty dashboard, missing calls | |||
|- | |||
| [[#Database Issues|Database Issues]] || Timeouts, corruption, connections, schema errors | |||
|- | |||
| [[#GUI Upgrade Issues|GUI Upgrade Issues]] || Cannot login, blank screen, VM Binary error | |||
|- | |||
| [[#Permission Issues|Permission Issues]] || Ownership errors, NAS access, binary execution | |||
|- | |||
| [[#IonCube and PHP Issues|IonCube/PHP Issues]] || Loader errors, temp directory, PHP version | |||
|- | |||
| [[#Other Issues|Other Issues]] || Timezone, fax, attachments, RRD graphs | |||
|} | |||
== | == Access Issues == | ||
=== HTTP 500 Error === | |||
'''Client-side steps (try first):''' | |||
# Different browser or incognito mode | |||
# Clear browser cache (Ctrl+Shift+Delete) | |||
# Disable browser extensions | |||
# Try from a different network | |||
'''Server-side diagnosis:''' | |||
= | <syntaxhighlight lang="bash"> | ||
# Check Apache error log | |||
tail -100 /var/log/apache2/error.log # Debian/Ubuntu | |||
tail -100 /var/log/httpd/error_log # RHEL/CentOS | |||
# Check PHP-FPM log | |||
tail -100 /var/log/php-fpm/www-error.log | |||
# | # Check SELinux | ||
getenforce | |||
# If "Enforcing", try temporarily: setenforce 0 | |||
# | </syntaxhighlight> | ||
{{Tip|For detailed SQL query debugging, add <code>?debug=31415</code> to any GUI URL and check browser console (F12).}} | |||
=== Firefox/Waterfox: Blank Page or Hang on Login === | |||
'''Firefox/Waterfox: Blank Page or Hang on Login''' | |||
If the Web GUI shows a blank page or hangs during login, but works correctly in Chrome/Edge, the cause is typically a browser extension conflict. | |||
'''Diagnosis:''' | |||
* Issue occurs in Firefox/Waterfox but not Chrome/Edge | |||
* Works when Developer Tools (F12) is open | |||
* Persists in private mode and through SSH tunnels | |||
'''Solution:''' | |||
# In Firefox, navigate to '''about:addons''' | |||
# Select Extensions tab and '''disable all extensions''' | |||
# Close and reopen Firefox completely | |||
# Attempt to log in to the GUI | |||
# If successful, one extension is the cause. Re-enable extensions one by one (or in pairs) restarting Firefox and testing after each change to identify the specific culprit | |||
=== Single User Cannot Access === | |||
If one user cannot access GUI while others can: | |||
# '''Check IP whitelist''': User Management > edit user > "Access from IPs" field | |||
# '''Check network path''': Compare user's route vs working users | |||
# '''Capture traffic''': <syntaxhighlight lang="bash" inline>tcpdump -i eth0 host USER_IP -w /tmp/debug.pcap</syntaxhighlight> | |||
=== Blank Screen After Upgrade === | |||
<syntaxhighlight lang="bash"> | |||
# Check for conflicting PEAR file | |||
ls -la /usr/share/pear/constants.php | |||
# If exists, remove it: | |||
rm /usr/share/pear/constants.php | |||
# Check SELinux | |||
getenforce | |||
# If Enforcing, temporarily disable: setenforce 0 | |||
# Clear browser cache | |||
# Press Ctrl+F5 in browser | |||
</syntaxhighlight> | |||
== No Data Issues == | |||
=== No CDR or Dashboard Data for Current Day === | |||
'''Step 1: Check sensor status''' | |||
Navigate to '''Settings > Sensors''' in GUI: | |||
* '''Status UP''' - Sensor connected, proceed to Step 2 | |||
* '''Status Down''' - Sensor disconnected, see [[#Sensor Down|Sensor Down]] below | |||
'''Step 2: Generate debug log (if sensor UP)''' | |||
Navigate to '''Tools > Generate Debug Log''' and share the link with VoIPmonitor support. | |||
'''Step 3: Check common causes''' | |||
{| class="wikitable" | |||
! Cause !! Diagnosis !! Solution | |||
|- | |||
| Missing partition || <code>SHOW CREATE TABLE cdr;</code> - check partition for today's date || <code>ALTER TABLE cdr ADD PARTITION (PARTITION pYYYYMMDD VALUES LESS THAN (UNIX_TIMESTAMP('YYYY-MM-DD')));</code> | |||
|- | |||
| Timezone mismatch || GUI shows different time than DB || Settings > System Configuration > National > Timezone | |||
|- | |||
| CDR disabled || Check voipmonitor.conf || Ensure <code>cdr = yes</code> | |||
|- | |||
| Spool directory || Check <code>spooldir</code> path || Verify path exists and has correct permissions | |||
|} | |||
{{Note|If GUI shows yesterday's data but not today's, the most common cause is a missing database partition.}} | |||
==== Sensor Down ==== | |||
<syntaxhighlight lang="bash"> | |||
# Check sensor service | |||
systemctl status voipmonitor | |||
# View recent logs | |||
journalctl -u voipmonitor -n 500 | |||
# Check database connectivity | |||
mysql -h DB_HOST -u voipmonitor -p -e "SELECT 1" | |||
# Restart if needed | |||
systemctl restart voipmonitor | |||
</syntaxhighlight> | |||
=== No Audio Playback === | |||
If QoS data is visible but no audio: | |||
<syntaxhighlight lang="bash"> | |||
# Check voipmonitor.conf | |||
grep -E "^savertp|^savegraph" /etc/voipmonitor.conf | |||
# Should show: | |||
# savertp = yes | |||
# savegraph = yes (optional) | |||
</syntaxhighlight> | |||
See [[Sniffer_configuration#RTP_and_Audio_Recording|RTP and Audio Recording]] for detailed configuration. | |||
== Database Issues == | |||
=== GUI Queries Timeout (40-50 seconds) === | |||
'''MySQL/MariaDB tuning:''' | |||
<syntaxhighlight lang="ini"> | |||
# /etc/mysql/mysql.conf.d/mysqld.cnf or /etc/my.cnf.d/server.cnf | |||
[mysqld] | |||
# Set to 50-70% of available RAM | |||
innodb_buffer_pool_size = 4G | |||
# Reduce disk I/O (slight durability tradeoff) | |||
innodb_flush_log_at_trx_commit = 2 | |||
# Increase connection timeout | |||
wait_timeout = 28800 | |||
interactive_timeout = 28800 | |||
</syntaxhighlight> | |||
'''Apache mod_fcgid timeout:''' | |||
If you see "server side error - check your http server error log. - connection to the web server was lost / interrupted": | |||
<syntaxhighlight lang="apache"> | |||
# In httpd.conf or apache2.conf | |||
<IfModule mod_fcgid.c> | |||
FcgidIdleTimeout 900 | |||
FcgidProcessLifeTime 7200 | |||
FcgidConnectTimeout 300 | |||
FcgidIOTimeout 900 | |||
</IfModule> | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash"> | |||
systemctl restart apache2 # or httpd | |||
</syntaxhighlight> | |||
=== Too Many Connections === | |||
<syntaxhighlight lang="sql"> | |||
-- Check current connections | |||
SHOW STATUS LIKE 'Threads_connected'; | |||
SHOW VARIABLES LIKE 'max_connections'; | |||
-- Increase limit (temporary) | |||
SET GLOBAL max_connections = 500; | |||
-- Permanent: add to my.cnf | |||
-- max_connections = 500 | |||
</syntaxhighlight> | |||
=== MySQL Swap Memory Warning === | |||
If you see swap memory warning on GUI login: | |||
* '''Less than 50 MB swap''' - Safe to ignore, minor performance impact | |||
* '''Hundreds of MB or GB''' - Investigate memory usage, consider increasing RAM or reducing innodb_buffer_pool_size | |||
<syntaxhighlight lang="bash"> | |||
# Check MySQL memory usage | |||
ps aux | grep mysqld | |||
free -h | |||
</syntaxhighlight> | |||
=== Unknown Column in Field List === | |||
If GUI shows "Unknown column [table].[column] in 'field list'": | |||
<syntaxhighlight lang="bash"> | |||
# Method 1: URL parameter (fastest) | |||
# Add ?check_tables=1 to GUI URL: | |||
# http://your-gui-ip/admin.php?check_tables=1 | |||
# Method 2: Command line | |||
cd /var/www/html | |||
php php/run.php dbcheck | |||
# Method 3: Restart sensor (if disable_dbupgradecheck=no) | |||
systemctl restart voipmonitor | |||
</syntaxhighlight> | |||
=== Database Corruption === | |||
'''Recovery methods (try in order):''' | |||
'''Method 1: Table repair''' | |||
<syntaxhighlight lang="bash"> | |||
mysqlcheck -u root -p --auto-repair voipmonitor | |||
</syntaxhighlight> | |||
'''Method 2: Drop and recreate specific table''' | |||
<syntaxhighlight lang="sql"> | |||
-- Backup structure first | |||
SHOW CREATE TABLE problematic_table; | |||
-- Drop and let sensor recreate | |||
DROP TABLE problematic_table; | |||
-- Restart sensor: systemctl restart voipmonitor | |||
</syntaxhighlight> | |||
'''Method 3: InnoDB force recovery''' | |||
<syntaxhighlight lang="ini"> | |||
# Add to my.cnf [mysqld] section: | |||
innodb_force_recovery = 1 | |||
# Restart MySQL, export data, remove option, reimport | |||
</syntaxhighlight> | |||
{{Warning|After using innodb_force_recovery, remove the option before resuming normal operations. The database is read-only while this option is set.}} | |||
'''Method 4: PCAP restore''' | |||
If PCAPs are preserved, drop database and let sensor reindex: | |||
<syntaxhighlight lang="bash"> | |||
# Edit voipmonitor.conf | |||
reindex_all = yes # (temporary) | |||
systemctl restart voipmonitor | |||
# Wait for reindexing to complete, then remove reindex_all | |||
</syntaxhighlight> | |||
See [[Database_troubleshooting]] for detailed recovery procedures. | |||
=== MySQL 8.0 Issues === | |||
'''SYSTEM_USER privilege error:''' | |||
<syntaxhighlight lang="sql"> | |||
GRANT SYSTEM_USER ON *.* TO 'voipmonitor'@'localhost'; | |||
GRANT ALL PRIVILEGES ON *.* TO 'voipmonitor'@'localhost' WITH GRANT OPTION; | |||
FLUSH PRIVILEGES; | |||
-- Also set: | |||
SET GLOBAL log_bin_trust_function_creators = 1; | |||
</syntaxhighlight> | |||
'''MySQL 8.0.42 crashes:''' | |||
{{Warning|MySQL 8.0.42 has known bugs causing VoIPmonitor crashes. Upgrade to 8.0.43 or later.}} | |||
<syntaxhighlight lang="bash"> | |||
mysql --version | |||
# If 8.0.42: | |||
sudo apt install --only-upgrade mysql-server-8.0 # Debian/Ubuntu | |||
sudo dnf update mysql-server # RHEL | |||
</syntaxhighlight> | |||
=== Managed Database: Primary Key Error === | |||
For DigitalOcean, AWS RDS, Google Cloud SQL: | |||
<syntaxhighlight lang="sql"> | |||
-- Disable in managed DB console or parameter group: | |||
sql_require_primary_key = OFF | |||
</syntaxhighlight> | |||
== GUI Upgrade Issues == | == GUI Upgrade Issues == | ||
=== Cannot Login After Upgrade === | |||
== | '''Reset password via database:''' | ||
<syntaxhighlight lang="sql"> | |||
UPDATE users SET password = MD5('newpassword') WHERE username = 'admin'; | |||
</syntaxhighlight> | |||
'''Redis session issue (login loop):''' | |||
< | <syntaxhighlight lang="bash"> | ||
redis-cli FLUSHALL | |||
systemctl restart php-fpm | |||
</syntaxhighlight> | |||
=== VM Binary Error === | |||
<syntaxhighlight lang="bash"> | |||
cd /var/www/html | cd /var/www/html | ||
php php/run.php upgrade -f | |||
</syntaxhighlight> | |||
=== Invalid Compressed Data === | |||
Usually caused by incorrect web root ownership: | |||
<syntaxhighlight lang="bash"> | |||
chown -R www-data:www-data /var/www/html # Debian/Ubuntu | |||
chown -R apache:apache /var/www/html # RHEL/CentOS | |||
</syntaxhighlight> | |||
# | === Unable to Remove Old Files === | ||
php php/ | |||
</ | <syntaxhighlight lang="bash"> | ||
# Fix tshark ownership | |||
chown www-data:www-data /var/www/html/bin/tshark* | |||
# Retry upgrade from GUI | |||
</syntaxhighlight> | |||
=== Upgrade Not Visible === | |||
Check internet connectivity from GUI server: | |||
<syntaxhighlight lang="bash"> | |||
curl -I https://www.voipmonitor.org | |||
ping www.voipmonitor.org | |||
</syntaxhighlight> | |||
== Permission Issues == | |||
=== Incorrect Ownership Error === | |||
Often caused by missing execute permissions on binaries: | |||
<syntaxhighlight lang="bash"> | |||
# Fix bin directory | |||
chmod +x /var/www/html/bin/* | |||
# Verify | |||
ls -la /var/www/html/bin/ | |||
</syntaxhighlight> | |||
=== NAS Spool Permission Denied === | |||
<syntaxhighlight lang="bash"> | |||
# Use ACLs (recommended) | |||
setfacl -R -m u:www-data:rwx /path/to/nas/spool | |||
# CRITICAL: Set on ALL parent directories too | |||
setfacl -m u:www-data:rx /NAS | |||
setfacl -m u:www-data:rx /NAS/voipmonitor | |||
# Verify | |||
sudo -u www-data ls /path/to/nas/spool | |||
</syntaxhighlight> | |||
=== SELinux Blocking mscgen (SIP Call Flow Diagrams) === | |||
If SIP call flow diagram shows "convert msc to svg (mscgen): unknown error": | |||
<syntaxhighlight lang="bash"> | |||
# Check SELinux denials | |||
ausearch -m avc -ts recent | grep mscgen | |||
# Create policy module | |||
grep mscgen /var/log/audit/audit.log | audit2allow -M mscgen_local | |||
semodule -i mscgen_local.pp | |||
</syntaxhighlight> | |||
== IonCube and PHP Issues == | |||
=== Temp Directory Not Writable === | |||
<syntaxhighlight lang="bash"> | |||
# Check and fix /tmp permissions | |||
ls -ld /tmp | |||
chmod 1777 /tmp | |||
# Check SELinux | |||
getenforce | |||
# If Enforcing, try: setenforce 0 | |||
# Check systemd PrivateTmp | |||
systemctl show httpd | grep PrivateTmp | |||
# If true, create override: | |||
# /etc/systemd/system/httpd.service.d/privatetmp.conf | |||
# [Service] | |||
# PrivateTmp=false | |||
</syntaxhighlight> | |||
=== PHP CLI vs Web Server Mismatch === | |||
<syntaxhighlight lang="bash"> | |||
# Test as web server user | |||
sudo -u www-data php -r 'echo extension_loaded("ionCube Loader")?"yes":"no";' | |||
# Compare configs | |||
php --ini # CLI config | |||
# Create phpinfo: echo '<?php phpinfo();' > /var/www/html/info.php | |||
# Check "Loaded Configuration File" in browser | |||
# Remove after: rm /var/www/html/info.php | |||
</syntaxhighlight> | |||
=== License Activation: Server Side Error - Forbidden === | |||
This indicates ionCube PHP version incompatibility: | |||
{| class="wikitable" | |||
! GUI Version !! PHP Version | |||
|- | |||
| v26.37+ || PHP 8.3 supported | |||
|- | |||
| Older || PHP 8.2 or earlier required | |||
|} | |||
<syntaxhighlight lang="bash"> | |||
# Check Apache error log | |||
tail -50 /var/log/apache2/error.log | grep -i ioncube | |||
# Solution: Either upgrade GUI to v26.37+ or downgrade PHP to 8.2 | |||
</syntaxhighlight> | |||
== Other Issues == | |||
=== Invalid Timezone (GUI Inaccessible) === | |||
<syntaxhighlight lang="bash"> | |||
# Edit directly | |||
nano /var/www/html/config/configuration.php | |||
# Find and fix: | |||
define('TIMEZONE', 'UTC'); # Use valid timezone | |||
define('SENSORS_TIMEZONE', 'UTC'); | |||
systemctl restart php-fpm | |||
</syntaxhighlight> | |||
Valid timezones: <code>UTC</code>, <code>Europe/London</code>, <code>America/New_York</code>, <code>Europe/Berlin</code>, etc. | |||
=== Faxes Not Displayed === | |||
<syntaxhighlight lang="bash"> | |||
# Install libtiff-tools | |||
apt-get install libtiff-tools # Debian/Ubuntu | |||
yum install libtiff-tools # RHEL/CentOS | |||
# Verify | |||
which tiff2pdf | |||
</syntaxhighlight> | |||
=== File Attachment Blocked === | |||
Files like .xlsx, .docx are blocked for security. Compress to .zip or .gz: | |||
<syntaxhighlight lang="bash"> | |||
zip archive.zip your_file.xlsx | |||
</syntaxhighlight> | |||
=== RRD Graph Errors After Hardware Change === | |||
<syntaxhighlight lang="bash"> | |||
# Delete corrupted RRD files | |||
rm -rf /var/spool/voipmonitor/rrd/* | |||
# Sensor will recreate them | |||
systemctl restart voipmonitor | |||
</syntaxhighlight> | |||
=== /dev/shm Full (Session Logout Issues) === | |||
<syntaxhighlight lang="bash"> | |||
# Check usage | |||
df -h /dev/shm | |||
# Temporary increase | |||
mount -o remount,size=1G /dev/shm | |||
# Permanent: edit /etc/fstab | |||
# tmpfs /dev/shm tmpfs defaults,size=1G 0 0 | |||
</syntaxhighlight> | |||
=== Concurrent Calls Stats Error === | |||
Usually caused by duplicate cron entries: | |||
<syntaxhighlight lang="bash"> | |||
# Check for duplicates | |||
grep "voipmonitor\|run.php" /etc/crontab | |||
# Comment out duplicates, keep only one | |||
</syntaxhighlight> | |||
=== TShark CVE Security Updates === | |||
The bundled tshark may have known CVEs. To update: | |||
<syntaxhighlight lang="bash"> | |||
cd /var/www/html/bin | |||
# Download updated binary from Wireshark | |||
wget https://www.wireshark.org/download/automated/linux64/tshark | |||
chmod +x tshark | |||
chown www-data:www-data tshark | |||
</syntaxhighlight> | |||
=== Dashboard Edit Icon Grayed Out === | |||
User lacks edit permission. Grant via '''User Management''' > edit user > enable "Edit Dashboard" permission. | |||
== GUI Not Loading (Spool Directory Ownership) == | |||
If the GUI is not loading or shows generic error messages, the cause may be incorrect ownership of the spool directory by the web server user. | |||
<syntaxhighlight lang="bash"> | |||
# Fix spool directory ownership | |||
chown -R www-data:www-data /var/spool/voipmonitor # Debian/Ubuntu | |||
# OR | |||
chown -R apache:apache /var/spool/voipmonitor # RHEL/CentOS | |||
</syntaxhighlight> | |||
< | {{Note|The spool directory path is defined by the <code>spooldir</code> parameter in <code>/etc/voipmonitor.conf</code>. Use the correct path for your configuration.}} | ||
== AI Summary for RAG == | == AI Summary for RAG == | ||
''' | '''Summary:''' VoIPmonitor GUI troubleshooting guide covering: (1) HTTP 500 errors - try client-side steps first (different browser, incognito, clear cache), then check Apache/PHP error logs and SELinux; (2) No CDR for current day - check sensor status in Settings > Sensors, generate debug log if UP, check partitions/timezone/cdr config if Down; (3) GUI debug mode - add ?debug=31415 to URL; (4) Database timeouts - tune innodb_buffer_pool_size (50-70% RAM), increase mod_fcgid timeouts; (5) Database corruption - use mysqlcheck, drop/recreate tables, or innodb_force_recovery; (6) GUI upgrade issues - reset password via database, fix ownership, run php php/run.php upgrade -f; (7) Permission errors - chmod +x bin/*, use setfacl for NAS; (8) IonCube errors - check SELinux, PHP version compatibility (GUI v26.37+ for PHP 8.3); (9) Schema errors - use ?check_tables=1 URL parameter. | ||
'''Keywords:''' HTTP 500, no CDR, sensor status, debug mode, ?debug=31415, innodb_buffer_pool_size, MySQL tuning, database corruption, mysqlcheck, innodb_force_recovery, GUI upgrade, password reset, IonCube, SELinux, PHP 8.3, ?check_tables=1, NAS permissions, setfacl, mod_fcgid timeout, FcgidIOTimeout, mscgen, SIP call flow, tshark CVE, MySQL 8.0.42, SYSTEM_USER privilege, /dev/shm, timezone error, libtiff-tools, file attachment blocked | |||
'''Key Questions:''' | '''Key Questions:''' | ||
* How | * HTTP 500 error on GUI - what to try first? | ||
* | * No CDR or dashboard data for current day - how to diagnose? | ||
* | * How to enable GUI debug mode? | ||
* | * GUI queries timeout - how to tune MySQL? | ||
* | * Database corrupted - which recovery method to use? | ||
* | * Cannot login after GUI upgrade - how to reset password? | ||
* | * Permission errors with NAS spool - how to fix? | ||
* | * IonCube temp directory errors - what causes them? | ||
* GUI shows "Unknown column in field list" - how to fix? | |||
* SIP call flow diagram shows error - how to fix SELinux blocking? | |||
* MySQL 8.0.42 causing crashes - what to do? | |||
* License activation fails with Forbidden error - what causes it? | |||
Latest revision as of 01:37, 10 January 2026
GUI Troubleshooting
This guide covers common VoIPmonitor GUI issues organized by symptom category.
| Category | Common Issues |
|---|---|
| Access Issues | HTTP 500, blank screen, single user cannot access |
| No Data Issues | No CDR for today, empty dashboard, missing calls |
| Database Issues | Timeouts, corruption, connections, schema errors |
| GUI Upgrade Issues | Cannot login, blank screen, VM Binary error |
| Permission Issues | Ownership errors, NAS access, binary execution |
| IonCube/PHP Issues | Loader errors, temp directory, PHP version |
| Other Issues | Timezone, fax, attachments, RRD graphs |
Access Issues
HTTP 500 Error
Client-side steps (try first):
- Different browser or incognito mode
- Clear browser cache (Ctrl+Shift+Delete)
- Disable browser extensions
- Try from a different network
Server-side diagnosis:
# Check Apache error log
tail -100 /var/log/apache2/error.log # Debian/Ubuntu
tail -100 /var/log/httpd/error_log # RHEL/CentOS
# Check PHP-FPM log
tail -100 /var/log/php-fpm/www-error.log
# Check SELinux
getenforce
# If "Enforcing", try temporarily: setenforce 0
💡 Tip:
Firefox/Waterfox: Blank Page or Hang on Login
Firefox/Waterfox: Blank Page or Hang on Login
If the Web GUI shows a blank page or hangs during login, but works correctly in Chrome/Edge, the cause is typically a browser extension conflict.
Diagnosis:
- Issue occurs in Firefox/Waterfox but not Chrome/Edge
- Works when Developer Tools (F12) is open
- Persists in private mode and through SSH tunnels
Solution:
- In Firefox, navigate to about:addons
- Select Extensions tab and disable all extensions
- Close and reopen Firefox completely
- Attempt to log in to the GUI
- If successful, one extension is the cause. Re-enable extensions one by one (or in pairs) restarting Firefox and testing after each change to identify the specific culprit
Single User Cannot Access
If one user cannot access GUI while others can:
- Check IP whitelist: User Management > edit user > "Access from IPs" field
- Check network path: Compare user's route vs working users
- Capture traffic:
tcpdump -i eth0 host USER_IP -w /tmp/debug.pcap
Blank Screen After Upgrade
# Check for conflicting PEAR file
ls -la /usr/share/pear/constants.php
# If exists, remove it:
rm /usr/share/pear/constants.php
# Check SELinux
getenforce
# If Enforcing, temporarily disable: setenforce 0
# Clear browser cache
# Press Ctrl+F5 in browser
No Data Issues
No CDR or Dashboard Data for Current Day
Step 1: Check sensor status
Navigate to Settings > Sensors in GUI:
- Status UP - Sensor connected, proceed to Step 2
- Status Down - Sensor disconnected, see Sensor Down below
Step 2: Generate debug log (if sensor UP)
Navigate to Tools > Generate Debug Log and share the link with VoIPmonitor support.
Step 3: Check common causes
| Cause | Diagnosis | Solution |
|---|---|---|
| Missing partition | SHOW CREATE TABLE cdr; - check partition for today's date |
ALTER TABLE cdr ADD PARTITION (PARTITION pYYYYMMDD VALUES LESS THAN (UNIX_TIMESTAMP('YYYY-MM-DD')));
|
| Timezone mismatch | GUI shows different time than DB | Settings > System Configuration > National > Timezone |
| CDR disabled | Check voipmonitor.conf | Ensure cdr = yes
|
| Spool directory | Check spooldir path |
Verify path exists and has correct permissions |
ℹ️ Note: If GUI shows yesterday's data but not today's, the most common cause is a missing database partition.
Sensor Down
# Check sensor service
systemctl status voipmonitor
# View recent logs
journalctl -u voipmonitor -n 500
# Check database connectivity
mysql -h DB_HOST -u voipmonitor -p -e "SELECT 1"
# Restart if needed
systemctl restart voipmonitor
No Audio Playback
If QoS data is visible but no audio:
# Check voipmonitor.conf
grep -E "^savertp|^savegraph" /etc/voipmonitor.conf
# Should show:
# savertp = yes
# savegraph = yes (optional)
See RTP and Audio Recording for detailed configuration.
Database Issues
GUI Queries Timeout (40-50 seconds)
MySQL/MariaDB tuning:
# /etc/mysql/mysql.conf.d/mysqld.cnf or /etc/my.cnf.d/server.cnf
[mysqld]
# Set to 50-70% of available RAM
innodb_buffer_pool_size = 4G
# Reduce disk I/O (slight durability tradeoff)
innodb_flush_log_at_trx_commit = 2
# Increase connection timeout
wait_timeout = 28800
interactive_timeout = 28800
Apache mod_fcgid timeout:
If you see "server side error - check your http server error log. - connection to the web server was lost / interrupted":
# In httpd.conf or apache2.conf
<IfModule mod_fcgid.c>
FcgidIdleTimeout 900
FcgidProcessLifeTime 7200
FcgidConnectTimeout 300
FcgidIOTimeout 900
</IfModule>
systemctl restart apache2 # or httpd
Too Many Connections
-- Check current connections
SHOW STATUS LIKE 'Threads_connected';
SHOW VARIABLES LIKE 'max_connections';
-- Increase limit (temporary)
SET GLOBAL max_connections = 500;
-- Permanent: add to my.cnf
-- max_connections = 500
MySQL Swap Memory Warning
If you see swap memory warning on GUI login:
- Less than 50 MB swap - Safe to ignore, minor performance impact
- Hundreds of MB or GB - Investigate memory usage, consider increasing RAM or reducing innodb_buffer_pool_size
# Check MySQL memory usage
ps aux | grep mysqld
free -h
Unknown Column in Field List
If GUI shows "Unknown column [table].[column] in 'field list'":
# Method 1: URL parameter (fastest)
# Add ?check_tables=1 to GUI URL:
# http://your-gui-ip/admin.php?check_tables=1
# Method 2: Command line
cd /var/www/html
php php/run.php dbcheck
# Method 3: Restart sensor (if disable_dbupgradecheck=no)
systemctl restart voipmonitor
Database Corruption
Recovery methods (try in order):
Method 1: Table repair
mysqlcheck -u root -p --auto-repair voipmonitor
Method 2: Drop and recreate specific table
-- Backup structure first
SHOW CREATE TABLE problematic_table;
-- Drop and let sensor recreate
DROP TABLE problematic_table;
-- Restart sensor: systemctl restart voipmonitor
Method 3: InnoDB force recovery
# Add to my.cnf [mysqld] section:
innodb_force_recovery = 1
# Restart MySQL, export data, remove option, reimport
⚠️ Warning: After using innodb_force_recovery, remove the option before resuming normal operations. The database is read-only while this option is set.
Method 4: PCAP restore
If PCAPs are preserved, drop database and let sensor reindex:
# Edit voipmonitor.conf
reindex_all = yes # (temporary)
systemctl restart voipmonitor
# Wait for reindexing to complete, then remove reindex_all
See Database_troubleshooting for detailed recovery procedures.
MySQL 8.0 Issues
SYSTEM_USER privilege error:
GRANT SYSTEM_USER ON *.* TO 'voipmonitor'@'localhost';
GRANT ALL PRIVILEGES ON *.* TO 'voipmonitor'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- Also set:
SET GLOBAL log_bin_trust_function_creators = 1;
MySQL 8.0.42 crashes:
⚠️ Warning: MySQL 8.0.42 has known bugs causing VoIPmonitor crashes. Upgrade to 8.0.43 or later.
mysql --version
# If 8.0.42:
sudo apt install --only-upgrade mysql-server-8.0 # Debian/Ubuntu
sudo dnf update mysql-server # RHEL
Managed Database: Primary Key Error
For DigitalOcean, AWS RDS, Google Cloud SQL:
-- Disable in managed DB console or parameter group:
sql_require_primary_key = OFF
GUI Upgrade Issues
Cannot Login After Upgrade
Reset password via database:
UPDATE users SET password = MD5('newpassword') WHERE username = 'admin';
Redis session issue (login loop):
redis-cli FLUSHALL
systemctl restart php-fpm
VM Binary Error
cd /var/www/html
php php/run.php upgrade -f
Invalid Compressed Data
Usually caused by incorrect web root ownership:
chown -R www-data:www-data /var/www/html # Debian/Ubuntu
chown -R apache:apache /var/www/html # RHEL/CentOS
Unable to Remove Old Files
# Fix tshark ownership
chown www-data:www-data /var/www/html/bin/tshark*
# Retry upgrade from GUI
Upgrade Not Visible
Check internet connectivity from GUI server:
curl -I https://www.voipmonitor.org
ping www.voipmonitor.org
Permission Issues
Incorrect Ownership Error
Often caused by missing execute permissions on binaries:
# Fix bin directory
chmod +x /var/www/html/bin/*
# Verify
ls -la /var/www/html/bin/
NAS Spool Permission Denied
# Use ACLs (recommended)
setfacl -R -m u:www-data:rwx /path/to/nas/spool
# CRITICAL: Set on ALL parent directories too
setfacl -m u:www-data:rx /NAS
setfacl -m u:www-data:rx /NAS/voipmonitor
# Verify
sudo -u www-data ls /path/to/nas/spool
SELinux Blocking mscgen (SIP Call Flow Diagrams)
If SIP call flow diagram shows "convert msc to svg (mscgen): unknown error":
# Check SELinux denials
ausearch -m avc -ts recent | grep mscgen
# Create policy module
grep mscgen /var/log/audit/audit.log | audit2allow -M mscgen_local
semodule -i mscgen_local.pp
IonCube and PHP Issues
Temp Directory Not Writable
# Check and fix /tmp permissions
ls -ld /tmp
chmod 1777 /tmp
# Check SELinux
getenforce
# If Enforcing, try: setenforce 0
# Check systemd PrivateTmp
systemctl show httpd | grep PrivateTmp
# If true, create override:
# /etc/systemd/system/httpd.service.d/privatetmp.conf
# [Service]
# PrivateTmp=false
PHP CLI vs Web Server Mismatch
# Test as web server user
sudo -u www-data php -r 'echo extension_loaded("ionCube Loader")?"yes":"no";'
# Compare configs
php --ini # CLI config
# Create phpinfo: echo '<?php phpinfo();' > /var/www/html/info.php
# Check "Loaded Configuration File" in browser
# Remove after: rm /var/www/html/info.php
License Activation: Server Side Error - Forbidden
This indicates ionCube PHP version incompatibility:
| GUI Version | PHP Version |
|---|---|
| v26.37+ | PHP 8.3 supported |
| Older | PHP 8.2 or earlier required |
# Check Apache error log
tail -50 /var/log/apache2/error.log | grep -i ioncube
# Solution: Either upgrade GUI to v26.37+ or downgrade PHP to 8.2
Other Issues
Invalid Timezone (GUI Inaccessible)
# Edit directly
nano /var/www/html/config/configuration.php
# Find and fix:
define('TIMEZONE', 'UTC'); # Use valid timezone
define('SENSORS_TIMEZONE', 'UTC');
systemctl restart php-fpm
Valid timezones: UTC, Europe/London, America/New_York, Europe/Berlin, etc.
Faxes Not Displayed
# Install libtiff-tools
apt-get install libtiff-tools # Debian/Ubuntu
yum install libtiff-tools # RHEL/CentOS
# Verify
which tiff2pdf
File Attachment Blocked
Files like .xlsx, .docx are blocked for security. Compress to .zip or .gz:
zip archive.zip your_file.xlsx
RRD Graph Errors After Hardware Change
# Delete corrupted RRD files
rm -rf /var/spool/voipmonitor/rrd/*
# Sensor will recreate them
systemctl restart voipmonitor
/dev/shm Full (Session Logout Issues)
# Check usage
df -h /dev/shm
# Temporary increase
mount -o remount,size=1G /dev/shm
# Permanent: edit /etc/fstab
# tmpfs /dev/shm tmpfs defaults,size=1G 0 0
Concurrent Calls Stats Error
Usually caused by duplicate cron entries:
# Check for duplicates
grep "voipmonitor\|run.php" /etc/crontab
# Comment out duplicates, keep only one
TShark CVE Security Updates
The bundled tshark may have known CVEs. To update:
cd /var/www/html/bin
# Download updated binary from Wireshark
wget https://www.wireshark.org/download/automated/linux64/tshark
chmod +x tshark
chown www-data:www-data tshark
Dashboard Edit Icon Grayed Out
User lacks edit permission. Grant via User Management > edit user > enable "Edit Dashboard" permission.
GUI Not Loading (Spool Directory Ownership)
If the GUI is not loading or shows generic error messages, the cause may be incorrect ownership of the spool directory by the web server user.
# Fix spool directory ownership
chown -R www-data:www-data /var/spool/voipmonitor # Debian/Ubuntu
# OR
chown -R apache:apache /var/spool/voipmonitor # RHEL/CentOS
ℹ️ Note: The spool directory path is defined by the spooldir parameter in /etc/voipmonitor.conf. Use the correct path for your configuration.
AI Summary for RAG
Summary: VoIPmonitor GUI troubleshooting guide covering: (1) HTTP 500 errors - try client-side steps first (different browser, incognito, clear cache), then check Apache/PHP error logs and SELinux; (2) No CDR for current day - check sensor status in Settings > Sensors, generate debug log if UP, check partitions/timezone/cdr config if Down; (3) GUI debug mode - add ?debug=31415 to URL; (4) Database timeouts - tune innodb_buffer_pool_size (50-70% RAM), increase mod_fcgid timeouts; (5) Database corruption - use mysqlcheck, drop/recreate tables, or innodb_force_recovery; (6) GUI upgrade issues - reset password via database, fix ownership, run php php/run.php upgrade -f; (7) Permission errors - chmod +x bin/*, use setfacl for NAS; (8) IonCube errors - check SELinux, PHP version compatibility (GUI v26.37+ for PHP 8.3); (9) Schema errors - use ?check_tables=1 URL parameter.
Keywords: HTTP 500, no CDR, sensor status, debug mode, ?debug=31415, innodb_buffer_pool_size, MySQL tuning, database corruption, mysqlcheck, innodb_force_recovery, GUI upgrade, password reset, IonCube, SELinux, PHP 8.3, ?check_tables=1, NAS permissions, setfacl, mod_fcgid timeout, FcgidIOTimeout, mscgen, SIP call flow, tshark CVE, MySQL 8.0.42, SYSTEM_USER privilege, /dev/shm, timezone error, libtiff-tools, file attachment blocked
Key Questions:
- HTTP 500 error on GUI - what to try first?
- No CDR or dashboard data for current day - how to diagnose?
- How to enable GUI debug mode?
- GUI queries timeout - how to tune MySQL?
- Database corrupted - which recovery method to use?
- Cannot login after GUI upgrade - how to reset password?
- Permission errors with NAS spool - how to fix?
- IonCube temp directory errors - what causes them?
- GUI shows "Unknown column in field list" - how to fix?
- SIP call flow diagram shows error - how to fix SELinux blocking?
- MySQL 8.0.42 causing crashes - what to do?
- License activation fails with Forbidden error - what causes it?