Skip to content
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

Define + implement initial metric to collect #10946

Open
Tracked by #10560
JanKrivanek opened this issue Nov 7, 2024 · 4 comments
Open
Tracked by #10560

Define + implement initial metric to collect #10946

JanKrivanek opened this issue Nov 7, 2024 · 4 comments
Assignees
Labels
Cost:S Work that requires one engineer up to 1 week Priority:1 Work that is critical for the release, but we could probably ship without

Comments

@JanKrivanek
Copy link
Member

JanKrivanek commented Nov 7, 2024

Motivation

For our initial investigation of exposing and collecting data in VS we need some meaningfull data, that are available in the main node, not expensive not complicate to obtain and not of a high volume or size.

Proposal

  • build request duration
  • maybe type? - full/incremental
  • some flags around SAC/CI/AVs

Goal

Metrics defined and exposed in MSBuild

@JanKrivanek JanKrivanek added Priority:1 Work that is critical for the release, but we could probably ship without Cost:S Work that requires one engineer up to 1 week labels Nov 7, 2024
@JanKrivanek JanKrivanek self-assigned this Nov 7, 2024
@JanKrivanek JanKrivanek changed the title Define + implement initial metric to collect (proposal: build request duration (maybe type? - full/incremental) + some flags around SAC/CI/AVs) - expose it already via OTel (JanK) Define + implement initial metric to collect Nov 7, 2024
@KalleOlaviNiemitalo
Copy link

Is this intended only for sending telemetry to Microsoft, or would another company be able to set up its own OpenTelemetry collector and configure MSBuild to send the telemetry there?

@JanKrivanek
Copy link
Member Author

Current thinking is to instrument with pure OTel and sensibly initialize our collector, without preventing other collector.

We need to experiment to see downs/ups. We might possibly end up with internal proprietary data collection within msbuild (would distributed tracing prove as perf hit as compared to our current telemetry BuildEventArgs and logger), translated to OTel metrics in the main node. So still collectable by 3rd pties, but possibly some context data might not have exact fidelity.

@KalleOlaviNiemitalo
Copy link

When MSBuild replays a binlog, will it publish the original timestamps and durations as telemetry, or generate new ones from the system clock?

@JanKrivanek
Copy link
Member Author

When MSBuild replays a binlog, will it publish the original timestamps and durations as telemetry, or generate new ones from the system clock?

This is a great question - though this is currently not a core scenario that we'd need to figure now.
Synthetizing might be nice, but can skew data when not deduplicated in backend. We might possibly skip emiting alltogether.

Btw. the TelemetryEventArgs are not part of the binlog (nor are they raised via IEventSource.AnyEvent) - they only go to the dedicated handler (and only during live run).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Cost:S Work that requires one engineer up to 1 week Priority:1 Work that is critical for the release, but we could probably ship without
Projects
None yet
Development

No branches or pull requests

2 participants