Telemetry and version checking

We enable anonymous usage sharing to help us better understand and assist TimescaleDB users, as well as provide automated version checks. We emphasize that privacy of our users is paramount, so we do not collect any personally-identifying information. The following is an example of the JSON that is sent to our servers about a specific deployment:

  1. {
  2. "db_uuid": "26917841-2fc0-48fd-b096-ba19b3fda98f",
  3. "license": {
  4. "edition": "community"
  5. },
  6. "exported_db_uuid": "8dd4543c-f44e-43c9-a666-02d23bb09b90",
  7. "installed_time": "2000-04-17 10:56:59.427738-04",
  8. "last_tuned_time": "2001-02-03T04:05:06-0300",
  9. "last_tuned_version": "1.0.0",
  10. "install_method": "source",
  11. "os_name": "Linux",
  12. "os_release": "4.9.125-linuxkit",
  13. "os_version": "#1 SMP Fri Sep 7 08:20:28 UTC 2018",
  14. "os_name_pretty": "Debian GNU/Linux 8 (jessie)",
  15. "postgresql_version": "12.4",
  16. "timescaledb_version": "1.7.0",
  17. "build_architecture": "x86_64",
  18. "build_architecture_bit_size": "64",
  19. "build_os_name": "Linux",
  20. "build_os_version": "4.9.125-linuxkit",
  21. "data_volume": "65982148",
  22. "db_metadata":{
  23. "promscale_version": "0.1.0",
  24. "promscale_commit_hash": ""
  25. },
  26. "num_hypertables": "3",
  27. "num_continuous_aggs": "0",
  28. "num_reorder_policies": "1",
  29. "num_drop_chunks_policies": "2",
  30. "related_extensions":{
  31. "pg_prometheus": "false",
  32. "PostGIS": "true",
  33. "promscale": "true"
  34. }
  35. }

In particular, the UUID fields contain no identifying information. Both UUID fields are randomly generated by appropriately seeded random number generators. For full transparency, we expose a new API function, get_telemetry_report, that returns a text string of the exact JSON that is sent to our servers.

Additionally any content of the table _timescaledb_catalog.metadata which has include_in_telemetry set to true and the value of timescaledb_telemetry.cloud will be included in the telemetry report.

Notably, telemetry reports a different set of values depending on the license that your TimescaleDB instance is running under. If you are using OSS or Community, we only send an “edition” field, which could have a value of either “apache_only” or “community”, as relevant.

Version checking

The database sends telemetry reports periodically in the background. In response to the telemetry report, the database will receive the most recent version of TimescaleDB available for installation. This version will be recorded in the user’s server logs, along with any applicable out-of-date version warnings. While you do not have to update immediately to the newest release, many users have reported that performance issues or bugs automatically resolve after updating their version of TimescaleDB.

Disabling telemetry

Although we invite our community to help us keep improving our product, we do understand when users would like to disable telemetry. Note that disabling telemetry also disables the version checking functionality.

Telemetry is sent on a per-database basis, so users can disable telemetry for specific databases or for an entire instance.

To turn off telemetry for an instance, simply include the following line in your postgresql.conf file:

  1. timescaledb.telemetry_level=off

Alternatively, in a psql console, run:

  1. ALTER [SYSTEM | DATABASE | USER] { *db_name* | *role_specification* } SET timescaledb.telemetry_level=off

If ALTER DATABASE is run, then this will disable telemetry for the specified database, but not for other databases in the instance. If ALTER SYSTEM is run, this will disable telemetry for the entire instance. Note that superuser privileges are necessary to run ALTER SYSTEM.

After running the desired command, reload the new server configuration with SELECT pg_reload_conf() in order for the configuration changes to take effect.

If at a later time you wish to re-enable version checking and telemetry, either include the following line in postgresql.conf:

  1. timescaledb.telemetry_level=basic

or run the following command in psql:

  1. ALTER [SYSTEM | DATABASE | USER] { *db_name* | *role_specification* } SET timescaledb.telemetry_level=basic