census-instrumentation / opencensus-specs

Apache License 2.0
188 stars 50 forks source link

Exported type/kind conversion for different aggregates #148

Open fabxc opened 6 years ago

fabxc commented 6 years ago

I first ran into this via the Prometheus exporter in Go but I think it affects more libraries after browsing through different exporters and languages.

I have a sum aggregation, which is strictly increasing. I cannot use a count aggregation because it's in a tight loop and would eat lots of CPU.

I understand that a negative observation can make the sum go up and down. So making it a gauge type would make sense. But the Prometheus exporter converts the sum aggregation to Prometheus's "untyped" type in Go and Java alike instead.

Digging further, the Stackdriver exporter in Java seems to return an unrecognized kind as well. The Go Stackdriver exporter though creates all metrics as cumulatives regardless of their aggregation, which seems incorrect.

@jkohen

jkohen commented 6 years ago

@bogdandrutu serendipity! Exactly what we were discussing about treating counters explicitly as monotonic event counters.

fabxc commented 6 years ago

It seems that the census-ecosystem Stackdriver exporter for Go fixes one issue described above. What is the relationship between the exporters in this Github org and the implementations directly in the client libraries?

basvanbeek commented 6 years ago

The implementation directly in the go client library will be deprecated in the future, see: https://github.com/census-instrumentation/opencensus-go/pull/790