No Data Transmitted? Troubleshooting Checklist
This article contains a checklist of all the potential common problems that are the cause for no data being transmitted to the Tideways backend even though tideways-php and tideways-daemon packages are installed.
To find out if data gets transmitted, take a look at the tideways-daemon logfile usually located at /var/log/tideways/daemon.log, which prints counters of transmitted data every minute. When no data is transmitted the logfile should contain the following lines over and over again with the number 0:
$ tail /var/log/tideways/daemon.log 2016/03/14 19:16:32 Current: Collected 0 measurements, 0 profiles, 0 summary profiles, 0 exceptions since startup. 2016/03/14 19:17:32 Current: Collected 0 measurements, 0 profiles, 0 summary profiles, 0 exceptions since startup. 2016/03/14 19:18:32 Current: Collected 0 measurements, 0 profiles, 0 summary profiles, 0 exceptions since startup
If the number of measurements, profiles or summary profiles is increasing between every minute, then the collection is working. For each project and service a notice is written to the daemon.log file so that you know that collection works:
$ tail /var/log/tideways/daemon.log 2021/01/26 18:16:20 Starting to record data for new appplication with key '*************aaaa' 2021/01/26 18:16:20 Starting to record data for service 'web' for application with key '*************aaaa'
If no data is collected from your server to Tideways this could be for the following reasons:
The tideways extension is not installed for your PHP process, because it is not loaded with extension=tideways.so - Check the phpinfo() output for your PHP process for the occurrence of the tideways extension.
The Tideways PHP extension is not started during a request, because you don’t have an API Key configured. In this case when looking at the phpinfo() the first entry called "Is Profiler Started?" has the value "No". It should be "Yes".
If your Tideways extension is collecting monitoring data, but no traces. Then this might be because tideways.sample_rate=0 - which disables the collection of traces entirely. No collected traces can also be forced because of your plan or because you have exceeded the number of hosts for your plan and the current server is throttled not to transmit any traces. See the Sampling chapter for more information.
If you have open_basedir enabled, see this dedicated troubleshooting page to configure tideways correctly.
If everything on the PHP end is configured correctly, then maybe the tideways-daemon process is not running on your machine. Check with "ps aux|grep tideways-daemon" if it is running. If the daemon is not running the daemon.log will not contain new entries every minute.
If the PHP extension and daemon are running correctly, then the PHP extension could send the data to a different source that the daemon is listening to. By default both agree on a socket file located at /var/run/tideways/tidewaysd.sock, but it is possible to configure the PHP extension to a different location using the tideways.connection INI setting and to have the daemon listen to another source by starting it with --address pointing to another socket or tcp/ip address and port. Check both values.
If PHP extension and daemon are configured to talk to each other correctly, but still no data is reaching the daemon, then set the "tideways.log_level=3" configuration variable and restart your webserver or PHP-FPM. The error_log (configured in PHP.ini or the SAPIs default such as the error.log file of the webserver) then contains a lot of debug information about Tideways. If the PHP extension runs into problems transmitting data you will be able to find it in this logs. IMPORTANT: Make sure to disable this setting quickly as it can produce quite a lot of log data for every PHP request.
You can start the daemon in debug mode to get more information about what is happening. Open the /etc/default/tideways-daemon file (or create it) and set the configuration value TIDEWAYS_DAEMON_EXTRA="--debug" or if the environment variable is already present, append the --debug flag there. One common reason here is that your PHP traces contain invalid character strings that will cause the JSON decoder in Go to run into an error when accepting the data. In this case you will see information about JSON decoding errors.
Please open up a Support Ticket by writing to [email protected] with detailed information about your debugging steps taken here and we will help you get setup problems sorted out.