This project is to develop a plugin for the MariaDB server that provides a "phone home" feature. When this plugin is installed, the database server will regularly contact a web service operated by Monty Program Ab, and upload a bundle of non-sensitive information. The collection and analysis of this information will give MariaDB developers useful insight into the user base Summary of collected information (that anyone will be allowed to access) how many servers are running the plugin - can help estimate total number of running servers worldwide what platform & hardware they are running on what version and build they are running what features are being used Information sent from each instance A unique server identifier secure hash of MAC address + listening port unique, but doesn't leak customer data Processor type, speed, processor count / core count, bitwidth (32/64) OS / Distro / Kernel id and version Which storage engines are in use Number and size of databases (disk space, probably can't for cluster) Counts / Rates of I/O activity List of loaded plugins SHOW STATUS SHOW VARIABLES (but not anything that can give away user identity) will be a explicit list of what variables will be shown gives among other things, the MySQL server version & Server uptime (optionally by user) geographic location (optionally by user) user information / company name (optionally by user) Monty Program Ab customer support contract id Data Not Sent Contents or names of any user database Anything that allows MariaDB to track down the user if the user doesn't explicitly permit it What will run at Monty Program's or/and the users datacenter simple CGI on Apache takes a HTTP REST PUT insert received information into a database database schema is TBD, but not complicated Analysis/Reporting/Business Process are TBD What will run on the users' machines Daemon Plugin module can be dynamically loaded, or statically compiled runs as part of the mysqld process daemon plugins have full access to server internals Start and use it's own thread will not block normal operation will yield often will hold read mutexs as short as possible Loop and delay on an interval (specified by option) probably default to be on server restart and about once a week randomly spread time to avoid too many calling in at the same moment Gather data from internal mysqld data structures Convert data into simple text format (human readable) Transmit data via HTTP REST POST to one or more given URLs
In the following text the feature will be called "feedback". However this name is in no way final, and can be changed later. 1. The basics * It will be an INFORMATION_SCHEMA plugin called "feedback". * This plugin introduces a new I_S table (called "feedback") - the content of this table shows what data are sent as a feedback report. * One can query it just normally, or even send reports like mysql -e 'select * from information_schema.feedback'|curl -F data=@- http://... * For ease of use and installation the plugin will have sending code built-in. It will be disabled by default. * The plugin will support the following command-line options: --feedback-send-retry-wait=# Wait this many seconds before retrying a failed send. --feedback-send-timeout=# Timeout (in seconds) for the sending the report. --feedback-sending-mode=# When to send the feedback report. Any combination of STARTUP, PERIODIC, SHUTDOWN. --feedback-url=name Space separated URLs to send the feedback report to. --feedback-user-info=name User specified string that will be included in the feedback report. * We only support http:// and https:// urls * plugin will send the data exactly as "curl -F data=@-" 2. The data * plugin will send the complete content of SHOW STATUS and subset of SHOW VARIABLES (for example, all LIKE "%dir" variables will *not* be included in the report) * it will include the list of plugins (plugin name + plugin version) === all the above will work on MariaDB and MySQL starting from 5.1. 5.3 part of the task is in WL#150
Status updated. --- /tmp/wklog.12.old.9377 2011-10-15 17:48:53.000000000 +0000 +++ /tmp/wklog.12.new.9377 2011-10-15 17:48:53.000000000 +0000 @@ -1,2 +1,2 @@ -On-Hold +Complete
waiting for wl#151
Category updated. --- /tmp/wklog.12.old.7366 2011-06-29 14:27:38.000000000 +0000 +++ /tmp/wklog.12.new.7366 2011-06-29 14:27:38.000000000 +0000 @@ -1,2 +1,2 @@ -Server-Sprint +Server-BackLog
Status updated. --- /tmp/wklog.12.old.7347 2011-06-29 14:27:17.000000000 +0000 +++ /tmp/wklog.12.new.7347 2011-06-29 14:27:17.000000000 +0000 @@ -1,2 +1,2 @@ -Code-Review +On-Hold
Implementor signoff Code Review signoff
Code Review updated: -> Monty
Status updated. --- /tmp/wklog.12.old.29025 2010-10-03 18:08:09.000000000 +0000 +++ /tmp/wklog.12.new.29025 2010-10-03 18:08:09.000000000 +0000 @@ -1,2 +1,2 @@ -In-Progress +Code-Review
Dependency created: WL#151 now depends on WL#12
Dependency created: WL#150 now depends on WL#12
Version updated. --- /tmp/wklog.12.old.24105 2010-09-26 13:55:00.000000000 +0000 +++ /tmp/wklog.12.new.24105 2010-09-26 13:55:00.000000000 +0000 @@ -1,2 +1,2 @@ -Server-5.3 +Server-5.1