Comments (5)
Yea. I think with native histograms it would be easier decision. Wonder if it makes sense to be early adopter of native histograms here for this reason cc @beorn7
Otherwise we could add opt-in grpc_code, that's also fine.
from go-grpc-middleware.
Related to grpc-ecosystem/go-grpc-prometheus#75, but reviving since that repository is now deprecated.
from go-grpc-middleware.
Sounds like the consensus in the other thread is that adding grpc_code
would be too much, but that having a success/failure signal would be nice. I don't know enough about the prometheus library to say if this is possible, perhaps @bwplotka can weigh in on here too.
from go-grpc-middleware.
Sounds like the consensus in the other thread is that adding
grpc_code
would be too much, but that having a success/failure signal would be nice. I don't know enough about the prometheus library to say if this is possible, perhaps @bwplotka can weigh in on here too.
@johanbrandhorst I'm not sure I agree with that conclusion. I wouldn't say any consensus was yet achieved. There are still community members requesting it and the "consensus" was merely the response of the maintainers. But, in any case, why is it not possible to allow the client to choose whether to include it or not? For me the increase in cardinality is well worth the value I get from it. I should be able to enable this label if I want and understand that there is a tradeoff. For example, I should be able to
var serverMetrics *grpc_prometheus.ServerMetrics
serverMetrics.EnableHandlingTimeHistogram(
...,
WithStatusCodeLabel(),
)
If the WithStatusCodeLabel
option is provided to the handling time histogram, then that label should be emitted and a value provided for it in each observation. The default can be to omit the grpc_code
label, which maintains equivalent behavior with what is standard today, but if you want that label and are willing to increase cardinality, then that should be the developer's choice.
This work ☝️ can be in addition to switching to a native histogram so as to further reduce the impact/burden if you want to enable the grpc_code
label.
If I submit a PR, will you guys consider merging it? If so, I'd be happy to submit one this week.
from go-grpc-middleware.
It would be great to offer native histogram support, but I would recommend to also support classic histograms in parallel so that scraper that aren't ready for native histograms yet will still get a classic histogram.
from go-grpc-middleware.
Related Issues (20)
- With HOT 1
- Logging interceptor does not correctly log client calls sent from a server HOT 4
- Support for connect go HOT 5
- "make test" and "make lint" ignore failures
- Support for WithSubsystem() HOT 5
- [retry-middleware] Stream is finished when retry timeout ends HOT 2
- Support loggging grpc status details HOT 1
- Add source and target endpoint as label for all client/server grpc metrics HOT 2
- Support ignore logging for v2(already attached PR) HOT 3
- Prometheus metrics label value inconsistency between Go and Java HOT 3
- [logging] disable option does not work with request/response fields HOT 6
- go-grpc-middleware/providers/openmetrics/v2 v2.0.0-rc.3 dependency of go-grpc-middleware/v2 v2.0.1 broken HOT 8
- Q: Logger migration HOT 2
- Support extensibility of retry condition
- [feat]: logging should loging grpc request msg HOT 1
- Example will log only first field HOT 3
- Add Capability to Override Base Timeout for Specific API HOT 1
- Use retry hooks for adding retry metrics
- logging.InjectFields does not work. HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from go-grpc-middleware.