====================
Usage Data Collector
====================

The Crate Usage Data Collector (UDC) is a sub-system that gathers usage data, reporting it to
the UDC server at https://udc.crate.io.
It is easy to disable, and does not collect any data that is confidential.
For more information about what is being sent, see below.

The Crate team uses this information as a form of automatic, effortless feedback from the
Crate community. We want to verify that we are doing the right thing by matching download
statistics with usage statistics. After each release, we can see if there is a larger retention
span of the server software.

The data collected is clearly stated here. If any future versions of this system collect
additional data, we will clearly announce those changes.

The Crate team is very concerned about your privacy.
We do not disclose any personally identifiable information.

Technical Information
=====================
To gather good statistics about Crate usage, UDC collects this information:

    ================  =============================================================================
    Name              Description
    ================  =============================================================================
    Kernel Version    The build number, and if there are any modifications to the kernel.
    Cluster Id        A randomized globally unique id created every time the whole cluster is
                      restarted.
    Master            Boolean whether the current node is master.
    Ping Count        UDC holds an internal counter per node which is incremented for every ping,
                      and reset on every restart of the a node.
    Crate Version     The crate version.
    Java Version      The Java version crate is currently running with.
    Hardware Address  MAC address to uniquely identify instances behind firewalls.
    ================  =============================================================================

After startup, UDC waits for 10 minutes before sending the first ping.
It does this for two reasons; first, we don’t want the startup to be slower because of UDC,
and secondly, we want to keep pings from automatic tests to a minimum.
By default, UDC is sending pings every 24 hours.
The ping to the UDC servers is done with a HTTP GET.

Configuration
=============
The Usage Data Collector can be configured by following parameters:

    =================    ====================    ========================================
    Name                 Default Value           Description
    =================    ====================    ========================================
    udc.enabled          true                    Disable/Enable UDC.
    udc.initial_delay    10 Minutes              The delay for first ping after start-up.
    udc.interval         24 Hours                The interval a ping is sent.
    udc.url              https://udc.crate.io    The url the ping is sent to.
    =================    ====================    ========================================


How to disable UDC
==================
There are two ways you can disable UDC:

By configuration
----------------
Just add following to your ``crate.yml`` configuration file::

    udc.enabled:  false

By system property
-------------------------
If you do not want to make any change to the jars or to the configuration,
a system property setting like this will also make sure that UDC is never activated::

    -Dudc.enabled=false
