-
Notifications
You must be signed in to change notification settings - Fork 405
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
ETW exporter #326
Comments
|
Hi @maxgolov I would love to take on this project at Community Bridge. I am comfortable in C, C++ and Java and have contributed to various FOSS. Can you suggest me some material I should go through to get a better insight? |
|
@shivam-51 - sounds good. Let's sync-up on Gitter: https://gitter.im/maxgolov There's some initial read / implementation you can take a look here: This depends presently on a proprietary header. But there's a minor mod we can make to utilize MsgPack serialization instead of Would you be able to join our weekly community meetings on Mondays? |
|
Hi, @maxgolov . Thanks for the initial read material.
Yes, I will be able to join all the weekly community meetings. My time zone is +5:30 |
|
@shivam-51 - these are the additional materials:
Above approach - |
|
@shivam-51 @mishal23 @theadityasam - I'm gonna send a PR with two parts draft implementation:
Subsequently we need to figure out the API and protocol details:
Don't worry about your Community Bridge applications. We are sorting it out this week. |
|
Hi @maxgolov i love to work in this project at community bridge, i am comfortable with C ,C++ and C# |
|
Hello @maxgolov I got your well-written email. I applied for the Open Telemetry PHP project, but I will be following up on this one too for the fun of trying out my c++ skills. |
|
Hi @maxgolov i would like to contribute in this project, as i have experience in C/C++ programming and web development. |
|
This is the draft implementation that should be sufficient to get started with the project. The goal is to shape it into ETW exporter that follows common principles of other OpenTelemetry C++ SDK exporters. I did the initial very crude draft implementation that you should be able to compile right now: It's in this directory: You can open it and Visual Studio and compile. Directory above contains Visual Studio solution. What the code is doing:
|
|
Hey @maxgolov I would love to be a part of this project. I have prior experience in C , C++ and Web development. Can you please share some more insights on how to proceed with this project? |
This PR adds: - ETW tarcer headers - initial Unit tests
This PR adds: - ETW tracer headers - Unit tests
This PR adds: - ETW tracer headers - Unit tests
The initial files with the dummy classes added for ETW Exporter as per the specification. Updated the code to use span links which was recently introduced in the repository. Added StartSpan method and export function with tracerprovider.
The initial files with the dummy classes added for ETW Exporter as per the specification. Updated the code to use span links which was recently introduced in the repository. Added StartSpan method and export function with tracerprovider.
The initial files with the dummy classes added for ETW Exporter as per the specification. Updated the code to use span links which was recently introduced in the repository. Added StartSpan method and export function with tracerprovider.
The initial files with the dummy classes added for ETW Exporter as per the specification. Updated the code to use span links which was recently introduced in the repository. Added StartSpan method and export function with tracerprovider.
The initial files with the dummy classes added for ETW Exporter as per the specification. Updated the code to use span links which was recently introduced in the repository. Added StartSpan method and export function with tracerprovider.
The initial files with the dummy classes added for ETW Exporter as per the specification. Updated the code to use span links which was recently introduced in the repository. Added StartSpan method and export function with tracerprovider.
The initial files with the dummy classes added for ETW Exporter as per the specification. Updated the code to use span links which was recently introduced in the repository. Added StartSpan method and export function with tracerprovider.
The initial files with the dummy classes added for ETW Exporter as per the specification. Updated the code to use span links which was recently introduced in the repository. Added StartSpan method and export function with tracerprovider.
The initial files with the dummy classes added for ETW Exporter as per the specification. Updated the code to use span links which was recently introduced in the repository. Added StartSpan method and export function with tracerprovider.
The initial files with the dummy classes added for ETW Exporter as per the specification. Updated the code to use span links which was recently introduced in the repository. Added StartSpan method and export function with tracerprovider.
The initial files with the dummy classes added for ETW Exporter as per the specification. Updated the code to use span links which was recently introduced in the repository. Added StartSpan method and export function with tracerprovider.
The initial files with the dummy classes added for ETW Exporter as per the specification. Updated the code to use span links which was recently introduced in the repository. Added StartSpan method and export function with tracerprovider.
The initial files with the dummy classes added for ETW Exporter as per the specification. Updated the code to use span links which was recently introduced in the repository. Added StartSpan method and export function with tracerprovider.
The initial files with the dummy classes added for ETW Exporter as per the specification. Updated the code to use span links which was recently introduced in the repository. Added StartSpan method and export function with tracerprovider.
|
Partially implemented in #376. Working to address comments from review in a separate PR. |
This project is created in response to Community Bridge Q3-Q4. We are looking for interns to work on this project.
open-telemetry/community#468
Project
Add exporter for ETW (Event Tracing for Windows) as one of the optional recommended exporters that languages may decide to implement as part of SDK.
Logical Reasoning
Application logs, service logs, even Docker-on-Windows logs can be directed to ETW (ref. https://docs.docker.com/config/containers/logging/etwlogs/ ). Many products running on Windows (most Microsoft products, Intel products, Docker, etc.) - rely on ETW channel.
Adding support for ETW for Windows platforms in SDK would allow any cross-platform codebase to be instrumented with OpenTelemetry instead of using Win32 API directly, e.g. replacing Docker etwlogs driver with structured ETW traces emitted using OpenTelemetry C++ SDK. Final product demo could be the Docker using OpenTelemetry C++ SDK for traces, and Docker on Windows - using OpenTelemetry C++ SDK with ETW exporter.
Extra bonus points
Two 'extra' pieces that may be covered in addition to the main exporter piece:
writing a projection layer for other languages (e.g. Java or node on Windows), that allows to dispatch traces from OT Java to OT C++ SDK with ETW exporter. That flow would allow Java and node services / servers running on Windows hosts to route their telemetry to ETW listener agent.
separate effort that implements ETW Provider listener (Agent), that subsequently uses OpenTelemetry .NET SDK to dispatch all telemetry collected to OTLP exporter (or any other exporter supported by .NET SDK). Very nice and simple example how to implement such a listener: https://github.com/fireeye/SilkETW
Two alternate implementations of the ETW message packing
First approach is to utilize MsgPack-encoded event payload. This approach allows to send structured objects / nested objects over ETW to the Agent. This approach has no external dependencies, but is incompatible with some existing ETW tracing tools. Work on this track can be started right away.
Second approach is to use standard ETW "dynamic manifest" events. This approach allows to express an event as key-value property bag, flat list. I am working with MSFT CELA to contribute Microsoft TraceLoggingDynamic C++ implementation in OSS. Main benefit of this approach is it will be compatible with already existing ETW tracing tools (such as Windows Performance Analyzer, xperf, etc.). ETA for OSS is by the end of this year.
The text was updated successfully, but these errors were encountered: