Logs de lancement du traceur
Rapport de recherche Datadog : Bilan sur l'adoption de l'informatique sans serveur Rapport : Bilan sur l'adoption de l'informatique sans serveur

Logs de lancement du traceur

Logs de lancement

Les logs de lancement du traceur capturent toutes les informations accessibles au lancement et les enregistrent en tant que logs DATADOG TRACER CONFIGURATION ou DATADOG TRACER DIAGNOSTICS afin de faciliter la recherche au sein de vos logs. Selon leurs conventions et la sécurité d’accès à Stdout (ou équivalent), certains langages peuvent écrire les logs dans un fichier distinct. Dans ces cas de figure, l’emplacement des logs est indiqué dans l’onglet du langage concerné ci-dessous.

Les entrées de logs DIAGNOSTICS sont générées lorsque le traceur rencontre une erreur pendant le lancement de l’application. Les logs CONFIGURATION, quant à eux, représentent au format JSON les paramètres appliqués à votre traceur. Dans le cas des langages pour lesquels un check de connectivité de l’Agent est effectué, la configuration JSON comprend également une clé ‘agent_error’ indiquant si l’Agent est disponible ou non.

Si des lignes de log DIAGNOSTICS s’affichent, vérifiez bien sur le log en question que les paramètres et les configurations sont appliqués correctement. Si vous ne voyez aucun log, assurez-vous que les logs de votre application ne sont pas désactivés et que le niveau de log est défini sur INFO ou un niveau supérieur.

Configuration

{"os_name":"Mac OS X","os_version":"10.15.4","architecture":"x86_64","lang":"jvm","lang_version":"11.0.6","jvm_vendor":"AdoptOpenJDK","jvm_version":"11.0.6+10","java_class_version":"55.0","enabled":true,"service":"unnamed-java-app","agent_url":"http://localhost:8126","agent_error":false,"debug":false,"analytics_enabled":false,"sampling_rules":[{},{}],"priority_sampling_enabled":true,"logs_correlation_enabled":false,"profiling_enabled":false,"dd_version":"null","health_checks_enabled":false,"configuration_file":"no config file present","runtime_id":"b69deb26-8bc3-4c00-8952-d42bf8c2123b"}

Diagnostics

Le traceur Java ne génère aucun log Diagnostic. Pour ce check, exécutez le traceur en mode debugging.

Emplacement des fichiers

Les fichiers de log sont situés dans %PROGRAMDATA%\Datadog .NET Tracer\logs`.

  • dotnet-tracer-{processName}-{timestamp}.log contient les logs Configuration.

  • dotnet-profiler.logn contient les logs Diagnostics, s’ils sont générés.

Configuration

2020-06-29 12:26:39.572 +02:00 [INF] DATADOG TRACER CONFIGURATION -
{"date":"2020-06-29T12:26:39.5615724+02:00","os_name":"Windows",
"os_version":"Microsoft Windows NT 6.2.9200.0","version":"1.17.1.0",
"platform":"x64","lang":".NET Framework","lang_version":"4.8+",
"env":null,"enabled":true,"service":"git-credential-manager",
"agent_url":"http://localhost:8126","debug":false,
"analytics_enabled":false,"sample_rate":null,"sampling_rules":null,
"tags":[],"log_injection_enabled":false,
"runtime_metrics_enabled":false,"disabled_integrations":[]}

Diagnostics

Le traceur .NET génère les lignes de diagnostic suivantes :

DATADOG TRACER DIAGNOSTICS - Profiler disabled in DD_TRACE_ENABLED
DATADOG TRACER DIAGNOSTICS - Profiler disabled: {process_name} not found in DD_PROFILER_PROCESSES
DATADOG TRACER DIAGNOSTICS - Profiler disabled: {process_name} found in DD_PROFILER_EXCLUDE_PROCESSES
DATADOG TRACER DIAGNOSTICS - Failed to attach profiler: interface ICorProfilerInfo3 not found
DATADOG TRACER DIAGNOSTICS - Profiler disabled: {application_pool} is recognized as an Azure App Services infrastructure process
DATADOG TRACER DIAGNOSTICS - Profiler disabled: {application_pool} is recognized as Kudu, an Azure App Services reserved process
DATADOG TRACER DIAGNOSTICS - Profiler disabled: DD_INTEGRATIONS environment variable not set
DATADOG TRACER DIAGNOSTICS - Profiler disabled: no enabled integrations found
DATADOG TRACER DIAGNOSTICS - Failed to attach profiler: unable to set event mask
DATADOG TRACER DIAGNOSTICS - Error fetching configuration {exception}

PHP Info

Obtenez la chaîne JSON des logs de lancement à partir d’une page phpinfo() à côté de « DATADOG TRACER CONFIGURATION ». Créez le fichier PHP suivant et accédez-y à partir d’un navigateur sur la machine du host.

<?php phpinfo(); ?>

Les informations de diagnostic sont présentées dans un tableau distinct afin de diagnostiquer les problèmes fréquents.

CLI SAPI

Récupérez les informations à partir du CLI SAPI en exécutant php --ri=ddtrace.

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 => 1.0.0-nightly
DATADOG TRACER CONFIGURATION => {"date":"2020-07-01T17:43:54Z","os_name":"Linux 49b1cb4bdd12 4.19.76-linuxkit #1 SMP Tue May 26 11:42:35 UTC 2020 x86_64","os_version":"4.19.76-linuxkit","version":"1.0.0-nightly","lang":"php","lang_version":"7.4.5","env":null,"enabled":true,"service":null,"enabled_cli":false,"agent_url":"https://localhost:8126","debug":false,"analytics_enabled":false,"sample_rate":1.000000,"sampling_rules":null,"tags":null,"service_mapping":null,"distributed_tracing_enabled":true,"priority_sampling_enabled":true,"dd_version":null,"architecture":"x86_64","sapi":"cli","ddtrace.request_init_hook":null,"open_basedir_configured":false,"uri_fragment_regex":null,"uri_mapping_incoming":null,"uri_mapping_outgoing":null,"auto_flush_enabled":false,"generate_root_span":true,"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":null,"enabled_from_env":true,"opcache.file_cache":null,"agent_error":"Couldn't connect to server","ddtrace.request_init_hook_reachable":false}

                               Diagnostics
agent_error => Couldn't connect to server
ddtrace.request_init_hook_reachable => false

Directive => Local Value => Master Value
ddtrace.disable => Off => Off
...

Configuration

Si le traceur est en mode DEBUG, les logs de lancement s’afficheront dans le log error_log une fois par processus lors de la première requête.

DATADOG TRACER CONFIGURATION - {"agent_error":"Couldn't connect to server","ddtrace.request_init_hook_reachable":false,"date":"2020-07-01T17:42:50Z","os_name":"Linux 49b1cb4bdd12 4.19.76-linuxkit #1 SMP Tue May 26 11:42:35 UTC 2020 x86_64","os_version":"4.19.76-linuxkit","version":"1.0.0-nightly","lang":"php","lang_version":"7.4.5","env":null,"enabled":true,"service":null,"enabled_cli":false,"agent_url":"https://localhost:8126","debug":false,"analytics_enabled":false,"sample_rate":1.000000,"sampling_rules":null,"tags":null,"service_mapping":null,"distributed_tracing_enabled":true,"priority_sampling_enabled":true,"dd_version":null,"architecture":"x86_64","sapi":"cgi-fcgi","ddtrace.request_init_hook":null,"open_basedir_configured":false,"uri_fragment_regex":null,"uri_mapping_incoming":null,"uri_mapping_outgoing":null,"auto_flush_enabled":false,"generate_root_span":true,"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":null,"enabled_from_env":true,"opcache.file_cache":null}

Diagnostic

Les erreurs de diagnostic pour le traceur PHP s’affichent dans le log error_log si le traceur est en mode DEBUG.

DATADOG TRACER DIAGNOSTICS - agent_error: Couldn't connect to server
DATADOG TRACER DIAGNOSTICS - ddtrace.request_init_hook_reachable: false

Runtime

Accédez aux logs de lancement en tant que chaîne JSON lors de l’exécution avec \DDTrace\startup_logs().

echo \DDTrace\startup_logs() . PHP_EOL;

Configuration

2020/07/09 15:57:07 Datadog Tracer v1.26.0 INFO: DATADOG TRACER CONFIGURATION {"date":"2020-07-09T15:57:07-05:00","os_name":"darwin","os_version":"10.15.4","version":"v1.26.0","lang":"Go","lang_version":"go1.14.2","env":"","service":"splittest2","agent_url":"http://127.0.0.1:8126/v0.4/traces","agent_error":"","debug":true,"analytics_enabled":false,"sample_rate":"NaN","sampling_rules":null,"sampling_rules_error":"","tags":{"runtime-id":"d269781c-b1bf-4d7b-9a55-a8174930554f"},"runtime_metrics_enabled":false,"health_metrics_enabled":false,"dd_version":"","architecture":"amd64","global_service":""}

Diagnostic

Le traceur Go peut générer deux lignes de diagnostic différentes : une pour lorsque l’Agent n’est pas accessible, et l’autre pour les erreurs d’échantillonnage des traces.

2020/07/09 15:57:07 Datadog Tracer v1.26.0 WARN: DIAGNOSTICS Unable to reach agent: [Origine de l'erreur]
2020/07/09 15:57:07 Datadog Tracer v1.26.0 WARN: DIAGNOSTICS Error(s) parsing DD_TRACE_SAMPLING_RULES:
    at index 1 ...
    at index 4 ....

Configuration

[2020-07-02 14:51:16.421] [INFO] app - host:port==localhost:9080
[2020-07-02 14:51:16.423] [INFO] app - db type==mongo
[2020-07-02 14:51:16.439] [INFO] routes - Use dataaccess:../dataaccess/mongo/index.js
[2020-07-02 14:51:16.599] [INFO] app - Error connecting to database - exiting process: MongoError: connect ECONNREFUSED 127.0.0.1:27017
[2020-07-02 14:51:16.600] [INFO] app - Initialized database connections
[2020-07-02 14:51:16.601] [INFO] app - Express server listening on port 9080
DATADOG TRACER CONFIGURATION - {"date":"2020-07-02T18:51:18.294Z","os_name":"Darwin","os_version":"19.2.0","architecture":"x64","version":"0.23.0","lang":"nodejs","lang_version":"12.18.1","enabled":true,"service":"acmeair","agent_url":"http://localhost:8126","agent_error":"Network error trying to reach the agent: connect ECONNREFUSED 127.0.0.1:8126","debug":false,"analytics_enabled":false,"sample_rate":1,"sampling_rules":[],"tags":{"service":"acmeair","version":"0.0.4"},"dd_version":"0.0.4","log_injection_enabled":false,"runtime_metrics_enabled":false,"integrations_loaded":["http","fs","net","dns","express@4.17.1"]}

Diagnostics

Le traceur NodeJS génère une ligne de diagnostic lorsque l’Agent n’est pas disponible.

DATADOG TRACER DIAGNOSTIC - Agent Error: Network error trying to reach the agent: connect ECONNREFUSED 127.0.0.1:8126

Emplacement des logs

Le traceur Python logue les informations de configuration au niveau INFO. Si des informations de diagnostic sont détectées, elles sont loguées en tant qu’ERROR.

S’il n’existe aucune configuration de logging, seules les informations de diagnostic seront envoyées vers Stderr. Pour consulter les logs de lancement du traceur, ajoutez un logger ou définissez DATADOG_TRACE_DEBUG=true dans votre configuration avant d’exécuter votre application avec dd-trace-run. Cette opération permet d’ajouter un logger et d’exposer à la fois les logs de debugging et les logs de lancement du traceur.

Configuration

2020-07-09 11:04:08,098 INFO [ddtrace.tracer] [tracer.py:338] - - DATADOG TRACER CONFIGURATION - {"date": "2020-07-09T15:04:08.092797", "os_name": "Darwin", "os_version": "19.5.0", "is_64_bit": true, "architecture": "64bit", "vm": "CPython", "version": "0.38.1.dev79+gd22e2972.d20200707", "lang": "python", "lang_version": "3.7.6", "pip_version": "20.0.2", "in_virtual_env": true, "agent_url": "http://localhost:1234", "agent_error": "Agent not reachable. Exception raised: [Errno 61] Connection refused", "env": "", "is_global_tracer": true, "enabled_env_setting": null, "tracer_enabled": true, "sampler_type": "DatadogSampler", "priority_sampler_type": "RateByServiceSampler", "service": "", "debug": true, "enabled_cli": true, "analytics_enabled": false, "log_injection_enabled": false, "health_metrics_enabled": false, "dd_version": "", "priority_sampling_enabled": true, "global_tags": "", "tracer_tags": "", "integrations": {"asyncio": "N/A", "boto": "N/A", "botocore": {"enabled": true, "instrumented": false, "module_available": true, "module_version": "1.15.32", "module_imported": false, "config": "N/A"}, "bottle": {"enabled": false, "instrumented": false, "module_available": true, "module_version": "0.12.18", "module_imported": false, "config": null}, "cassandra": "N/A", "celery": {"enabled": true, "instrumented": false, "module_available": true, "module_version": "4.2.2", "module_imported": false, "config": "N/A"}, "consul": "N/A", "django": "N/A", "elasticsearch": "N/A", "algoliasearch": {"enabled": true, "instrumented": false, "module_available": true, "module_version": "2.2.0", "module_imported": false, "config": "N/A"}, "futures": "N/A", "grpc": "N/A", "mongoengine": {"enabled": true, "instrumented": false, "module_available": true, "module_version": "0.19.1", "module_imported": false, "config": "N/A"}, "mysql": "N/A", "mysqldb": "N/A", "pymysql": "N/A", "psycopg": "N/A", "pylibmc": {"enabled": true, "instrumented": false, "module_available": true, "module_version": "1.6.1", "module_imported": false, "config": "N/A"}, "pymemcache": {"enabled": true, "instrumented": false, "module_available": true, "module_version": "1.4.4", "module_imported": false, "config": "N/A"}, "pymongo": {"enabled": true, "instrumented": false, "module_available": true, "module_version": "3.10.1", "module_imported": false, "config": "N/A"}, "redis": {"enabled": true, "instrumented": false, "module_available": true, "module_version": "3.5.3", "module_imported": false, "config": "N/A"}, "rediscluster": "N/A", "requests": {"enabled": true, "instrumented": false, "module_available": true, "module_version": "2.23.0", "module_imported": false, "config": "N/A"}, "sqlalchemy": "N/A", "sqlite3": "N/A", "aiohttp": {"enabled": true, "instrumented": false, "module_available": true, "module_version": "3.6.2", "module_imported": false, "config": "N/A"}, "aiopg": {"enabled": true, "instrumented": false, "module_available": true, "module_version": "0.15.0", "module_imported": false, "config": "N/A"}, "aiobotocore": {"enabled": false, "instrumented": false, "module_available": true, "module_version": "1.0.1", "module_imported": false, "config": null}, "httplib": "N/A", "vertica": "N/A", "molten": {"enabled": true, "instrumented": false, "module_available": true, "module_version": "0.7.4", "module_imported": false, "config": "N/A"}, "jinja2": "N/A", "mako": "N/A", "flask": "N/A", "kombu": {"enabled": false, "instrumented": false, "module_available": true, "module_version": "4.3.0", "module_imported": false, "config": null}, "falcon": {"enabled": false, "instrumented": false, "module_available": true, "module_version": "1.4.1", "module_imported": false, "config": null}, "pylons": "N/A", "pyramid": {"enabled": false, "instrumented": false, "module_available": true, "module_version": "1.10.4", "module_imported": false, "config": null}, "logging": "N/A"}}

Diagnostics

Le traceur Python génère une ligne de diagnostic lorsque l’Agent n’est pas disponible.

DATADOG TRACER DIAGNOSTIC - Agent not reachable. Exception raised: [Errno 61] Connection refused

Configuration

W, [2020-07-08T21:14:25.281615 #137]  WARN -- ddtrace: [ddtrace] DATADOG TRACER CONFIGURATION - {"date":"2020-07-08T21:14:25+00:00","os_name":"x86_64-pc-linux-gnu","version":"0.37.0","lang":"ruby","lang_version":"2.7.0","enabled":true,"agent_url":"http://ddagent:8126?timeout=1","debug":false,"analytics_enabled":false,"runtime_metrics_enabled":false,"vm":"ruby-2.7.0","partial_flushing_enabled":false,"priority_sampling_enabled":false,"health_metrics_enabled":false}

Diagnostic

Le traceur Ruby génère une ligne de diagnostic lorsque l’Agent n’est pas disponible.

W, [2020-07-08T21:19:05.765994 #143]  WARN -- ddtrace: [ddtrace] DATADOG TRACER DIAGNOSTIC - Agent Error: Datadog::Transport::InternalErrorResponse ok?: unsupported?:, not_found?:, client_error?:, server_error?:, internal_error?:true, payload:, error_type:Errno::ECONNREFUSED error:Failed to open TCP connection to ddagent:9127 (Connection refused - connect(2) for "ddagent" port 9127)

Emplacement des fichiers

Pour C++, le fichier de log de lancement est créé dans /var/tmp/dd-opentracing-cpp. Par exemple : /var/tmp/dd-opentracing-cpp/startup_options-1593737077369521386.json.

Configuration


{"agent_url":"http://localhost:8126","analytics_enabled":false,"analytics_sample_rate":null,"date":"2020-07-03T00:44:37+0000","dd_version":"","enabled":true,"env":"test-env","lang":"cpp","lang_version":"201402","operation_name_override":"","report_hostname":false,"sampling_rules":"[{\"sample_rate\": 1.0}]","service":"service_name","tags":{},"version":"v1.2.0"}

Diagnostic

Pour C++, aucune ligne DATADOG TRACER DIAGNOSTICS n’est générée dans les logs du traceur. Toutefois, si l’Agent est indisponible, les erreurs s’afficheront dans les logs de votre application. Vous constaterez également une hausse des métriques tracing.datadog.reports_failed et tracing.datadog.reports_dropped dans Envoy.

Erreurs Diagnostics

Vérifiez la présence d’erreurs DIAGNOSTICS qui indiquent que le traceur n’est pas en mesure d’envoyer des traces à l’Agent Datadog.

Si ces erreurs s’affichent, vérifiez que votre traceur a été configuré pour recevoir des traces pour ECS, Kubernetes, Docker ou toute autre option. Vous pouvez également contacter l’équipe d’assistance pour demander à ce que la configuration de votre traceur et de votre Agent soit examinée.

Paramètres de configuration

Si vos logs contiennent uniquement des lignes CONFIGURATION, une étape de dépannage utile consiste à confirmer que les paramètres renvoyés par le traceur correspondent aux paramètres de votre déploiement et de votre configuration du traceur Datadog. Si des traces spécifiques ne s’affichent pas dans Datadog, vous pouvez également consulter la section Exigences de comptabilité de la documentation pour vérifier que ces intégrations sont prises en charge.

Si l’une de vos intégrations n’est pas prise en charge, ou si vous souhaitez qu’une personne extérieure examine la configuration renvoyée afin de comprendre pourquoi les traces ne s’affichent pas comme prévu dans Datadog, contactez l’équipe d’assistance. Elle sera en mesure de vous aider à établir un diagnostic et à créer une demande d’ajout de fonctionnalité pour une nouvelle intégration.

Désactiver les logs de lancement

Vous pouvez désactiver les logs de lancement pour chaque langage en définissant la variable d’environnement DD_TRACE_STARTUP_LOGS=false. Toutefois, faites-le uniquement si les logs envoyés posent problème. Si vous envoyez des logs de debugging par la suite, n’oubliez pas d’activer les logs de lancement et d’envoyer tous les logs pertinents d’une traite afin d’accélérer le traitement de vos tickets d’assistance.