What's behind the Call Home option?
Franck Pachot
Posted on November 7, 2024
When you start YugabyteDB using the yugabyted
command, there's a --callhome
option set to true
by default. You might be curious about where it sends information and what data is transmitted. Rest assured, no big brother is watching you. The open-source database allows you to see precisely what it does. You can find the relevant code in call_home.cc.
Another way is to look at the information sent by TCP. What yugabyted
does is start the tablet servers with the following flags:
--callhome_collection_level=medium
--callhome_enabled=true
--callhome_interval_secs=3600
--callhome_tag=
--callhome_url=https://diagnostics.yugabyte.com
In this blog post, I'll trace the TCP packets to diagnostics.yugabyte.com
, but I'll set HTTP instead of HTTPS to read it without playing with certificates.
I ran the following in a container started with docker run -it yugabytedb/yugabyte bash
:
sed -e '/diagnostics.yugabyte.com/s/https/http/' bin/yugabyted
dnf install -y tcpdump
tcpdump -A -i any dst host $(host diagnostics.yugabyte.com | awk '{print $NF}') &
yugabyted start \
--tserver_flags='callhome_url=http://diagnostics.yugabyte.com' \
--master_flags='callhome_url=http://diagnostics.yugabyte.com'
Here is what I see with the default medium
collection level:
POST / HTTP/1.1
Host: diagnostics.yugabyte.com
Accept: */*
Content-Type: application/json
Content-Length: 1406
{
"gflags": "--cql_proxy_bind_address=172.17.0.2:9042 --default_memory_limit_to_ram_ratio=0.59999999999999998 --enable_ysql_conn_mgr_stats=false --fs_data_dirs=/root/var/data --instance_uuid_override=d1ab793f63a548fe802ac438e4ae5e39 --mem_tracker_tcmalloc_gc_release_bytes=134217728 --metrics_snapshotter_interval_ms=11000 --metrics_snapshotter_tserver_metrics_whitelist=handler_latency_yb_tserver_TabletServerService_Read_count,handler_latency_yb_tserver_TabletServerService_Write_count,handler_latency_yb_tserver_TabletServerService_Read_sum,handler_latency_yb_tserver_TabletServerService_Write_sum,disk_usage,cpu_usage,node_up --pgsql_proxy_bind_address=172.17.0.2:5433 --placement_uuid=00ea815e-ef3c-43b1-81cb-7378ea76ad85 --redis_proxy_bind_address=172.17.0.2:6379 --server_broadcast_addresses=172.17.0.2:9100 --server_dump_info_path=/root/var/data/tserver-info --server_tcmalloc_max_total_thread_cache_bytes=438034882 --start_pgsql_proxy=true --start_redis_proxy=false --stop_on_parent_termination=true --tserver_enable_metrics_snapshotter=true --tserver_master_addrs=172.17.0.2:7100 --undefok=stop_on_parent_termination --yb_num_shards_per_tserver=1 --ysql_num_shards_per_tserver=1 ",
"cluster_uuid": "9a4ef104-eb56-4506-a3a689d7f487b48b",
"node_uuid": "d1ab793f63a548fe802ac438e4ae5e39",
"server_type": "tserver",
"hostname": "bdd6c75ff51c",
"current_user": "root",
"timestamp": "1730900490.057335",
"tablets": 9
}
As you can see, not much information is sent besides the startup flags and the number of tablets. Yugabyte might like to know the flags usage in case there are future deprecations.
I've also run the same with the high
collection level:
yugabyted start \
--tserver_flags='callhome_url=http://diagnostics.yugabyte.com,callhome_collection_level=high' \
--master_flags='callhome_url=http://diagnostics.yugabyte.com,callhome_collection_level=high'
This sends the performance metrics similar to those that you can see from the /metrics
endpoints:
Nothing is hidden, and you can disable the Call Home. You can also tell us how you use YugabyteDB in our community channels (Slack, forum, social network). Feedback helps improve the product, and that's why YugabyteDB is Open-Source.
Posted on November 7, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.