opentelemetry-specification icon indicating copy to clipboard operation
opentelemetry-specification copied to clipboard

Recording externally sampled metrics without resampling

Open hcsch opened this issue 2 years ago • 0 comments

What are you trying to achieve?

I would like to be able to record externally sampled and timestamped metrics that my program decodes from some non-standard protocol that I have no influence over without resampling them. That is I would like to avoid keeping a local state cache for each metric and observing that asynchronously, as opposed to just recording the metrics I already have as-is. Both to avoid the issues with resampling, but also to avoid having to register and unregister metrics as they become available or unavailable.

Is there a way to accomplish this at the time if a given backend supports it (e.g. InfluxDB, Victoria Metrics, etc.)? If not, is this in scope for the opentelemetry project or is this something where I will just have to have separate codepaths for these externally sampled metrics, pushing them via e.g. the InfluxDB line protocol directly?

Additional context.

I have some other asynchronously observed metrics in my program and it would just be very nice to be able to serve these use cases using just opentelemetry, but I can understand if this is too different a use case from the usual asynchronous sampling / scraping based metrics pipeline that opentelemetry seems built for to me. Not all externally sampled metrics are always available in my use case, sometimes none are available, sometimes only a subset is available. I always want to record all that are available, and all that aren't should have no further datapoints recorded until they become available again, so there is a clear gap in the data and the plots in e.g. a Grafana dashboard based on that data.

hcsch avatar Jul 31 '23 22:07 hcsch