Skip to content

telemetry: add transmit:false flag for logs, reduce log cardinality #5871

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

tlhunter
Copy link
Member

@tlhunter tlhunter commented Jun 10, 2025

What does this PR do?

  • adds a new LogConfig class, an optional final argument for log.LEVEL() calls
    • can have more properties added in future if we need to further configure logging
    • exports a default instance to make it convenient to mute logs from telemetry
  • prevents the two noisiest logs from sending telemetry
  • we also need to reduce log cardinality and send pre-parsed sprintf style logs

Motivation

  • host connection errors are useful for users but not useful for us to debug

Copy link

github-actions bot commented Jun 10, 2025

Overall package size

Self size: 9.62 MB
Deduped: 106.12 MB
No deduping: 106.64 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.7.0 | 35.02 MB | 35.02 MB | | @datadog/native-appsec | 8.5.2 | 19.33 MB | 19.34 MB | | @datadog/native-iast-taint-tracking | 4.0.0 | 11.72 MB | 11.73 MB | | @datadog/pprof | 5.8.2 | 9.56 MB | 9.93 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.3 | 2.95 MB | 5.6 MB | | @datadog/wasm-js-rewriter | 4.0.1 | 2.85 MB | 3.58 MB | | @datadog/native-metrics | 3.1.1 | 1.02 MB | 1.43 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.14.0 | 120.58 kB | 841.68 kB | | source-map | 0.7.4 | 226 kB | 226 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | lru-cache | 7.18.3 | 133.92 kB | 133.92 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.1 | 109.9 kB | 109.9 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 5.3.2 | 53.63 kB | 53.63 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | dc-polyfill | 0.1.9 | 25.11 kB | 25.11 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.2 | 23.54 kB | 23.54 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | mutexify | 1.4.0 | 5.71 kB | 8.74 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.4 | 3.96 kB | 3.96 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

Copy link

codecov bot commented Jun 10, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 81.02%. Comparing base (c4710cc) to head (b076813).
Report is 1 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #5871      +/-   ##
==========================================
+ Coverage   79.45%   81.02%   +1.57%     
==========================================
  Files         473      288     -185     
  Lines       20220    10242    -9978     
==========================================
- Hits        16065     8299    -7766     
+ Misses       4155     1943    -2212     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented Jun 10, 2025

Datadog Report

Branch report: tlhunter/telemetry-no-transmit-logs
Commit report: 10037a1
Test service: dd-trace-js-integration-tests

✅ 0 Failed, 1252 Passed, 0 Skipped, 21m 48.72s Total Time
❄️ 4 New Flaky

New Flaky Tests (4)

  • cypress@10.2.0 commonJS catches errors in hooks - integration-tests/cypress/cypress.spec.js - Last Failure

    Expand for error
     Cannot read properties of undefined (reading 'content')
    
  • cypress@10.2.0 esm catches errors in hooks - integration-tests/cypress/cypress.spec.js - Last Failure

    Expand for error
     Cannot read properties of undefined (reading 'content')
    
  • cypress@latest esm can run and report tests - integration-tests/cypress/cypress.spec.js - Last Failure

    Expand for error
     Cannot destructure property 'content' of 'testSessionEvent' as it is undefined.
    
  • cypress@latest esm catches errors in hooks - integration-tests/cypress/cypress.spec.js - Last Failure

    Expand for error
     Cannot read properties of undefined (reading 'content')
    

@tlhunter tlhunter force-pushed the tlhunter/telemetry-no-transmit-logs branch from 4e8c325 to 770ea3e Compare June 10, 2025 21:47
@pr-commenter
Copy link

pr-commenter bot commented Jun 10, 2025

Benchmarks

Benchmark execution time: 2025-06-11 22:03:54

Comparing candidate commit fd0f699 in PR branch tlhunter/telemetry-no-transmit-logs with baseline commit 93d59c4 in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 1175 metrics, 53 unstable metrics.

@tlhunter tlhunter force-pushed the tlhunter/telemetry-no-transmit-logs branch 2 times, most recently from c568a09 to 0ab11e2 Compare June 10, 2025 22:24
@tlhunter tlhunter marked this pull request as ready for review June 10, 2025 22:50
@tlhunter tlhunter requested a review from a team as a code owner June 10, 2025 22:50
@tlhunter tlhunter force-pushed the tlhunter/telemetry-no-transmit-logs branch from 1a8c0b2 to fd0f699 Compare June 11, 2025 21:56
const log = {
LogConfig,
MUTE: mute,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The word "mute" will easily be misinterpreted, as we're not muting the log in general, but just not sending it to telemetry. A more descriptive name would be:

Suggested change
MUTE: mute,
NO_TELEMETRY: mute,

@@ -27,7 +27,7 @@ function createHash (logEntry) {
}

function isValid (logEntry) {
return logEntry?.level && logEntry.message
return logEntry?.level && logEntry.message && logEntry.transmit !== false
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe I'm reading the code wrong, but isn't transmit only a property of the LogConfig instance? A Log instance would have sendViaTelemetry set instead, right?

Suggested change
return logEntry?.level && logEntry.message && logEntry.transmit !== false
return logEntry?.level && logEntry.message && logEntry.sendViaTelemetry !== false

Comment on lines +52 to +55
it('should not store logs with transmit flag set to false', () => {
expect(logCollector.add({ message: 'Error 1', level: 'ERROR' })).to.be.true
expect(logCollector.add({ message: 'Error 2', level: 'ERROR', transmit: true })).to.be.true
expect(logCollector.add({ message: 'Error 3', level: 'ERROR', transmit: false })).to.be.false
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I'm correct about my question about transmit vs sendViaTelemetry above, this test is not actually testing what you think it is. In that case it would be more robust to not just set the flag manually like you do here, but to at least go through the Log constructor.

@tlhunter tlhunter marked this pull request as draft June 17, 2025 15:23
@tlhunter tlhunter force-pushed the tlhunter/telemetry-no-transmit-logs branch from fd0f699 to caad609 Compare June 27, 2025 17:50
@tlhunter tlhunter changed the title telemetry: add transmit:false flag for logs telemetry: add transmit:false flag for logs, reduce log cardinality Jun 27, 2025
@tlhunter tlhunter force-pushed the tlhunter/telemetry-no-transmit-logs branch from caad609 to b076813 Compare June 27, 2025 17:59
@@ -42,7 +42,7 @@ class Writer extends BaseWriter {
startupLog({ agentError: err })

if (err) {
log.error('Error sending payload to the agent (status code: %s)', err.status, err)
log.error('Error sending payload to the agent (status code: %s)', err.status, err, log.NO_TELEMETRY)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants