Martin Thwaites

14K posts

Martin Thwaites banner
Martin Thwaites

Martin Thwaites

@MartinDotNet

Developer Advocate @honeycombio, #o11y activist, Microsoft MVP, Triager for #OpenTelemetry #dotnet #MVPBuzz https://t.co/T3t6EWrzJr

Manchester, England Katılım Eylül 2013
487 Takip Edilen2.7K Takipçiler
Sabitlenmiş Tweet
Martin Thwaites
Martin Thwaites@MartinDotNet·
Quick reminder that people are still finding the fediverse, so keep coming back to you contact lists on the various sites you follow them to see their new handles. Mine is @martindotnet@hachyderm.io
English
1
0
6
12.8K
Martin Thwaites
Martin Thwaites@MartinDotNet·
@davidfowl My system prompt came from the OSS community, your system prompt is biased towards Microsoft.
English
0
0
1
39
David Fowler
David Fowler@davidfowl·
So when programming languages are all irrelevant because we’re slopping out code in any language, what are we going to replace “my language is better than yours” discussion? Will it be agent harnesses?
English
52
5
98
12.7K
geoff
geoff@GeoffreyHuntley·
one reason why i love @honeycombio <oh that data looks interesting - click>
English
4
2
24
4.8K
Martin Thwaites
Martin Thwaites@MartinDotNet·
@cloudsider @Aaronontheweb @ChetHusk The reason comes down to "when" Aspire (the orchestration part) injects the environment variables in general (not just the endpoint), and whether it does that before or after the Collector injects it's environment variables via an Event Hook.
English
0
0
1
32
Daniel Losch
Daniel Losch@cloudsider·
@Aaronontheweb @ChetHusk @MartinDotNet Is that because the dashboard needs to ingest the data and when using that env variable with otherwise default otel .NET settings it will only export to the sink endpoint from the env variable(?) Does it also overwrite the protocol to grpc if you set http?
English
1
0
0
41
Aaron Stannard
Aaron Stannard@Aaronontheweb·
Made a very short video (<3m) on trying to get the OTEL Collector to work with .NET Aspire, because I wasted several hours trying to make this work this week.
Aaron Stannard tweet media
English
1
6
54
5.4K
Martin Thwaites
Martin Thwaites@MartinDotNet·
@Aaronontheweb @davidfowl @ChetHusk That's probably more of an issue with aspire in general so I'll leave that to david and the team. What I would say is that the method that was using is deprecated now, so that's probably a reason it shouldn't be fixed.
English
1
0
1
248
Martin Thwaites
Martin Thwaites@MartinDotNet·
@Aaronontheweb @ChetHusk I'd be interested if you could use the one from the CommunityToolkit, that one is a bit out of date (a few days) since we merged the community toolkit one. You could have also just pinged me to fix it :)
English
1
0
0
69
Aaron Stannard
Aaron Stannard@Aaronontheweb·
@ChetHusk @MartinDotNet Is there some sort of new annotation one can add to tell .NET Aspire not to hijack the resources' OTEL_EXPORTER_OTLP_ENDPOINT value?
English
3
0
0
399
Martin Thwaites
Martin Thwaites@MartinDotNet·
@RogerAlsing @dddanielreis @dotnet @davidfowl Maybe you're in that niche, in regards to the question that triggered this, I would still monitor the raw inbound and outbound event data, over generating a pre-aggregation in the app. Increase the circular buffer limit if thats a concern.
English
1
0
0
81
Martin Thwaites
Martin Thwaites@MartinDotNet·
@RogerAlsing @dddanielreis @dotnet @davidfowl For the specific "sent and received" like the original question was, I would suggest that does apply. Metrics tend to be useful in very niche scenarios, when you know what you want to query and how you want to visualise it.
English
1
0
0
79
Roger Johansson
Roger Johansson@RogerAlsing·
#dotnet #testing @dotnet in .NET, using counter metrics within integration tests, is that a thing? Let´s say I have a metric for Sent Requests and another for Received Requests. would it be unreliable to subscribe to those in a test and ensure they are equal?
English
3
0
0
957
Martin Thwaites
Martin Thwaites@MartinDotNet·
@RogerAlsing @dddanielreis @dotnet @davidfowl 10k Request per second is a non-rrivial amount, even in the IoT space. For gaming, especially in the game loop, tracing is likely not the answer. Applying this to the general case is the real problem. Most people are not gaming, IoT or hitting 10k request per second.
English
1
0
0
101
Martin Thwaites
Martin Thwaites@MartinDotNet·
@RogerAlsing @dddanielreis @dotnet @davidfowl If you're at the scale of generating 5 useful spans per request, they're not easily replaced by rollup spans, etc. Then sure, maybe start thinking about head sampling first, and if that doesn't help, maybe think about pre-aggregation inside the application.
English
1
0
0
91
Martin Thwaites
Martin Thwaites@MartinDotNet·
@RogerAlsing @dddanielreis @dotnet @davidfowl I've just checked and its been refactored into a circular buffer now with a default of 50k capacity. So yeah, if you're generating more than 50k spans per second in a single app, maybe think about head sampling, maybe, at that point, you might need some pre-aggregation.
English
1
0
0
31
Roger Johansson
Roger Johansson@RogerAlsing·
@MartinDotNet @dddanielreis @dotnet @davidfowl but if the memory limit is reached, what happens on a low level? even if fully async, any overflow would then propagate to fill the thread pool / task queue instead. either the system halts, or it grows unbounded, or it starts to drop data, there are no other alternatives
English
1
0
0
32
Martin Thwaites
Martin Thwaites@MartinDotNet·
@RogerAlsing @dddanielreis @dotnet @davidfowl From my testing (arguably a few years back know and a lot has been changed/refactored), console writing has back pressure due to the writing to stdout, with Activity is simply adding to the list and another thread pulling from it, so its slightly different.
English
1
0
0
26
Martin Thwaites
Martin Thwaites@MartinDotNet·
@RogerAlsing @dddanielreis @dotnet Its not a fixed buffer, so its only limited by memory (similar to the way that console writing is buffered). In the event of a backend failure, that buffer will have an increased size, which is the same for Meters. The idea is that you offload it to the collector not a backend
English
1
0
0
27
Martin Thwaites
Martin Thwaites@MartinDotNet·
@RogerAlsing @dddanielreis @dotnet Almost all the complaints about tracing are to do with either the inline impact of generation in general, or to do with not tail sampling and the cost/perf impact on the backend.
English
0
0
0
33
Martin Thwaites
Martin Thwaites@MartinDotNet·
@RogerAlsing @dddanielreis @dotnet That's not how the buffers work in otel FWIW. I've seen more people complaining about the memory usage of the MeterProvider in .NET and Go than they have about spans since their memory impact is short lived when offload to the collector.
English
2
0
0
53
Martin Thwaites
Martin Thwaites@MartinDotNet·
@RogerAlsing @dddanielreis @dotnet The data for metrics has to live around for the time of the aggregation. Meaning you're using allocations during that time. Depending on the overall cardinality of that metrics label that could be a lot. Spans however, are batched out every second.
English
1
0
0
29
Roger Johansson
Roger Johansson@RogerAlsing·
@MartinDotNet @dddanielreis @dotnet "metrics require more resources in your app than pushing activities." In what way? Each individual metric is not a large chunk of data, and metrics do not require 100% of each measurement to be perfectly recorded. While spans contains much more metadata per instance.
English
1
0
0
43
Martin Thwaites
Martin Thwaites@MartinDotNet·
@dddanielreis @RogerAlsing @dotnet You should work with the collector, either as a sidecar if you have to, or work with the platform team if not. Ideally though, you don’t even do, you generate the same graphs on the fly in the backend from the raw data.
English
0
0
0
44
Martin Thwaites
Martin Thwaites@MartinDotNet·
@dddanielreis @RogerAlsing @dotnet That's an interesting point, but ultimately something that is a wider problem than generating telemetry. What you're doing by generating a metric is deciding what graph you want to display and how you'll use it. Which is ultimately wrong
English
1
0
0
53