diff --git a/.env-devel b/.env-devel index 3c743a086b1..af3cb9ae7cc 100644 --- a/.env-devel +++ b/.env-devel @@ -277,6 +277,7 @@ WB_API_WEBSERVER_PORT=8080 WB_AUTH_WEBSERVER_HOST=wb-auth WB_AUTH_WEBSERVER_PORT=8080 WB_AUTH_LOGLEVEL=INFO +WB_AUTH_TRACING={} WB_GC_ACTIVITY=null WB_GC_ANNOUNCEMENTS=0 diff --git a/services/docker-compose.yml b/services/docker-compose.yml index 696cd885b04..d10afadfccc 100644 --- a/services/docker-compose.yml +++ b/services/docker-compose.yml @@ -6,6 +6,13 @@ x-dask-tls-secrets: &dask_tls_secrets target: ${DASK_TLS_CERT} # mode: 444 # not supported by docker stack compose as of 26.0.0 +x-tracing-open-telemetry: &tracing_open_telemetry_environs + TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} + TRACING_OPENTELEMETRY_COLLECTOR_BATCH_SIZE: ${TRACING_OPENTELEMETRY_COLLECTOR_BATCH_SIZE} + TRACING_OPENTELEMETRY_COLLECTOR_PORT: ${TRACING_OPENTELEMETRY_COLLECTOR_PORT} + TRACING_OPENTELEMETRY_COLLECTOR_SAMPLING_PERCENTAGE: ${TRACING_OPENTELEMETRY_COLLECTOR_SAMPLING_PERCENTAGE} + + services: api-server: image: ${DOCKER_REGISTRY:-itisfoundation}/api-server:${DOCKER_IMAGE_TAG:-latest} @@ -43,8 +50,7 @@ services: WEBSERVER_PORT: ${WB_API_WEBSERVER_PORT} WEBSERVER_SESSION_SECRET_KEY: ${WEBSERVER_SESSION_SECRET_KEY} API_SERVER_TRACING: ${API_SERVER_TRACING} - TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} - TRACING_OPENTELEMETRY_COLLECTOR_PORT: ${TRACING_OPENTELEMETRY_COLLECTOR_PORT} + <<: *tracing_open_telemetry_environs deploy: labels: @@ -130,8 +136,7 @@ services: REGISTRY_SSL: ${REGISTRY_SSL} REGISTRY_AUTH: ${REGISTRY_AUTH} AUTOSCALING_TRACING: ${AUTOSCALING_TRACING} - TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} - TRACING_OPENTELEMETRY_COLLECTOR_PORT: ${TRACING_OPENTELEMETRY_COLLECTOR_PORT} + <<: *tracing_open_telemetry_environs volumes: - "/var/run/docker.sock:/var/run/docker.sock" deploy: @@ -174,8 +179,7 @@ services: RABBIT_SECURE: ${RABBIT_SECURE} RABBIT_USER: ${RABBIT_USER} CATALOG_TRACING: ${CATALOG_TRACING} - TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} - TRACING_OPENTELEMETRY_COLLECTOR_PORT: ${TRACING_OPENTELEMETRY_COLLECTOR_PORT} + <<: *tracing_open_telemetry_environs networks: - default @@ -244,8 +248,7 @@ services: WORKERS_EC2_INSTANCES_SUBNET_ID: ${WORKERS_EC2_INSTANCES_SUBNET_ID} WORKERS_EC2_INSTANCES_CUSTOM_TAGS: ${WORKERS_EC2_INSTANCES_CUSTOM_TAGS} CLUSTERS_KEEPER_TRACING: ${CLUSTERS_KEEPER_TRACING} - TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} - TRACING_OPENTELEMETRY_COLLECTOR_PORT: ${TRACING_OPENTELEMETRY_COLLECTOR_PORT} + <<: *tracing_open_telemetry_environs secrets: *dask_tls_secrets director: @@ -282,10 +285,9 @@ services: STORAGE_ENDPOINT: ${STORAGE_ENDPOINT} SWARM_STACK_NAME: ${SWARM_STACK_NAME} - TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} - TRACING_OPENTELEMETRY_COLLECTOR_PORT: ${TRACING_OPENTELEMETRY_COLLECTOR_PORT} - + <<: *tracing_open_telemetry_environs TRAEFIK_SIMCORE_ZONE: ${TRAEFIK_SIMCORE_ZONE} + volumes: - "/var/run/docker.sock:/var/run/docker.sock" deploy: @@ -386,9 +388,9 @@ services: SIMCORE_SERVICES_NETWORK_NAME: ${SIMCORE_SERVICES_NETWORK_NAME} SWARM_STACK_NAME: ${SWARM_STACK_NAME} TRAEFIK_SIMCORE_ZONE: ${TRAEFIK_SIMCORE_ZONE} + DIRECTOR_V2_TRACING: ${DIRECTOR_V2_TRACING} - TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} - TRACING_OPENTELEMETRY_COLLECTOR_PORT: ${TRACING_OPENTELEMETRY_COLLECTOR_PORT} + <<: *tracing_open_telemetry_environs # WEBSERVER_AUTH_SETTINGS WEBSERVER_HOST: ${WB_AUTH_WEBSERVER_HOST} @@ -441,8 +443,8 @@ services: EFS_MOUNTED_PATH: ${EFS_MOUNTED_PATH} EFS_PROJECT_SPECIFIC_DATA_DIRECTORY: ${EFS_PROJECT_SPECIFIC_DATA_DIRECTORY} EFS_GUARDIAN_TRACING: ${EFS_GUARDIAN_TRACING} - TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} - TRACING_OPENTELEMETRY_COLLECTOR_PORT: ${TRACING_OPENTELEMETRY_COLLECTOR_PORT} + <<: *tracing_open_telemetry_environs + invitations: image: ${DOCKER_REGISTRY:-itisfoundation}/invitations:${DOCKER_IMAGE_TAG:-latest} init: true @@ -460,8 +462,8 @@ services: LOG_FORMAT_LOCAL_DEV_ENABLED: ${LOG_FORMAT_LOCAL_DEV_ENABLED} LOG_FILTER_MAPPING: ${LOG_FILTER_MAPPING} INVITATIONS_TRACING: ${INVITATIONS_TRACING} - TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} - TRACING_OPENTELEMETRY_COLLECTOR_PORT: ${TRACING_OPENTELEMETRY_COLLECTOR_PORT} + <<: *tracing_open_telemetry_environs + payments: image: ${DOCKER_REGISTRY:-itisfoundation}/payments:${DOCKER_IMAGE_TAG:-latest} init: true @@ -505,8 +507,7 @@ services: SMTP_PROTOCOL: ${SMTP_PROTOCOL} SMTP_USERNAME: ${SMTP_USERNAME} PAYMENTS_TRACING: ${PAYMENTS_TRACING} - TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} - TRACING_OPENTELEMETRY_COLLECTOR_PORT: ${TRACING_OPENTELEMETRY_COLLECTOR_PORT} + <<: *tracing_open_telemetry_environs resource-usage-tracker: image: ${DOCKER_REGISTRY:-itisfoundation}/resource-usage-tracker:${DOCKER_IMAGE_TAG:-latest} @@ -542,9 +543,8 @@ services: RESOURCE_USAGE_TRACKER_MISSED_HEARTBEAT_COUNTER_FAIL: ${RESOURCE_USAGE_TRACKER_MISSED_HEARTBEAT_COUNTER_FAIL} RESOURCE_USAGE_TRACKER_S3: ${RESOURCE_USAGE_TRACKER_S3} RESOURCE_USAGE_TRACKER_TRACING: ${RESOURCE_USAGE_TRACKER_TRACING} - TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} - TRACING_OPENTELEMETRY_COLLECTOR_PORT: ${TRACING_OPENTELEMETRY_COLLECTOR_PORT} RESOURCE_USAGE_TRACKER_PORT: ${RESOURCE_USAGE_TRACKER_PORT} + <<: *tracing_open_telemetry_environs dynamic-schdlr: image: ${DOCKER_REGISTRY:-itisfoundation}/dynamic-scheduler:${DOCKER_IMAGE_TAG:-latest} @@ -594,8 +594,8 @@ services: REDIS_SECURE: ${REDIS_SECURE} REDIS_USER: ${REDIS_USER} - TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} - TRACING_OPENTELEMETRY_COLLECTOR_PORT: ${TRACING_OPENTELEMETRY_COLLECTOR_PORT} + <<: *tracing_open_telemetry_environs + docker-api-proxy: image: ${DOCKER_REGISTRY:-itisfoundation}/docker-api-proxy:${DOCKER_IMAGE_TAG:-latest} init: true @@ -819,10 +819,7 @@ services: STUDIES_DEFAULT_SERVICE_THUMBNAIL: ${STUDIES_DEFAULT_SERVICE_THUMBNAIL} WEBSERVER_TRACING: ${WEBSERVER_TRACING} - TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} - TRACING_OPENTELEMETRY_COLLECTOR_BATCH_SIZE: ${TRACING_OPENTELEMETRY_COLLECTOR_BATCH_SIZE} - TRACING_OPENTELEMETRY_COLLECTOR_PORT: ${TRACING_OPENTELEMETRY_COLLECTOR_PORT} - TRACING_OPENTELEMETRY_COLLECTOR_SAMPLING_PERCENTAGE: ${TRACING_OPENTELEMETRY_COLLECTOR_SAMPLING_PERCENTAGE} + <<: *tracing_open_telemetry_environs # WEBSERVER_PROJECTS WEBSERVER_PROJECTS: ${WEBSERVER_PROJECTS} @@ -1094,6 +1091,7 @@ services: WEBSERVER_STUDIES_DISPATCHER: ${WB_GC_STUDIES_DISPATCHER} WEBSERVER_TAGS: ${WB_GC_TAGS} WEBSERVER_TRACING: ${WB_GC_TRACING} + <<: *tracing_open_telemetry_environs WEBSERVER_USERS: ${WB_GC_USERS} WEBSERVER_WALLETS: ${WB_GC_WALLETS} @@ -1155,7 +1153,7 @@ services: WEBSERVER_PUBLICATIONS: 0 WEBSERVER_RABBITMQ: "null" WEBSERVER_REALTIME_COLLABORATION: "null" - WEBSERVER_REDIS: "null" # TODO: cache? + WEBSERVER_REDIS: "null" WEBSERVER_RESOURCE_USAGE_TRACKER: "null" WEBSERVER_SCICRUNCH: "null" WEBSERVER_SOCKETIO: 0 @@ -1163,7 +1161,11 @@ services: WEBSERVER_STORAGE: "null" WEBSERVER_STUDIES_DISPATCHER: "null" WEBSERVER_TAGS: 0 + WEBSERVER_TRACING: ${WB_AUTH_TRACING} + <<: *tracing_open_telemetry_environs WEBSERVER_USERS: "null" + networks: + - default agent: image: ${DOCKER_REGISTRY:-itisfoundation}/agent:${DOCKER_IMAGE_TAG:-latest} @@ -1196,8 +1198,7 @@ services: RABBIT_SECURE: ${RABBIT_SECURE} AGENT_TRACING: ${AGENT_TRACING} - TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} - TRACING_OPENTELEMETRY_COLLECTOR_PORT: ${TRACING_OPENTELEMETRY_COLLECTOR_PORT} + <<: *tracing_open_telemetry_environs notifications: image: ${DOCKER_REGISTRY:-itisfoundation}/notifications:${DOCKER_IMAGE_TAG:-latest} @@ -1224,8 +1225,7 @@ services: RABBIT_SECURE: ${RABBIT_SECURE} RABBIT_USER: ${RABBIT_USER} - TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} - TRACING_OPENTELEMETRY_COLLECTOR_PORT: ${TRACING_OPENTELEMETRY_COLLECTOR_PORT} + <<: *tracing_open_telemetry_environs dask-sidecar: image: ${DOCKER_REGISTRY:-itisfoundation}/dask-sidecar:${DOCKER_IMAGE_TAG:-latest} @@ -1282,8 +1282,7 @@ services: DATCORE_ADAPTER_LOG_FILTER_MAPPING: ${LOG_FILTER_MAPPING} DATCORE_ADAPTER_LOG_FORMAT_LOCAL_DEV_ENABLED: ${LOG_FORMAT_LOCAL_DEV_ENABLED} DATCORE_ADAPTER_TRACING: ${DATCORE_ADAPTER_TRACING} - TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} - TRACING_OPENTELEMETRY_COLLECTOR_PORT: ${TRACING_OPENTELEMETRY_COLLECTOR_PORT} + <<: *tracing_open_telemetry_environs storage: image: ${DOCKER_REGISTRY:-itisfoundation}/storage:${DOCKER_IMAGE_TAG:-latest} @@ -1320,8 +1319,7 @@ services: STORAGE_PROFILING: ${STORAGE_PROFILING} STORAGE_PORT: ${STORAGE_PORT} STORAGE_TRACING: ${STORAGE_TRACING} - TRACING_OPENTELEMETRY_COLLECTOR_PORT: ${TRACING_OPENTELEMETRY_COLLECTOR_PORT} - TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} + <<: *tracing_open_telemetry_environs networks: &storage_networks - default - interactive_services_subnet diff --git a/services/web/server/src/simcore_service_webserver/application.py b/services/web/server/src/simcore_service_webserver/application.py index 9c5b1bbfbd3..6fc915ec07a 100644 --- a/services/web/server/src/simcore_service_webserver/application.py +++ b/services/web/server/src/simcore_service_webserver/application.py @@ -195,6 +195,8 @@ def create_application() -> web.Application: def create_application_auth() -> web.Application: app = create_safe_application() setup_settings(app) + setup_app_tracing(app) # WARNING: must be UPPERMOST middleware + setup_rest(app) setup_db(app) diff --git a/services/web/server/tests/unit/with_dbs/03/test_login_auth_app.py b/services/web/server/tests/unit/with_dbs/03/test_login_auth_app.py index 9cebfe587d0..e0cf82a3e8e 100644 --- a/services/web/server/tests/unit/with_dbs/03/test_login_auth_app.py +++ b/services/web/server/tests/unit/with_dbs/03/test_login_auth_app.py @@ -44,6 +44,13 @@ def app_environment_for_wb_authz_service_dict( == "WEBSERVER_AUTHZ_APP_FACTORY" ) + # expected tracing in the docker-environ BUT we will disable it for tests + assert "WEBSERVER_TRACING" in docker_compose_service_environment_dict + assert ( + "TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT" + in docker_compose_service_environment_dict + ) + return { **docker_compose_service_environment_dict, # NOTE: TEST-stack uses different env-vars @@ -55,7 +62,7 @@ def app_environment_for_wb_authz_service_dict( "POSTGRES_USER": postgres_cfg["user"], "POSTGRES_PASSWORD": postgres_cfg["password"], "HOSTNAME": docker_compose_service_hostname, - # TODO: add everything coming from Dockerfile? + "WEBSERVER_TRACING": "null", # BUT we will disable it for tests } @@ -83,6 +90,7 @@ def app_environment_for_wb_authz_service( assert settings.WEBSERVER_DB is not None assert settings.WEBSERVER_SESSION is not None assert settings.WEBSERVER_SECURITY is not None + assert settings.WEBSERVER_TRACING is None, "No tracing for tests" return mocked_envs