diff --git a/ext/serializer.c b/ext/serializer.c index 0fe39347eb..b00e4bba12 100644 --- a/ext/serializer.c +++ b/ext/serializer.c @@ -852,6 +852,18 @@ zend_string *ddtrace_default_service_name(void) { } } +zend_string *ddtrace_active_service_name(void) { + ddtrace_span_data *span = ddtrace_active_span(); + if (span) { + return ddtrace_convert_to_str(&span->property_service); + } + zend_string *ini_service = get_DD_SERVICE(); + if (ZSTR_LEN(ini_service)) { + return zend_string_copy(ini_service); + } + return ddtrace_default_service_name(); +} + void ddtrace_set_root_span_properties(ddtrace_root_span_data *span) { ddtrace_update_root_id_properties(span); diff --git a/ext/serializer.h b/ext/serializer.h index 479719ed58..4c2d2c2f93 100644 --- a/ext/serializer.h +++ b/ext/serializer.h @@ -14,6 +14,7 @@ void ddtrace_set_root_span_properties(ddtrace_root_span_data *span); void ddtrace_update_root_id_properties(ddtrace_root_span_data *span); void ddtrace_inherit_span_properties(ddtrace_span_data *span, ddtrace_span_data *parent); zend_string *ddtrace_default_service_name(void); +zend_string *ddtrace_active_service_name(void); void ddtrace_initialize_span_sampling_limiter(void); void ddtrace_shutdown_span_sampling_limiter(void); diff --git a/ext/sidecar.c b/ext/sidecar.c index 1603b26807..e53d295199 100644 --- a/ext/sidecar.c +++ b/ext/sidecar.c @@ -8,6 +8,7 @@ #include #include "sidecar.h" #include "telemetry.h" +#include "serializer.h" ddog_SidecarTransport *ddtrace_sidecar; ddog_Endpoint *ddtrace_endpoint; @@ -136,15 +137,27 @@ static inline void ddtrace_sidecar_dogstatsd_push_tag(ddog_Vec_Tag *vec, ddog_Ch static void ddtrace_sidecar_dogstatsd_push_tags(ddog_Vec_Tag *vec, zval *tags) { // Global tags (https://github.com/DataDog/php-datadogstatsd/blob/0efdd1c38f6d3dd407efbb899ad1fd2e5cd18085/src/DogStatsd.php#L113-L125) - zend_string *env = get_DD_ENV(); + ddtrace_span_data *span = ddtrace_active_span(); + zend_string *env; + if (span) { + env = ddtrace_convert_to_str(&span->property_env); + } else { + env = get_DD_ENV(); + } if (ZSTR_LEN(env) > 0) { ddtrace_sidecar_dogstatsd_push_tag(vec, DDOG_CHARSLICE_C("env"), dd_zend_string_to_CharSlice(env)); } - zend_string *service = get_DD_SERVICE(); + zend_string *service = ddtrace_active_service_name(); if (ZSTR_LEN(service) > 0) { ddtrace_sidecar_dogstatsd_push_tag(vec, DDOG_CHARSLICE_C("service"), dd_zend_string_to_CharSlice(service)); } - zend_string *version = get_DD_VERSION(); + zend_string_release(service); + zend_string *version; + if (span) { + version = ddtrace_convert_to_str(&span->property_version); + } else { + version = get_DD_VERSION(); + } if (ZSTR_LEN(version) > 0) { ddtrace_sidecar_dogstatsd_push_tag(vec, DDOG_CHARSLICE_C("version"), dd_zend_string_to_CharSlice(version)); } diff --git a/tests/ext/dogstatsd/metrics_over_udp.phpt b/tests/ext/dogstatsd/metrics_over_udp.phpt index 56a69ba88e..05decdcc25 100644 --- a/tests/ext/dogstatsd/metrics_over_udp.phpt +++ b/tests/ext/dogstatsd/metrics_over_udp.phpt @@ -57,8 +57,8 @@ $server->close(); ?> --EXPECT-- -counter-simple:42|c|#foo:bar,bar:true -gogogadget:21.4|g -my_disti:22.22|d|#distri:bution -my_histo:22.22|h|#histo:gram -set:7|s|#set:7 +counter-simple:42|c|#service:metrics_over_udp.php,foo:bar,bar:true +gogogadget:21.4|g|#service:metrics_over_udp.php +my_disti:22.22|d|#service:metrics_over_udp.php,distri:bution +my_histo:22.22|h|#service:metrics_over_udp.php,histo:gram +set:7|s|#service:metrics_over_udp.php,set:7