DataDog / dd-trace-php

Datadog PHP Clients
https://docs.datadoghq.com/tracing/setup/php
Other
483 stars 149 forks source link

[Bug]: Symfony HTTP Traces are not sent #2318

Closed B-Galati closed 8 months ago

B-Galati commented 9 months ago

Bug report

Hello,

Using Symfony 6.3.4, I am not seeing any traces poping up in Datadog UI when tracing HTTP calls.

What's weird is that, traces are sent when they are going through our custom instrumentation.

Here is the code of the custom instrumentation just for information: ```php next()->handle($envelope, $stack); } // Do not record a new span for messages consumed by worker because // they are going to be managed by DatadogMessengerWorkerListener if ($this->isMessageConsumedByWorker($envelope)) { return $stack->next()->handle($envelope, $stack); } $scope = GlobalTracer::get()->startActiveSpan('symfony.messenger.handle'); $span = $scope->getSpan(); $span->setResource(\get_class($envelope->getMessage())); $span->setTag(Tag::SERVICE_NAME, dd_trace_env_config('DD_SERVICE')); try { return $stack->next()->handle($envelope, $stack); } catch (\Throwable $e) { $span->setError($e); throw $e; } finally { $scope->close(); } } private function isMessageConsumedByWorker(Envelope $envelope): bool { return null !== $envelope->last(ConsumedByWorkerStamp::class); } } ```

PHP version

PHP 8.2.9 (fpm-fcgi) (built: Aug 16 2023 19:49:00)
Copyright (c) The PHP Group
Zend Engine v4.2.9, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.9, Copyright (c), by Zend Technologies
    with blackfire v1.88.1~linux-x64-non_zts82, https://blackfire.io, by Blackfire
    with ddtrace v0.92.2, Copyright Datadog, by Datadog
    with datadog-profiling v0.92.2, Copyright Datadog, by Datadog
    with ddappsec v0.14.2, Copyright Datadog, by Datadog

Tracer or profiler version

0.92.2

Installed extensions

Installed extensions ``` $ php -m [PHP Modules] amqp apcu bcmath blackfire calendar Core ctype curl datadog-profiling date ddappsec ddtrace dom exif FFI fileinfo filter ftp gd gettext hash iconv igbinary imagick intl json libxml mbstring mysqli mysqlnd openssl pcntl pcre PDO pdo_mysql pdo_pgsql pdo_sqlite pgsql Phar posix random readline redis Reflection session shmop SimpleXML soap sockets sodium SPL sqlite3 standard sysvmsg sysvsem sysvshm tokenizer xml xmlreader xmlwriter xsl Zend OPcache zip zlib [Zend Modules] Zend OPcache blackfire datadog-profiling ddappsec ddtrace ```

Output of phpinfo()

phpinfo() ``` Datadog PHP AppSec extension (c) Datadog 2021 State managed by remote config => No Current state => Disabled Version => 0.14.2 Directive => Local Value => Master Value datadog.api_security_request_sample_rate => 0.1 => 0.1 datadog.appsec.automated_user_events_tracking => safe => safe datadog.appsec.enabled => Off => Off datadog.appsec.extra_headers => no value => no value datadog.appsec.helper_extra_args => no value => no value datadog.appsec.helper_launch => On => On datadog.appsec.helper_log_file => /dev/null => /dev/null datadog.appsec.helper_path => /opt/datadog/dd-library/0.92.2/bin/ddappsec-helper => /opt/datadog/dd-library/0.92.2/bin/ddappsec-helper datadog.appsec.helper_runtime_path => /tmp => /tmp datadog.appsec.http_blocked_template_html => no value => no value datadog.appsec.http_blocked_template_json => no value => no value datadog.appsec.log_file => php_error_reporting => php_error_reporting datadog.appsec.log_level => warn => warn datadog.appsec.obfuscation_parameter_key_regexp => (?i)(?:p(?:ass)?w(?:or)?d|pass(?:_?phrase)?|secret|(?:api_?|private_?|public_?)key)|token|consumer_?(?:id|key|secret)|sign(?:ed|ature)|bearer|authorization => (?i)(?:p(?:ass)?w(?:or)?d|pass(?:_?phrase)?|secret|(?:api_?|private_?|public_?)key)|token|consumer_?(?:id|key|secret)|sign(?:ed|ature)|bearer|authorization datadog.appsec.obfuscation_parameter_value_regexp => (?i)(?:p(?:ass)?w(?:or)?d|pass(?:_?phrase)?|secret|(?:api_?|private_?|public_?|access_?|secret_?)key(?:_?id)?|token|consumer_?(?:id|key|secret)|sign(?:ed|ature)?|auth(?:entication|orization)?)(?:\s*=[^;]|"\s*:\s*"[^"]+")|bearer\s+[a-z0-9\._\-]+|token:[a-z0-9]{13}|gh[opsu]_[0-9a-zA-Z]{36}|ey[I-L][\w=-]+\.ey[I-L][\w=-]+(?:\.[\w.+\/=-]+)?|[\-]{5}BEGIN[a-z\s]+PRIVATE\sKEY[\-]{5}[^\-]+[\-]{5}END[a-z\s]+PRIVATE\sKEY|ssh-rsa\s*[a-z0-9\/\.+]{100,} => (?i)(?:p(?:ass)?w(?:or)?d|pass(?:_?phrase)?|secret|(?:api_?|private_?|public_?|access_?|secret_?)key(?:_?id)?|token|consumer_?(?:id|key|secret)|sign(?:ed|ature)?|auth(?:entication|orization)?)(?:\s*=[^;]|"\s*:\s*"[^"]+")|bearer\s+[a-z0-9\._\-]+|token:[a-z0-9]{13}|gh[opsu]_[0-9a-zA-Z]{36}|ey[I-L][\w=-]+\.ey[I-L][\w=-]+(?:\.[\w.+\/=-]+)?|[\-]{5}BEGIN[a-z\s]+PRIVATE\sKEY[\-]{5}[^\-]+[\-]{5}END[a-z\s]+PRIVATE\sKEY|ssh-rsa\s*[a-z0-9\/\.+]{100,} datadog.appsec.rules => no value => no value datadog.appsec.testing => Off => Off datadog.appsec.testing_abort_rinit => Off => Off datadog.appsec.testing_raw_body => Off => Off datadog.appsec.trace_rate_limit => 100 => 100 datadog.appsec.waf_timeout => 10000 => 10000 datadog.experimental_api_security_enabled => Off => Off datadog.extra_services => no value => no value datadog.remote_config_enabled => On => On datadog.remote_config_poll_interval => 1000 => 1000 ddtrace Datadog PHP tracer extension For help, check out the documentation at https://docs.datadoghq.com/tracing/languages/php/ (c) Datadog 2020 Datadog tracing support => enabled Version => 0.92.2 DATADOG TRACER CONFIGURATION => { "date": "2023-10-18T14:14:45Z", "os_name": "Linux some*****", "os_version": "******", "version": "0.92.2", "lang": "php", "lang_version": "8.2.8", "env": "prod", "enabled": true, "service": "some\/api-cmd", "enabled_cli": true, "agent_url": "http:\/\/dd:8126", "debug": false, "analytics_enabled": false, "sample_rate": -1, "sampling_rules": [], "tags": { "product": "v3", "is_sandbox": "false" }, "service_mapping": { "curl": "some\/curl", "guzzle": "some\/guzzle", "pdo": "some\/pdo", "phpredis": "some\/phpredis" }, "distributed_tracing_enabled": true, "priority_sampling_enabled": true, "dd_version": "2023.10.18.0", "architecture": "x86_64", "sapi": "fpm-fcgi", "datadog.trace.request_init_hook": "\/opt\/datadog\/dd-library\/0.92.2\/dd-trace-sources\/bridge\/dd_wrap_autoloader.php", "open_basedir_configured": false, "uri_fragment_regex": null, "uri_mapping_incoming": null, "uri_mapping_outgoing": null, "auto_flush_enabled": true, "generate_root_span": false, "http_client_split_by_domain": false, "measure_compile_time": true, "report_hostname_on_root_span": false, "traced_internal_functions": null, "auto_prepend_file_configured": false, "integrations_disabled": "default", "enabled_from_env": true, "opcache.file_cache": null } Diagnostics Diagnostic checks => passed Directive => Local Value => Master Value datadog.agent_host => dd => dd datadog.amqp_analytics_enabled => Off => Off datadog.amqp_analytics_sample_rate => 1 => 1 datadog.api_key => no value => no value datadog.autofinish_spans => Off => Off datadog.cakephp_analytics_enabled => Off => Off datadog.cakephp_analytics_sample_rate => 1 => 1 datadog.codeigniter_analytics_enabled => Off => Off datadog.codeigniter_analytics_sample_rate => 1 => 1 datadog.curl_analytics_enabled => Off => Off datadog.curl_analytics_sample_rate => 1 => 1 datadog.dbm_propagation_mode => full => full datadog.distributed_tracing => On => On datadog.dogstatsd_port => 8125 => 8125 datadog.dogstatsd_url => no value => no value datadog.drupal_analytics_enabled => Off => Off datadog.drupal_analytics_sample_rate => 1 => 1 datadog.elasticsearch_analytics_enabled => Off => Off datadog.elasticsearch_analytics_sample_rate => 1 => 1 datadog.eloquent_analytics_enabled => Off => Off datadog.eloquent_analytics_sample_rate => 1 => 1 datadog.env => prod => prod datadog.guzzle_analytics_enabled => Off => Off datadog.guzzle_analytics_sample_rate => 1 => 1 datadog.http_server_route_based_naming => On => On datadog.instrumentation_telemetry_enabled => On => On datadog.integrations_disabled => default => default datadog.laminas_analytics_enabled => Off => Off datadog.laminas_analytics_sample_rate => 1 => 1 datadog.laravel_analytics_enabled => Off => Off datadog.laravel_analytics_sample_rate => 1 => 1 datadog.laravelqueue_analytics_enabled => Off => Off datadog.laravelqueue_analytics_sample_rate => 1 => 1 datadog.log_backtrace => Off => Off datadog.logs_analytics_enabled => Off => Off datadog.logs_analytics_sample_rate => 1 => 1 datadog.logs_injection => On => On datadog.lumen_analytics_enabled => Off => Off datadog.lumen_analytics_sample_rate => 1 => 1 datadog.memcache_analytics_enabled => Off => Off datadog.memcache_analytics_sample_rate => 1 => 1 datadog.memcached_analytics_enabled => Off => Off datadog.memcached_analytics_sample_rate => 1 => 1 datadog.mongo_analytics_enabled => Off => Off datadog.mongo_analytics_sample_rate => 1 => 1 datadog.mongodb_analytics_enabled => Off => Off datadog.mongodb_analytics_sample_rate => 1 => 1 datadog.mysqli_analytics_enabled => Off => Off datadog.mysqli_analytics_sample_rate => 1 => 1 datadog.nette_analytics_enabled => Off => Off datadog.nette_analytics_sample_rate => 1 => 1 datadog.pcntl_analytics_enabled => Off => Off datadog.pcntl_analytics_sample_rate => 1 => 1 datadog.pdo_analytics_enabled => Off => Off datadog.pdo_analytics_sample_rate => 1 => 1 datadog.phpredis_analytics_enabled => Off => Off datadog.phpredis_analytics_sample_rate => 1 => 1 datadog.predis_analytics_enabled => Off => Off datadog.predis_analytics_sample_rate => 1 => 1 datadog.priority_sampling => On => On datadog.propagation_style_extract => tracecontext,Datadog,B3,B3 single header => tracecontext,Datadog,B3,B3 single header datadog.propagation_style_inject => tracecontext,Datadog => tracecontext,Datadog datadog.psr18_analytics_enabled => Off => Off datadog.psr18_analytics_sample_rate => 1 => 1 datadog.roadrunner_analytics_enabled => Off => Off datadog.roadrunner_analytics_sample_rate => 1 => 1 datadog.sampling_rate => -1 => -1 datadog.service => some/api-cmd => some/api-cmd datadog.service_mapping => curl:some/curl,guzzle:some/guzzle,pdo:some/pdo,phpredis:some/phpredis => curl:some/curl,guzzle:some/guzzle,pdo:some/pdo,phpredis:some/phpredis datadog.service_name => some/api-cmd => some/api-cmd datadog.slim_analytics_enabled => Off => Off datadog.slim_analytics_sample_rate => 1 => 1 datadog.span_sampling_rules => [] => [] datadog.span_sampling_rules_file => no value => no value datadog.sqlsrv_analytics_enabled => Off => Off datadog.sqlsrv_analytics_sample_rate => 1 => 1 datadog.symfony_analytics_enabled => Off => Off datadog.symfony_analytics_sample_rate => 1 => 1 datadog.tags => product:v3,is_sandbox:false => product:v3,is_sandbox:false datadog.trace.128_bit_traceid_generation_enabled => Off => Off datadog.trace.128_bit_traceid_logging_enabled => Off => Off datadog.trace.agent_attempt_retry_time_msec => 5000 => 5000 datadog.trace.agent_connect_timeout => 100 => 100 datadog.trace.agent_debug_verbose_curl => Off => Off datadog.trace.agent_flush_after_n_requests => 10 => 10 datadog.trace.agent_flush_interval => 5000 => 5000 datadog.trace.agent_max_consecutive_failures => 3 => 3 datadog.trace.agent_max_payload_size => 52428800 => 52428800 datadog.trace.agent_port => 8126 => 8126 datadog.trace.agent_stack_backlog => 12 => 12 datadog.trace.agent_stack_initial_size => 131072 => 131072 datadog.trace.agent_timeout => 500 => 500 datadog.trace.agent_url => no value => no value datadog.trace.agentless => Off => Off datadog.trace.amqp_analytics_enabled => Off => Off datadog.trace.amqp_analytics_sample_rate => 1 => 1 datadog.trace.amqp_enabled => On => On datadog.trace.analytics_enabled => Off => Off datadog.trace.append_trace_ids_to_logs => Off => Off datadog.trace.auto_flush_enabled => On => On datadog.trace.beta_high_memory_pressure_percent => 80 => 80 datadog.trace.bgs_connect_timeout => 2000 => 2000 datadog.trace.bgs_timeout => 5000 => 5000 datadog.trace.cakephp_analytics_enabled => Off => Off datadog.trace.cakephp_analytics_sample_rate => 1 => 1 datadog.trace.cakephp_enabled => On => On datadog.trace.cli_enabled => On => On datadog.trace.client_ip_enabled => Off => Off datadog.trace.client_ip_header => no value => no value datadog.trace.codeigniter_analytics_enabled => Off => Off datadog.trace.codeigniter_analytics_sample_rate => 1 => 1 datadog.trace.codeigniter_enabled => On => On datadog.trace.curl_analytics_enabled => Off => Off datadog.trace.curl_analytics_sample_rate => 1 => 1 datadog.trace.curl_enabled => On => On datadog.trace.db_client_split_by_instance => Off => Off datadog.trace.debug => Off => Off datadog.trace.debug_curl_output => Off => Off datadog.trace.debug_prng_seed => -1 => -1 datadog.trace.drupal_analytics_enabled => Off => Off datadog.trace.drupal_analytics_sample_rate => 1 => 1 datadog.trace.drupal_enabled => On => On datadog.trace.elasticsearch_analytics_enabled => Off => Off datadog.trace.elasticsearch_analytics_sample_rate => 1 => 1 datadog.trace.elasticsearch_enabled => On => On datadog.trace.eloquent_analytics_enabled => Off => Off datadog.trace.eloquent_analytics_sample_rate => 1 => 1 datadog.trace.eloquent_enabled => On => On datadog.trace.enabled => On => On datadog.trace.flush_collect_cycles => Off => Off datadog.trace.forked_process => On => On datadog.trace.generate_root_span => Off => Off datadog.trace.global_tags => product:v3,is_sandbox:false => product:v3,is_sandbox:false datadog.trace.guzzle_analytics_enabled => Off => Off datadog.trace.guzzle_analytics_sample_rate => 1 => 1 datadog.trace.guzzle_enabled => On => On datadog.trace.header_tags => no value => no value datadog.trace.health_metrics_enabled => Off => Off datadog.trace.health_metrics_heartbeat_sample_rate => 0.001 => 0.001 datadog.trace.hook_limit => 100 => 100 datadog.trace.http_client_split_by_domain => Off => Off datadog.trace.http_post_data_param_allowed => no value => no value datadog.trace.http_url_query_param_allowed => * => * datadog.trace.laminas_analytics_enabled => Off => Off datadog.trace.laminas_analytics_sample_rate => 1 => 1 datadog.trace.laminas_enabled => On => On datadog.trace.laravel_analytics_enabled => Off => Off datadog.trace.laravel_analytics_sample_rate => 1 => 1 datadog.trace.laravel_enabled => On => On datadog.trace.laravelqueue_analytics_enabled => Off => Off datadog.trace.laravelqueue_analytics_sample_rate => 1 => 1 datadog.trace.laravelqueue_enabled => On => On datadog.trace.logs_analytics_enabled => Off => Off datadog.trace.logs_analytics_sample_rate => 1 => 1 datadog.trace.logs_enabled => On => On datadog.trace.lumen_analytics_enabled => Off => Off datadog.trace.lumen_analytics_sample_rate => 1 => 1 datadog.trace.lumen_enabled => On => On datadog.trace.measure_compile_time => On => On datadog.trace.memcache_analytics_enabled => Off => Off datadog.trace.memcache_analytics_sample_rate => 1 => 1 datadog.trace.memcache_enabled => On => On datadog.trace.memcached_analytics_enabled => Off => Off datadog.trace.memcached_analytics_sample_rate => 1 => 1 datadog.trace.memcached_enabled => On => On datadog.trace.memory_limit => no value => no value datadog.trace.mongo_analytics_enabled => Off => Off datadog.trace.mongo_analytics_sample_rate => 1 => 1 datadog.trace.mongo_enabled => On => On datadog.trace.mongodb_analytics_enabled => Off => Off datadog.trace.mongodb_analytics_sample_rate => 1 => 1 datadog.trace.mongodb_enabled => On => On datadog.trace.mysqli_analytics_enabled => Off => Off datadog.trace.mysqli_analytics_sample_rate => 1 => 1 datadog.trace.mysqli_enabled => On => On datadog.trace.nette_analytics_enabled => Off => Off datadog.trace.nette_analytics_sample_rate => 1 => 1 datadog.trace.nette_enabled => On => On datadog.trace.obfuscation_query_string_regexp => (?i)(?:p(?:ass)?w(?:or)?d|pass(?:_?phrase)?|secret|(?:api_?|private_?|public_?|access_?|secret_?)key(?:_?id)?|token|consumer_?(?:id|key|secret)|sign(?:ed|ature)?|auth(?:entication|orization)?)(?:(?:\s|%20)*(?:=|%3D)[^&]+|(?:"|%22)(?:\s|%20)*(?::|%3A)(?:\s|%20)*(?:"|%22)(?:%2[^2]|%[^2]|[^"%])+(?:"|%22))|bearer(?:\s|%20)+[a-z0-9\._\-]|token(?::|%3A)[a-z0-9]{13}|gh[opsu]_[0-9a-zA-Z]{36}|ey[I-L](?:[\w=-]|%3D)+\.ey[I-L](?:[\w=-]|%3D)+(?:\.(?:[\w.+\/=-]|%3D|%2F|%2B)+)?|[\-]{5}BEGIN(?:[a-z\s]|%20)+PRIVATE(?:\s|%20)KEY[\-]{5}[^\-]+[\-]{5}END(?:[a-z\s]|%20)+PRIVATE(?:\s|%20)KEY|ssh-rsa(?:\s|%20)*(?:[a-z0-9\/\.+]|%2F|%5C|%2B){100,} => (?i)(?:p(?:ass)?w(?:or)?d|pass(?:_?phrase)?|secret|(?:api_?|private_?|public_?|access_?|secret_?)key(?:_?id)?|token|consumer_?(?:id|key|secret)|sign(?:ed|ature)?|auth(?:entication|orization)?)(?:(?:\s|%20)*(?:=|%3D)[^&]+|(?:"|%22)(?:\s|%20)*(?::|%3A)(?:\s|%20)*(?:"|%22)(?:%2[^2]|%[^2]|[^"%])+(?:"|%22))|bearer(?:\s|%20)+[a-z0-9\._\-]|token(?::|%3A)[a-z0-9]{13}|gh[opsu]_[0-9a-zA-Z]{36}|ey[I-L](?:[\w=-]|%3D)+\.ey[I-L](?:[\w=-]|%3D)+(?:\.(?:[\w.+\/=-]|%3D|%2F|%2B)+)?|[\-]{5}BEGIN(?:[a-z\s]|%20)+PRIVATE(?:\s|%20)KEY[\-]{5}[^\-]+[\-]{5}END(?:[a-z\s]|%20)+PRIVATE(?:\s|%20)KEY|ssh-rsa(?:\s|%20)*(?:[a-z0-9\/\.+]|%2F|%5C|%2B){100,} datadog.trace.once_logs => On => On datadog.trace.pcntl_analytics_enabled => Off => Off datadog.trace.pcntl_analytics_sample_rate => 1 => 1 datadog.trace.pcntl_enabled => On => On datadog.trace.pdo_analytics_enabled => Off => Off datadog.trace.pdo_analytics_sample_rate => 1 => 1 datadog.trace.pdo_enabled => On => On datadog.trace.peer_service_defaults_enabled => Off => Off datadog.trace.peer_service_mapping => no value => no value datadog.trace.phpredis_analytics_enabled => Off => Off datadog.trace.phpredis_analytics_sample_rate => 1 => 1 datadog.trace.phpredis_enabled => On => On datadog.trace.predis_analytics_enabled => Off => Off datadog.trace.predis_analytics_sample_rate => 1 => 1 datadog.trace.predis_enabled => On => On datadog.trace.propagate_service => Off => Off datadog.trace.propagate_user_id_default => Off => Off datadog.trace.propagation_style => tracecontext,Datadog => tracecontext,Datadog datadog.trace.propagation_style_extract => tracecontext,Datadog,B3,B3 single header => tracecontext,Datadog,B3,B3 single header datadog.trace.propagation_style_inject => tracecontext,Datadog => tracecontext,Datadog datadog.trace.psr18_analytics_enabled => Off => Off datadog.trace.psr18_analytics_sample_rate => 1 => 1 datadog.trace.psr18_enabled => On => On datadog.trace.rate_limit => 0 => 0 datadog.trace.redis_client_split_by_host => Off => Off datadog.trace.remove_autoinstrumentation_orphans => Off => Off datadog.trace.remove_integration_service_names_enabled => Off => Off datadog.trace.remove_root_span_laravel_queue => On => On datadog.trace.report_hostname => Off => Off datadog.trace.request_init_hook => /opt/datadog/dd-library/0.92.2/dd-trace-sources/bridge/dd_wrap_autoloader.php => /opt/datadog/dd-library/0.92.2/dd-trace-sources/bridge/dd_wrap_autoloader.php datadog.trace.resource_uri_fragment_regex => no value => no value datadog.trace.resource_uri_mapping_incoming => no value => no value datadog.trace.resource_uri_mapping_outgoing => no value => no value datadog.trace.resource_uri_query_param_allowed => no value => no value datadog.trace.retain_thread_capabilities => Off => Off datadog.trace.roadrunner_analytics_enabled => Off => Off datadog.trace.roadrunner_analytics_sample_rate => 1 => 1 datadog.trace.roadrunner_enabled => On => On datadog.trace.sample_rate => -1 => -1 datadog.trace.sampling_rules => [] => [] datadog.trace.shutdown_timeout => 5000 => 5000 datadog.trace.sidecar_trace_sender => Off => Off datadog.trace.slim_analytics_enabled => Off => Off datadog.trace.slim_analytics_sample_rate => 1 => 1 datadog.trace.slim_enabled => On => On datadog.trace.spans_limit => 1000 => 1000 datadog.trace.sqlsrv_analytics_enabled => Off => Off datadog.trace.sqlsrv_analytics_sample_rate => 1 => 1 datadog.trace.sqlsrv_enabled => On => On datadog.trace.startup_logs => On => On datadog.trace.symfony_analytics_enabled => Off => Off datadog.trace.symfony_analytics_sample_rate => 1 => 1 datadog.trace.symfony_enabled => Off => Off datadog.trace.traced_internal_functions => no value => no value datadog.trace.url_as_resource_names_enabled => On => On datadog.trace.warn_legacy_dd_trace => On => On datadog.trace.web_analytics_enabled => Off => Off datadog.trace.web_analytics_sample_rate => 1 => 1 datadog.trace.web_enabled => On => On datadog.trace.wordpress_additional_actions => no value => no value datadog.trace.wordpress_analytics_enabled => Off => Off datadog.trace.wordpress_analytics_sample_rate => 1 => 1 datadog.trace.wordpress_callbacks => Off => Off datadog.trace.wordpress_enabled => On => On datadog.trace.wordpress_enhanced_integration => Off => Off datadog.trace.x_datadog_tags_max_length => 512 => 512 datadog.trace.yii_analytics_enabled => Off => Off datadog.trace.yii_analytics_sample_rate => 1 => 1 datadog.trace.yii_enabled => On => On datadog.trace.zendframework_analytics_enabled => Off => Off datadog.trace.zendframework_analytics_sample_rate => 1 => 1 datadog.trace.zendframework_enabled => On => On datadog.version => 2023.10.18.0 => 2023.10.18.0 datadog.web_analytics_enabled => Off => Off datadog.web_analytics_sample_rate => 1 => 1 datadog.wordpress_analytics_enabled => Off => Off datadog.wordpress_analytics_sample_rate => 1 => 1 datadog.yii_analytics_enabled => Off => Off datadog.yii_analytics_sample_rate => 1 => 1 datadog.zendframework_analytics_enabled => Off => Off datadog.zendframework_analytics_sample_rate => 1 => 1 ddtrace.cgroup_file => /proc/self/cgroup => /proc/self/cgroup ddtrace.disable => Off => Off ddtrace.request_init_hook => /opt/datadog/dd-library/0.92.2/dd-trace-sources/bridge/dd_wrap_autoloader.php => /opt/datadog/dd-library/0.92.2/dd-trace-sources/bridge/dd_wrap_autoloader.php ```

Upgrading from

No response

PROFeNoM commented 9 months ago

Hi @B-Galati,

Just to confirm, is it indeed that you don't receive any spans at all from automatic instrumentation?

When you say "traces are sent when they are going through our custom instrumentation", do you mean that automatic instrumentation spans are being sent and displayed on the Datadog UI only when using the code snippet you provided? (Thank you for providing the code snippet; it is always helpful.)

When using DD_TRACE_DEBUG=1, do you see the SymfonyIntegration loaded when receiving an HTTP request?

B-Galati commented 9 months ago

Just to confirm, is it indeed that you don't receive any spans at all from automatic instrumentation?

Exactly.

When you say "traces are sent when they are going through our custom instrumentation", do you mean that automatic instrumentation spans are being sent and displayed on the Datadog UI only when using the code snippet you provided? (Thank you for providing the code snippet; it is always helpful.)

Yes!

When using DD_TRACE_DEBUG=1, do you see the SymfonyIntegration loaded when receiving an HTTP request?

Yes, I can see it is always loaded :heavy_check_mark:

PROFeNoM commented 9 months ago

Okay, so far, I haven't been able to reproduce the issue on Symfony 6.3.


There is one thing that I want to make sure of. Looking at your phpinfo() output, I can see:

datadog.trace.symfony_enabled => Off => Off

This shouldn't be the case. By any chance, haven't you disabled Symfony through the DD_TRACE_SYMFONY_ENABLED environment variable or the datadog.trace.symfony_enabled ini? This configuration is enabled by default.


Otherwise, at that point, since you confirmed through the debug logs that the Symfony Integration was indeed loaded and that I assume you didn't see any exceptions until it eventually flushed the trace, we can look at the agent logs for something.

You can even try with a basic controller - e.g., something along the:

<?php

declare(strict_types=1);

namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class DefaultController
{
    #[Route('/basic_route')]
    public function index()
    {
        return new Response('Hello world!');
    }
}

The agent log level should be set in debug mode by default. When making a request to this (or another) controller, can you see an associated agent log:

TRACE | DEBUG | (pkg/trace/writer/trace.go:242 in flush) | Serializing 1 tracer payloads.

An even more verbose mode is the trace level. If you look at this mode, do you see anything striking?

In the agent logs, we would first be looking at what's happening between the addSpans and flush function calls, i.e., between:

TRACE | TRACE | (pkg/trace/writer/trace.go:206 in addSpans) | Writer: handling new tracer payload with 7 spans:

and

TRACE | DEBUG | (pkg/trace/writer/trace.go:242 in flush) | Serializing 1 tracer payloads.
B-Galati commented 8 months ago

@PROFeNoM thanks for digging! I can see the traces in datadog UI with my local environment. I guess something is wrong with our agent in production.

I am closing and will re-open if I have more evidence.

Thanks again, much appreciated 👍

B-Galati commented 8 months ago

For anyone asking: the root was this config on our agent: DD_APM_IGNORE_RESOURCES=healthcheck,health,ping