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

Verify compliant metric SDK specification implementation: MetricExporter/Pull Metric Exporter #3667

Closed
2 tasks done
Tracked by #3674
MrAlias opened this issue Feb 3, 2023 · 3 comments
Closed
2 tasks done
Tracked by #3674
Assignees
Labels
area:metrics Part of OpenTelemetry Metrics pkg:SDK Related to an SDK package

Comments

@MrAlias
Copy link
Contributor

MrAlias commented Feb 3, 2023

  • Identify all the normative requirements, recommendations, and options the specification defines as comments to this issue
  • Ensure the current metric SDK implementation is compliant with these normative requirements, recommendations, and options in those comments.
@MrAlias MrAlias added pkg:SDK Related to an SDK package area:metrics Part of OpenTelemetry Metrics labels Feb 3, 2023
@MadVikingGod
Copy link
Contributor

Requirements from reading the Pull Metric Exporter Section of the spec.

  • Implementors MAY choose the best idiomatic design for their language.

    • (Interpretation) Good Luck Y'all.
  • If the pull exporter is modeled as MetricReader, implementors MAY name the MetricExporter interface as PushMetricExporter to prevent naming confusion.

    • (Interpretation) We can call the Metric Exporter interface described in the Push Metric Exporter section as PushMetricExporter.

@MadVikingGod
Copy link
Contributor

There isn't a Pull Metric Exporter defined in anyways in the Go SDK. This interface between the ManualReader and the export format is left to the implementors of the Exporter to define and use.

The way the prometheus Exporter achieves this is by embedding a ManualReader in the Exporter type so that it can be registered in the SDK. This embedded Reader.Collect() is used when prometheus starts gathering data points, and does the conversion to the prometheus format internal to the Exporter. This interface would be different for a different kind of exporter but could use a similar pattern.

@MadVikingGod MadVikingGod self-assigned this Jul 21, 2023
@MrAlias
Copy link
Contributor Author

MrAlias commented Aug 3, 2023

Looks good to me 👍

@MrAlias MrAlias closed this as completed Aug 3, 2023
@MrAlias MrAlias added this to the v1.17.0/v0.40.0 milestone Aug 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:metrics Part of OpenTelemetry Metrics pkg:SDK Related to an SDK package
Projects
No open projects
Development

No branches or pull requests

2 participants