diff --git a/docs/index.md b/docs/index.md index 4d4f83091a..13819923d2 100644 --- a/docs/index.md +++ b/docs/index.md @@ -172,6 +172,7 @@ You can join the conversation on Slack! We are a very friendly and inclusive com :caption: Reference :hidden: + reference/telemetry reference/python/index reference/webapp/index diff --git a/docs/community/telemetry.md b/docs/reference/telemetry.md similarity index 100% rename from docs/community/telemetry.md rename to docs/reference/telemetry.md diff --git a/src/rubrix/server/commons/telemetry.py b/src/rubrix/server/commons/telemetry.py index f6a74fc502..974487561a 100644 --- a/src/rubrix/server/commons/telemetry.py +++ b/src/rubrix/server/commons/telemetry.py @@ -87,16 +87,19 @@ def __post_init__(self): "platform": platform.platform(), "python_version": platform.python_version(), "sys_version": platform.version(), - "rubrix_version": __version__, + "version": __version__, } def track_data( self, action: str, data: Dict[str, Any], include_system_info: bool = True ): event_data = data.copy() - if include_system_info: - event_data.update(self.__system_info__) - self.client.track(self.__server_id_str__, action, event_data) + self.client.track( + user_id=self.__server_id_str__, + event=action, + properties=event_data, + context=self.__system_info__ if include_system_info else {}, + ) def _process_request_info(request: Request): diff --git a/src/rubrix/server/server.py b/src/rubrix/server/server.py index d561168685..ed97e8f411 100644 --- a/src/rubrix/server/server.py +++ b/src/rubrix/server/server.py @@ -16,7 +16,10 @@ """ This module configures the global fastapi application """ +import inspect import os +import sys +import warnings from pathlib import Path from brotli_asgi import BrotliMiddleware @@ -128,6 +131,35 @@ def configure_app_logging(app: FastAPI): version=str(rubrix_version), ) + +def configure_telemetry(app): + message = "\n" + message += inspect.cleandoc( + """ + Rubrix uses telemetry to report anonymous usage and error information. + + You can know more about what information is reported at: + + https://rubrix.readthedocs.io/en/stable/reference/telemetry.html + + Telemetry is currently enabled. If you want to disable it, you can configure + the environment variable before relaunching the server: + """ + ) + message += "\n\n " + message += ( + "#set RUBRIX_ENABLE_TELEMETRY=0" + if os.name == "nt" + else "$>export RUBRIX_ENABLE_TELEMETRY=0" + ) + message += "\n" + + @app.on_event("startup") + async def check_telemetry(): + if settings.enable_telemetry: + print(message, flush=True) + + for app_configure in [ configure_app_logging, configure_middleware, @@ -136,5 +168,6 @@ def configure_app_logging(app: FastAPI): configure_api_router, configure_app_statics, configure_app_storage, + configure_telemetry, ]: app_configure(app) diff --git a/tests/conftest.py b/tests/conftest.py index a93358b1f2..358091aad3 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -38,7 +38,7 @@ def telemetry_track_data(mocker): client = telemetry._TelemetryClient.get() if client: # Disable sending data for tests - client._client = telemetry._configure_analytics(disable_send=True) + client.client = telemetry._configure_analytics(disable_send=True) spy = mocker.spy(client, "track_data") return spy