GUI troubleshooting
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:
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.
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?