In #59379, we added sdk as a tag on our event_manager metrics. As a result, the cardinality of tag combinations in DD spiked and we had to revert the change. We need to find a way to keep sending that information, but in a way that doesn't overwhelm our tag count.
For reference, the full list of values we saw in DD in the short window the change was deployed is included below.
Thoughts:
(Crossed-out items handled by #59504. The rest have been pulled into #59742.)
This is a free-form field, so we'd probably do well to have an other category, into which we can lump stuff we don't actually care to differentiate. DONE
There are a lot of SDKs which appear both as sentry-xxx and sentry.xxx (and some also as just the xxx part), which we can combine. DONE
There are a bunch of raven SDKs in the list. Should we combine them with their unified-SDK versions? Or should we just lump them all together since they're all deprecated (and have been for years)? DONE, lumped in with other
There are definitely a bunch of community SDKs in the list. How much do we care about differentiating them? DONE, lumped in with other
There are some descriptive ones, like __filtered and __sensitive, which can be combined and/or lumped in with other. DONE, lumped in with other
- Do we care about differentiating SDKs which fall into the
platform: other bucket? Which SDKs are those?
- For tag values we end up lumping into
other, should we log to GCP, just we we can get a sense of what they are?
- Should we make any effort to make sure the
sdk value makes sense with the platform value?
UPDATE:
In order to quickly unblock adding the data to metrics, we went with a quick-and-dirty solution (the aforementioned #59504) which:
- Considers anything not following the unified SDK naming pattern of
sentry.platform.framework to be other. This includes all of the raven SDKs.
- Considers anything third-party to be
other
- Only splits the JS SDKs out by actual SDK (using the full
sdk value), cutting the other SDKs down to sentry.platform
In that solution, because the current use case of this data is to track merge/unmerge behavior (which differs more by platform than framework), for wrapper SDKs which emit more than one sdk value, we chose to lump values by platform rather than by SDK. (So, for example, sentry.native.android.flutter gets subsumed by sentry.native and sentry.java.android.flutter gets subsumed by sentry.java rather than being grouped together under a single flutter umbrella.) This isn't the right choice for all metrics, though, so we might want to revisit that choice in the future, especially since ideally that information should be already being gathered by the platform value (though that value in and of itself has issues; see #59075).
Related: #59075
Full list of observed tag values
_filtered
_masbs
_redacted
_sensitive
accesalabs
avsentrytracker
backtrace_uploader
bustle-cf-sentry
buzzvil
bv-loader
cf-sentry
cfml-sentry-logger
cfworker-sentry
chequer-sentry
cl-sentry-client
cloudflare-sentry
coredump.uploader.sdk
crash-report-server
dart
dell_boomi
dhqsentryclient
dlink
dropbox
edgeworker
erlang
ertflix
facepuncher
figma-desktop
filemaker
fs-recbugs
fyde
gmsentry
inea_online_tv
ipssentryclient
java
java-starter
kodus-sentry
logstash
loyaltylion.sentry-mini
lua
luya-errorapi
mangoweb-sentry-php
me.cloudguide.app
mediasetplay-ctv-shell
menukioskservice
micro-sentry.javascript.browser
mod_sentry
mongooseim
mulesoft
nifi-bulletin
ocfw
patrol
philo-roku
platformsh.fluffy
plugin_runner
pobb.in
pubfac-salesforce-apex
pws
raven
raven-air
raven-as3
raven-bash
raven-cfml
raven-clj
raven-erlang
raven-grails
raven-java
raven-java:log4j2
raven-java:logback
raven-js
raven-lua
raven-lucee
raven-node
raven-objc
raven-perl
raven-php
raven-python
raven-qt
raven-rbxlua
raven-ruby
raven-swift
raven.cr
raven_logstash
rbxluau
rcrowe-raven
riot-assert-logger
roku
rooms
segment_destination_function
sentry
sentry-android
sentry-brightscript
sentry-cfml
sentry-cli
sentry-cocoa
sentry-cordova
sentry-curl
sentry-defold
sentry-delphi
sentry-delta
sentry-electron
sentry-elixir
sentry-java
sentry-java-dynasty
sentry-kubernetes
sentry-laravel
sentry-light-native
sentry-mojito
sentry-objc
sentry-ocaml
sentry-php
sentry-python
sentry-radar
sentry-raven
sentry-react-native
sentry-ruby
sentry-sdk-roku
sentry-swift
sentry-symfony
sentry-unity
sentry.apex
sentry.bam.ps4.trilithium.d
sentry.cocoa
sentry.cocoa.capacitor
sentry.cocoa.dotnet
sentry.cocoa.flutter
sentry.cocoa.kmp
sentry.cocoa.react-native
sentry.cocoa.unity
sentry.cocoa.unreal
sentry.custom.batm_server
sentry.dart
sentry.dart.browser
sentry.dart.flutter
sentry.dotnet
sentry.dotnet.android
sentry.dotnet.aspnet
sentry.dotnet.aspnetcore
sentry.dotnet.aspnetcore.grpc
sentry.dotnet.atlasproper
sentry.dotnet.cocoa
sentry.dotnet.extensions.logging
sentry.dotnet.log4net
sentry.dotnet.maui
sentry.dotnet.nlog
sentry.dotnet.serilog
sentry.dotnet.unity
sentry.dotnet.xamarin
sentry.dotnet.xamarin-forms
sentry.go
sentry.go.echo
sentry.go.fasthttp
sentry.go.gin
sentry.go.http
sentry.go.logrus
sentry.java
sentry.java.android
sentry.java.android.capacitor
sentry.java.android.dotnet
sentry.java.android.flutter
sentry.java.android.kmp
sentry.java.android.react-native
sentry.java.android.timber
sentry.java.android.unity
sentry.java.android.unreal
sentry.java.jul
sentry.java.log4j2
sentry.java.logback
sentry.java.spring
sentry.java.spring-boot
sentry.java.spring-boot.jakarta
sentry.java.spring.jakarta
sentry.javascript.angular
sentry.javascript.angular-ivy
sentry.javascript.browser
sentry.javascript.bun
sentry.javascript.capacitor
sentry.javascript.cordova
sentry.javascript.deno
sentry.javascript.electron
sentry.javascript.ember
sentry.javascript.gatsby
sentry.javascript.miniapp
sentry.javascript.nextjs
sentry.javascript.node
sentry.javascript.node-experimental
sentry.javascript.node.hapi
sentry.javascript.raycast
sentry.javascript.react
sentry.javascript.react-native
sentry.javascript.react-native.expo
sentry.javascript.react.expo
sentry.javascript.remix
sentry.javascript.serverless
sentry.javascript.sfcc
sentry.javascript.svelte
sentry.javascript.sveltekit
sentry.javascript.vue
sentry.last-oasis.crashreporter
sentry.lua
sentry.native
sentry.native.android
sentry.native.android.capacitor
sentry.native.android.flutter
sentry.native.android.react-native
sentry.native.android.unity
sentry.native.android.unreal
sentry.native.dotnet
sentry.native.unity
sentry.native.unreal
sentry.nativescript
sentry.nopbyte.lua
sentry.opentelemetry
sentry.php
sentry.php.laravel
sentry.php.spiral
sentry.php.spryker
sentry.php.symfony
sentry.php.wordpress
sentry.php.wp-sentry-integration
sentry.php.wpcare-helper-integration
sentry.python
sentry.python.aiohttp
sentry.python.aws_lambda
sentry.python.beam
sentry.python.bottle
sentry.python.chalice
sentry.python.django
sentry.python.falcon
sentry.python.fastapi
sentry.python.flask
sentry.python.gcp
sentry.python.pyramid
sentry.python.quart
sentry.python.sanic
sentry.python.starlette
sentry.python.tornado
sentry.roblox
sentry.ruby
sentry.ruby.delayed_job
sentry.ruby.icerrors_sidekiq
sentry.ruby.inst_jobs
sentry.ruby.rails
sentry.ruby.resque
sentry.ruby.sidekiq
sentry.rust
sentry.unity.irisvr
sentry.unity.lite
sentry.unsquared
sentrydotnet
sentrydotnet.aspnetcore
sentryr
sentryswift
sfra
sharpraven
shawnxli-cloudflare-worker
shentry/nsdk:simplenexusformcodebase
simplenexusplugin
simplenexusplugin2
slobs_updater
smalltalk
solve_web_sdk
spotify-raven-cpp
store-catalog-service
suitest.sentry
tame-sentry
teak
test-python
thelawsociety
tonyo.sentry-kubernetes
toucan-js
transit.javascript.javascriptcorelogger
tsm
unknown
unreal.crashreporter
utopia-logger
vastdata.sentry.python
vertigo.sentry
virtualshieldsvc
virtualshieldui
ws
xojo-sentry
In #59379, we added
sdkas a tag on ourevent_managermetrics. As a result, the cardinality of tag combinations in DD spiked and we had to revert the change. We need to find a way to keep sending that information, but in a way that doesn't overwhelm our tag count.For reference, the full list of values we saw in DD in the short window the change was deployed is included below.
Thoughts:
(Crossed-out items handled by #59504. The rest have been pulled into #59742.)
This is a free-form field, so we'd probably do well to have anDONEothercategory, into which we can lump stuff we don't actually care to differentiate.There are a lot of SDKs which appear both asDONEsentry-xxxandsentry.xxx(and some also as just thexxxpart), which we can combine.There are a bunch of raven SDKs in the list. Should we combine them with their unified-SDK versions? Or should we just lump them all together since they're all deprecated (and have been for years)?DONE, lumped in withotherThere are definitely a bunch of community SDKs in the list. How much do we care about differentiating them?DONE, lumped in withotherThere are some descriptive ones, likeDONE, lumped in with__filteredand__sensitive, which can be combined and/or lumped in withother.otherplatform: otherbucket? Which SDKs are those?other, should we log to GCP, just we we can get a sense of what they are?sdkvalue makes sense with theplatformvalue?UPDATE:
In order to quickly unblock adding the data to metrics, we went with a quick-and-dirty solution (the aforementioned #59504) which:
sentry.platform.frameworkto beother. This includes all of the raven SDKs.othersdkvalue), cutting the other SDKs down tosentry.platformIn that solution, because the current use case of this data is to track merge/unmerge behavior (which differs more by platform than framework), for wrapper SDKs which emit more than one
sdkvalue, we chose to lump values by platform rather than by SDK. (So, for example,sentry.native.android.fluttergets subsumed bysentry.nativeandsentry.java.android.fluttergets subsumed bysentry.javarather than being grouped together under a singleflutterumbrella.) This isn't the right choice for all metrics, though, so we might want to revisit that choice in the future, especially since ideally that information should be already being gathered by theplatformvalue (though that value in and of itself has issues; see #59075).Related: #59075
Full list of observed tag values