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

Add OpenMetrics(Prometheus) in the provider module #379

Merged
merged 16 commits into from
Jan 29, 2021

Conversation

yashrsharma44
Copy link
Collaborator

@yashrsharma44 yashrsharma44 commented Jan 14, 2021

Fixes #346

Some questions:

  • Should we integrate Prometheus in the metrics package, or provide it as another provider?

Have Prometheus as a separate provider, which follows Open Metrics convention, we need to decide what do we want to name the package though since the repo is Open Metrics compliant

  • How should we add in options for enabling the histograms for different purposes?

This PR is a WIP PR, however suggestions regarding the implementation details are welcome because most of the structure of the code is final. The interface for the reporter has been tweaked a little for enabling the Timer feature from Prometheus.

cc @bwplotka @brancz

TODO:

  • Write tests for the new provider
  • Write docs for the same

Copy link
Collaborator

@bwplotka bwplotka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Amazing work! I think it's literally what we need in the first iteration, but before full v2 let's address all pain points @brancz suggested in https://gophers.slack.com/archives/CNJL30P4P/p1610112810036200?thread_ts=1610112652.036000&cid=CNJL30P4P

You first question should be probably 2 questions to answer:

  1. Do we want Prometheus as core vs provider?

I don't think we can put it in core, because Prometheus client might be not what user will use and what if user don't want to use metric interceptor at all? Then having in core will dictate them to have Prometheus dependency in code.

(Discussed in Thanos Contributor Hours)

  1. IF we want Prometheus as a provider do we need any "metrics" interceptor in the core.

We have some similarities... like recording specific things.

There is a good rule which is YAGNI - unless there is already 3 or more specific "users" of the vendor-agnostic metric interceptor, there is no point creating one, because we don't know even if there will be any other "user" than Prometheus, and we don't know what they want.

(Discussed in Thanos Contributor Hours)

3 .Dario: Maybe open telemetry is a common thing that allows bridge.

My understanding is that the current state is that Open Telemetry does not support Open Metrics or actually anything without extra bridges (sidecars, agent), so open metrics via the most popular Prometheus client sounds like a good choice. Since it will separate module, this project will work with open telemetry just fine (: (in or out of this repo)

interceptors/metrics/client_metrics.go Outdated Show resolved Hide resolved
@yashrsharma44 yashrsharma44 force-pushed the port-prometheus branch 3 times, most recently from 0434dfb to 60b2d64 Compare January 15, 2021 06:19
@codecov-io
Copy link

codecov-io commented Jan 15, 2021

Codecov Report

Merging #379 (7b8ea9d) into v2 (a79558a) will decrease coverage by 27.83%.
The diff coverage is 37.48%.

Impacted file tree graph

@@             Coverage Diff             @@
##               v2     #379       +/-   ##
===========================================
- Coverage   83.58%   55.74%   -27.84%     
===========================================
  Files          30       37        +7     
  Lines         932     1322      +390     
===========================================
- Hits          779      737       -42     
- Misses        114      514      +400     
- Partials       39       71       +32     
Impacted Files Coverage Δ
chain.go 0.00% <ø> (-90.91%) ⬇️
interceptors/auth/auth.go 100.00% <ø> (ø)
interceptors/auth/metadata.go 100.00% <ø> (ø)
interceptors/ratelimit/ratelimit.go 50.00% <0.00%> (-50.00%) ⬇️
interceptors/tags/fieldextractor.go 13.79% <0.00%> (-71.51%) ⬇️
testing/testpb/interceptor_suite.go 0.00% <0.00%> (ø)
testing/testpb/test.manual_extractfields.pb.go 0.00% <0.00%> (ø)
testing/testpb/test.manual_validator.pb.go 0.00% <0.00%> (ø)
testing/testpb/test.pb.go 36.92% <36.92%> (ø)
interceptors/logging/payload.go 67.18% <42.30%> (-15.43%) ⬇️
... and 45 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 3ff779b...7b8ea9d. Read the comment docs.

@yashrsharma44 yashrsharma44 changed the title Add metrics as another interceptor and Prometheus as the sole provider Add Prometheus in the provider module Jan 15, 2021
Copy link
Collaborator

@bwplotka bwplotka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! Going in good direction but still a few major things:

  1. We agreed on openmetrics I think?
  2. I removed initially StartTimeCall reporter method for a reason (: We can have much simpler code if (less methods in in terface = better!). See comments below.

Thanks for helping 🤗

providers/prometheus/go.mod Outdated Show resolved Hide resolved
providers/prometheus/go.mod Outdated Show resolved Hide resolved
providers/prometheus/interceptors.go Outdated Show resolved Hide resolved
@yashrsharma44 yashrsharma44 force-pushed the port-prometheus branch 2 times, most recently from de7565b to aff09f4 Compare January 18, 2021 14:39
providers/openmetrics/client_metrics.go Outdated Show resolved Hide resolved
providers/openmetrics/interceptors.go Outdated Show resolved Hide resolved
providers/openmetrics/options.go Show resolved Hide resolved
@yashrsharma44
Copy link
Collaborator Author

I haven't tested the middleware locally, so I will have more questions when done 😛

@bwplotka
Copy link
Collaborator

Can we make it not a draft when ready for review? (:

@yashrsharma44
Copy link
Collaborator Author

I haven't added the options, so technically isn't completed, will make it ready for review once I add the options.

@yashrsharma44 yashrsharma44 marked this pull request as ready for review January 20, 2021 18:10
@yashrsharma44
Copy link
Collaborator Author

@bwplotka
I have added the options for enabling the histogram. PTAL whenever you are free 🤗

Copy link

@onprem onprem left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall LGTM, just a few comments. :)

interceptors/reporter.go Outdated Show resolved Hide resolved
interceptors/reporter.go Outdated Show resolved Hide resolved
providers/openmetrics/client_interceptor.go Outdated Show resolved Hide resolved
@yashrsharma44
Copy link
Collaborator Author

I have added the tests for open metrics. The lint makes some suggestions, let me know if I need to address them.

PTAL whenever free @johanbrandhorst @bwplotka 🎉

@yashrsharma44 yashrsharma44 changed the title Add Prometheus in the provider module Add OpenMetrics(Prometheus) in the provider module Jan 27, 2021
@yashrsharma44
Copy link
Collaborator Author

Let's leave the examples to be added in the next PR, would be nice to separate this from this PR.

interceptors/reporter.go Outdated Show resolved Hide resolved
interceptors/reporter.go Outdated Show resolved Hide resolved
interceptors/reporter.go Outdated Show resolved Hide resolved
Copy link
Collaborator

@bwplotka bwplotka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, but we need to fix module to point to newest github.com/grpc-ecosystem/go-grpc-middleware/v2 version (somehow). There many different ways, but build has to pass (:

providers/openmetrics/go.mod Outdated Show resolved Hide resolved
@bwplotka
Copy link
Collaborator

bwplotka commented Jan 28, 2021 via email

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
… reporter to utilise the timer call function of open metrics

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
…incorrect, also added some nits

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
…penmetrics

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
providers/openmetrics/client_interceptor.go Outdated Show resolved Hide resolved
providers/openmetrics/go.mod Outdated Show resolved Hide resolved
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
@yashrsharma44
Copy link
Collaborator Author

Current Update:
Thanks to @ash2k for reviewing and asking to remove the global state.
I have written the current setup which uses registry as a variable, and other functions associated with it.

DefaultClientMetrics = openmetrics.NewClientMetrics(prometheus.DefaultRegisterer)
if err := DefaultClientMetrics.EnableClientStreamSendTimeHistogram; err != nil {
   // Handle Error
}
  • All the options for enabling the histogram is connected with the client metrics instance, while for using it in the interceptor, pass the registry as a variable.
  • UnaryClientInterceptor takes in registry as a variable, because I didn't wanted to integrate the metrics object with reporter. So taking the registry as a variable.

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
…rver/client metrics object with some default metrics initialisation

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Copy link
Collaborator

@bwplotka bwplotka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Amazing, one suggestion (:

// ClientMetrics represents a collection of metrics to be registered on a
// Prometheus metrics registry for a gRPC client.
type ClientMetrics struct {
clientRegister openmetrics.Registerer
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can remove this (:

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are using clientRegister in Enable... functions. Should I modify the Enable.. functions to accept clientRegister?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmmm
need to look on this, happy to propose something on top of your PR (:

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally register is only needed on start!

Comment on lines +35 to +38
func NewClientMetrics(clientRegistry prometheus.Registerer, counterOpts ...CounterOption) *ClientMetrics {
opts := counterOptions(counterOpts)
return &ClientMetrics{
clientRegister: clientRegistry,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This pattern can be further simplified.

Suggested change
func NewClientMetrics(clientRegistry prometheus.Registerer, counterOpts ...CounterOption) *ClientMetrics {
opts := counterOptions(counterOpts)
return &ClientMetrics{
clientRegister: clientRegistry,
func NewClientMetrics(r prometheus.Registerer, counterOpts ...CounterOption) *ClientMetrics {
opts := counterOptions(counterOpts)
c := &ClientMetrics{
r.MustRegister(
c.clientStartedCounter,
....
...

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds fair 👍

@bwplotka
Copy link
Collaborator

Actually you know what. Let's merge. I think we are trying to do exactly what we wanted to avoid -> adding thousands of improvements to porting PR (: 🤗

Thanks @yashrsharma44 for your work

I will try to apply some fixes for registration on next PR if that's ok!

@bwplotka bwplotka merged commit 215af81 into grpc-ecosystem:v2 Jan 29, 2021
@ti
Copy link

ti commented Feb 4, 2021

@yashrsharma44 @bwplotka
There are two Fatal bug in This mr:

  1. Lost server context when client call server with: metadata.NewOutgoingContext(ctx, md)
  2. Metrics counter does not work

Please see add "metadata.NewOutgoingContext(" test case, you will see.

refer:

return r, context.Background()

@yashrsharma44
Copy link
Collaborator Author

yashrsharma44 commented Feb 4, 2021

@ti

Metrics counter does not work

All the prometheus metrics, or any specific one?

Lost server context when client call server with: metadata.NewOutgoingContext(ctx, md)

Thanks for reporting this, would be nice if you could propose a fix for this. I can add the fix in another PR.

yurishkuro referenced this pull request in jaegertracing/jaeger Jun 13, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[github.com/grpc-ecosystem/go-grpc-middleware](https://togithub.com/grpc-ecosystem/go-grpc-middleware)
| `v1.4.0` -> `v2.1.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgrpc-ecosystem%2fgo-grpc-middleware/v2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fgrpc-ecosystem%2fgo-grpc-middleware/v2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fgrpc-ecosystem%2fgo-grpc-middleware/v1.4.0/v2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgrpc-ecosystem%2fgo-grpc-middleware/v1.4.0/v2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>grpc-ecosystem/go-grpc-middleware
(github.com/grpc-ecosystem/go-grpc-middleware)</summary>

###
[`v2.1.0`](https://togithub.com/grpc-ecosystem/go-grpc-middleware/releases/tag/v2.1.0)

[Compare
Source](https://togithub.com/grpc-ecosystem/go-grpc-middleware/compare/v2.0.1...v2.1.0)

#### What's Changed

- Support for subsystem in grpc prometheus counter and histogram metrics
by [@&#8203;rohsaini](https://togithub.com/rohsaini) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/643](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/643)
- doc: update client interceptors chaining example with grpc functions
by [@&#8203;dethi](https://togithub.com/dethi) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/669](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/669)
- adds fields from durationFieldFunc to request/response log entries by
[@&#8203;vroldanbet](https://togithub.com/vroldanbet) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/670](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/670)
- add doc for disabling log opts by
[@&#8203;coleenquadros](https://togithub.com/coleenquadros) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/680](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/680)
- Middleware for determining the real ip of the client by
[@&#8203;MadsRC](https://togithub.com/MadsRC) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/682](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/682)
- protovalidate: add option to ignore certain message types by
[@&#8203;igor-tsiglyar](https://togithub.com/igor-tsiglyar) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/684](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/684)
- Update README.md by [@&#8203;zeroboo](https://togithub.com/zeroboo) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/688](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/688)
- Fix `InitializeMetrics` signature to allow use with `xds.GRPCServer`
by [@&#8203;bozaro](https://togithub.com/bozaro) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/689](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/689)
- Support retriable func condition by
[@&#8203;tamayika](https://togithub.com/tamayika) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/687](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/687)
- Extend realip parsing of GRPC peer address to handle IPv6 by
[@&#8203;surik](https://togithub.com/surik) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/692](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/692)
- Fix logging Example : log only first field by
[@&#8203;arckadious](https://togithub.com/arckadious) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/694](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/694)
- Extent realip interceptors with ip selection based on proxy count and
list by [@&#8203;surik](https://togithub.com/surik) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/695](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/695)
- Fix for vulnerability CVE-2023-44487 by
[@&#8203;vkaushik](https://togithub.com/vkaushik) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/696](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/696)

#### New Contributors

- [@&#8203;rohsaini](https://togithub.com/rohsaini) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/643](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/643)
- [@&#8203;dethi](https://togithub.com/dethi) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/669](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/669)
- [@&#8203;vroldanbet](https://togithub.com/vroldanbet) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/670](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/670)
- [@&#8203;MadsRC](https://togithub.com/MadsRC) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/682](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/682)
- [@&#8203;igor-tsiglyar](https://togithub.com/igor-tsiglyar) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/684](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/684)
- [@&#8203;zeroboo](https://togithub.com/zeroboo) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/688](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/688)
- [@&#8203;bozaro](https://togithub.com/bozaro) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/689](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/689)
- [@&#8203;tamayika](https://togithub.com/tamayika) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/687](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/687)
- [@&#8203;surik](https://togithub.com/surik) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/692](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/692)
- [@&#8203;arckadious](https://togithub.com/arckadious) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/694](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/694)
- [@&#8203;vkaushik](https://togithub.com/vkaushik) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/696](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/696)

**Full Changelog**:
grpc-ecosystem/go-grpc-middleware@v2.0.1...v2.1.0

###
[`v2.0.1`](https://togithub.com/grpc-ecosystem/go-grpc-middleware/releases/tag/v2.0.1)

[Compare
Source](https://togithub.com/grpc-ecosystem/go-grpc-middleware/compare/v2.0.0...v2.0.1)

#### What's Changed

- Fix outdated 'make proto' command by
[@&#8203;takp](https://togithub.com/takp) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/623](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/623)
- Fix linting errors by [@&#8203;takp](https://togithub.com/takp) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/624](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/624)
- Logging: Add missing variadic operator for fields by
[@&#8203;olivierlemasle](https://togithub.com/olivierlemasle) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/629](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/629)
- feat: Support extracting fields from CallMeta by
[@&#8203;fsaintjacques](https://togithub.com/fsaintjacques) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/628](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/628)
- Fix "make test" and "make lint" by
[@&#8203;olivierlemasle](https://togithub.com/olivierlemasle) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/627](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/627)
- Do not set timeout for stream initialization by
[@&#8203;DavyJohnes](https://togithub.com/DavyJohnes) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/645](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/645)
- Add logging option to disable fields in log entry by
[@&#8203;coleenquadros](https://togithub.com/coleenquadros) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/631](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/631)
- Update logging adapter docs by
[@&#8203;aboryslawski](https://togithub.com/aboryslawski) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/647](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/647)

#### New Contributors

- [@&#8203;takp](https://togithub.com/takp) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/623](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/623)
- [@&#8203;olivierlemasle](https://togithub.com/olivierlemasle) made
their first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/629](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/629)
- [@&#8203;fsaintjacques](https://togithub.com/fsaintjacques) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/628](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/628)
- [@&#8203;DavyJohnes](https://togithub.com/DavyJohnes) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/645](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/645)
- [@&#8203;coleenquadros](https://togithub.com/coleenquadros) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/631](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/631)
- [@&#8203;aboryslawski](https://togithub.com/aboryslawski) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/647](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/647)

**Full Changelog**:
grpc-ecosystem/go-grpc-middleware@v2.0.0...v2.0.1

###
[`v2.0.0`](https://togithub.com/grpc-ecosystem/go-grpc-middleware/releases/tag/v2.0.0)

[Compare
Source](https://togithub.com/grpc-ecosystem/go-grpc-middleware/compare/v1.4.0...v2.0.0)

This is the first stable release of the new v2 release branch 🎉

Many of the interceptors have been rewritten from scratch and the
project has been upgraded to use the Go Protobuf v2 API.

See the project README for details and migration guide. Thanks to all
contributors who made this possible! 💪🏽

#### What's Changed

- Initial change for v2. by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/276](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/276)
- Updated README with note that it's under development. by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/278](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/278)
- Fix typo in field extractor (splices -> slices)
([#&#8203;287](https://togithub.com/grpc-ecosystem/go-grpc-middleware/issues/287))
by [@&#8203;bvwells](https://togithub.com/bvwells) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/289](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/289)
- Moved imports to v2; Moved to Go 1.14.2 by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/290](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/290)
- Formatted code; Added goimports to Makefile, Renamed pb_testproto to
testpb. by [@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/291](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/291)
- Fixed providers go modules, examples and consistency. by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/292](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/292)
- added example for AuthFuncOverride v2 branch by
[@&#8203;tegk](https://togithub.com/tegk) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/294](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/294)
- Added some description of the Makefile in the contributing.md by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/298](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/298)
- v2: Add support for the zerolog logging provider by
[@&#8203;irridia](https://togithub.com/irridia) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/299](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/299)
- proto: fix gogoproto import by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/302](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/302)
- Retry dial and connection errors for grpc stream. by
[@&#8203;kartlee](https://togithub.com/kartlee) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/308](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/308)
- Moved to GH actions; Added lint; Added issue/PR templates. by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/296](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/296)
- inline localhost certificate into go file by
[@&#8203;bmon](https://togithub.com/bmon) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/318](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/318)
- Update streaming interceptor example by
[@&#8203;G07cha](https://togithub.com/G07cha) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/322](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/322)
- Do not stop retrying based on earlier good message from the stream by
[@&#8203;kartlee](https://togithub.com/kartlee) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/323](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/323)
- test certs - cherry-pick PR325 on v2 by
[@&#8203;dmitris](https://togithub.com/dmitris) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/331](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/331)
- add all make target, reword instructions by
[@&#8203;dmitris](https://togithub.com/dmitris) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/335](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/335)
- remove 1.12.x from build config for consistency with master by
[@&#8203;dmitris](https://togithub.com/dmitris) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/337](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/337)
- \[v2] Fix the special case for jaeger format traceid extraction by
[@&#8203;nvx](https://togithub.com/nvx) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/340](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/340)
- \[v2] Fix ctxtags TagBasedRequestFieldExtractor extracting from fields
in a oneof by [@&#8203;nvx](https://togithub.com/nvx) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/339](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/339)
- Request Logging by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/311](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/311)
- Bug fix for data race by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/354](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/354)
- make ratelimit interface context aware by
[@&#8203;xinxiao](https://togithub.com/xinxiao) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/367](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/367)
- Add error param to the decider method of logging middleware by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/372](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/372)
- \[v2] Add skip interceptor by
[@&#8203;XSAM](https://togithub.com/XSAM) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/364](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/364)
- Chain middleware by
[@&#8203;drewwells](https://togithub.com/drewwells) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/385](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/385)
- Update travis ci badget to Github actions badge. by
[@&#8203;drewwells](https://togithub.com/drewwells) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/384](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/384)
- Upgraded proto related deps: grpc and protobuf; removed gogo from
core. by [@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/321](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/321)
- improve v2 rate-limiter by
[@&#8203;MalloZup](https://togithub.com/MalloZup) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/380](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/380)
- Moved to buf; Added buf lint; Fixed ping service to match standards; …
by [@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/383](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/383)
- Add timer interface for OpenMetrics(Prometheus) Provider by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/387](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/387)
- \[Rate-limit provider]: Add token bucket implementation of
rate-limiter by [@&#8203;MalloZup](https://togithub.com/MalloZup) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/386](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/386)
- Add OpenMetrics(Prometheus) in the provider module by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/379](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/379)
- v2: Client unary interceptor timeout on v2 branch by
[@&#8203;instabledesign](https://togithub.com/instabledesign) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/330](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/330)
- add onRetryCallback callback function by
[@&#8203;shamil](https://togithub.com/shamil) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/405](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/405)
- v2: validator support for protoc-gen-validate 0.6.0 by
[@&#8203;danielhochman](https://togithub.com/danielhochman) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/418](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/418)
- v2: Refactor metrics interceptor and fix tests by
[@&#8203;ash2k](https://togithub.com/ash2k) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/413](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/413)
- Support customization of timestamp format (v2 branch) by
[@&#8203;stanhu](https://togithub.com/stanhu) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/399](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/399)
- Fixed misleading comments in the interceptor file by
[@&#8203;iamrajiv](https://togithub.com/iamrajiv) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/424](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/424)
- v2: Switch from github.com/go-kit/kit to github.com/go-kit/log
interfaces by [@&#8203;liggitt](https://togithub.com/liggitt) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/427](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/427)
- v2: Add support for the phuslog logging provider by
[@&#8203;ogimenezb](https://togithub.com/ogimenezb) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/425](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/425)
- v2:providers/zap: fix caller annotation by
[@&#8203;jkawamoto](https://togithub.com/jkawamoto) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/432](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/432)
- Added Dependabot by [@&#8203;iamrajiv](https://togithub.com/iamrajiv)
in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/376](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/376)
- Added a Copyright check in the Makefile by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/420](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/420)
- Cleanup v2 with some updates by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/419](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/419)
- openmetrics: forward server context by
[@&#8203;amenzhinsky](https://togithub.com/amenzhinsky) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/434](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/434)
- recovery: change the default behavior by
[@&#8203;amenzhinsky](https://togithub.com/amenzhinsky) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/439](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/439)
- Add all-validator support by
[@&#8203;leventeliu](https://togithub.com/leventeliu) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/443](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/443)
- Remove backoffutils and added the files to retry package by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/390](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/390)
- v2:interceptors/logging: allow to separate request response payload
logging by [@&#8203;michaljemala](https://togithub.com/michaljemala) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/442](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/442)
- Removed tags; Simplified interceptor code; Added logging fields
editability. by [@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/394](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/394)
- InterceptorTestSuite client connection optimize by
[@&#8203;HUSTtoKTH](https://togithub.com/HUSTtoKTH) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/455](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/455)
- Remove opentracing from go.mod by
[@&#8203;jpkrohling](https://togithub.com/jpkrohling) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/477](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/477)
- Replace two old Go versions with two new ones by
[@&#8203;jpkrohling](https://togithub.com/jpkrohling) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/478](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/478)
- Move util/metautils to root-level package metadata, fixes
[#&#8203;392](https://togithub.com/grpc-ecosystem/go-grpc-middleware/issues/392)
by [@&#8203;rahulkhairwar](https://togithub.com/rahulkhairwar) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/474](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/474)
- Remove data race from zerolog provider by
[@&#8203;ecordell](https://togithub.com/ecordell) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/487](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/487)
- Update provider/kit by
[@&#8203;metalmatze](https://togithub.com/metalmatze) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/490](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/490)
- Refactor tracing interceptor by
[@&#8203;XSAM](https://togithub.com/XSAM) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/450](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/450)
- Add opentracing provider by [@&#8203;XSAM](https://togithub.com/XSAM)
in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/492](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/492)
- update phuslog to fix typo by
[@&#8203;ogimenezb](https://togithub.com/ogimenezb) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/499](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/499)
- Added logr as logging Library provider by
[@&#8203;mcdoker18](https://togithub.com/mcdoker18) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/510](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/510)
- ✨ new feat: selector middleware by
[@&#8203;aimuz](https://togithub.com/aimuz) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/511](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/511)
- Add 1.18.x and 1.19.x unit tests by
[@&#8203;aimuz](https://togithub.com/aimuz) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/513](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/513)
- change the doc.go to the latest format by
[@&#8203;aimuz](https://togithub.com/aimuz) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/512](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/512)
- fix provider examples by
[@&#8203;forsaken628](https://togithub.com/forsaken628) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/529](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/529)
- docs: add `logging.InjectFields` usage description by
[@&#8203;aimuz](https://togithub.com/aimuz) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/541](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/541)
- Bump golang.org/x/net from 0.0.0-20201021035429-f5854403a974 to 0.7.0
by [@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/537](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/537)
- v2: All for v2: Exemplars, Cleanup, Docs, Lint, Proto upgrades and
more by [@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/543](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/543)
- \[interceptors/validator] feat: add error logging in validator by
[@&#8203;rohanraj7316](https://togithub.com/rohanraj7316) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/544](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/544)
- fix auto-generated docs by
[@&#8203;peczenyj](https://togithub.com/peczenyj) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/548](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/548)
- fix vulnerability GO-2022-0603 by
[@&#8203;peczenyj](https://togithub.com/peczenyj) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/549](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/549)
- add support to trace on grpc_logrus.DefaultMessageProducer by
[@&#8203;peczenyj](https://togithub.com/peczenyj) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/547](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/547)
- Simplified logging middleware; Fields are now "any" type; Moved
logging providers to examples only. by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/552](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/552)
- Removed deciders; Cleaned up validators. by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/554](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/554)
- Adjustments to README and consistency of callback options. by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/555](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/555)
- Merge v2 into main (with -X theirs) by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/556](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/556)
- Bump golang.org/x/net from 0.5.0 to 0.7.0 in /providers/prometheus by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/561](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/561)
- Fix overwritten logger in zerolog example by
[@&#8203;longshine](https://togithub.com/longshine) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/574](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/574)
- Changed for for mapping fields, different var for logger in zap
example by [@&#8203;MichalFikejs](https://togithub.com/MichalFikejs) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/581](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/581)
- cleanup: no cap definition required by
[@&#8203;aimuz](https://togithub.com/aimuz) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/582](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/582)
- providers/prometheus: Add WithHistogramOpts for native histograms by
[@&#8203;metalmatze](https://togithub.com/metalmatze) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/584](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/584)
- fix: Refactor logger initialization in example_test.go by
[@&#8203;aimuz](https://togithub.com/aimuz) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/580](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/580)
- Minor code cleanups by [@&#8203;ash2k](https://togithub.com/ash2k) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/586](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/586)
- fix prometheus interceptors not converting context errors to gRPC
codes by [@&#8203;vtermanis](https://togithub.com/vtermanis) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/571](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/571)
- Update README.md by [@&#8203;bwplotka](https://togithub.com/bwplotka)
in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/600](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/600)
- Update PULL_REQUEST_TEMPLATE.md by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/601](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/601)
- Add Client rate limit interceptors 520 by
[@&#8203;rahulkhairwar](https://togithub.com/rahulkhairwar) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/599](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/599)
- Use default go errors package instead of github.com/pkg/errors by
[@&#8203;rifkyazizf](https://togithub.com/rifkyazizf) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/608](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/608)
- fix bug : should drain channel of timer after stop by
[@&#8203;ikenchina](https://togithub.com/ikenchina) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/612](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/612)
- feat: add interceptor for bufbuild/protovalidate by
[@&#8203;gvencadze](https://togithub.com/gvencadze) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/614](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/614)
- Enhancement: Introduce Option Interface for Future Interceptor
Customization by
[@&#8203;elliotmjackson](https://togithub.com/elliotmjackson) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/615](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/615)

#### New Contributors

- [@&#8203;irridia](https://togithub.com/irridia) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/299](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/299)
- [@&#8203;xinxiao](https://togithub.com/xinxiao) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/367](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/367)
- [@&#8203;XSAM](https://togithub.com/XSAM) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/364](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/364)
- [@&#8203;MalloZup](https://togithub.com/MalloZup) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/380](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/380)
- [@&#8203;instabledesign](https://togithub.com/instabledesign) made
their first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/330](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/330)
- [@&#8203;shamil](https://togithub.com/shamil) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/405](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/405)
- [@&#8203;ash2k](https://togithub.com/ash2k) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/413](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/413)
- [@&#8203;ogimenezb](https://togithub.com/ogimenezb) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/425](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/425)
- [@&#8203;amenzhinsky](https://togithub.com/amenzhinsky) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/434](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/434)
- [@&#8203;leventeliu](https://togithub.com/leventeliu) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/443](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/443)
- [@&#8203;michaljemala](https://togithub.com/michaljemala) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/442](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/442)
- [@&#8203;HUSTtoKTH](https://togithub.com/HUSTtoKTH) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/455](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/455)
- [@&#8203;jpkrohling](https://togithub.com/jpkrohling) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/477](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/477)
- [@&#8203;rahulkhairwar](https://togithub.com/rahulkhairwar) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/474](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/474)
- [@&#8203;ecordell](https://togithub.com/ecordell) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/487](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/487)
- [@&#8203;metalmatze](https://togithub.com/metalmatze) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/490](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/490)
- [@&#8203;mcdoker18](https://togithub.com/mcdoker18) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/510](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/510)
- [@&#8203;aimuz](https://togithub.com/aimuz) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/511](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/511)
- [@&#8203;forsaken628](https://togithub.com/forsaken628) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/529](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/529)
- [@&#8203;dependabot](https://togithub.com/dependabot) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/537](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/537)
- [@&#8203;rohanraj7316](https://togithub.com/rohanraj7316) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/544](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/544)
- [@&#8203;peczenyj](https://togithub.com/peczenyj) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/548](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/548)
- [@&#8203;longshine](https://togithub.com/longshine) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/574](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/574)
- [@&#8203;MichalFikejs](https://togithub.com/MichalFikejs) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/581](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/581)
- [@&#8203;vtermanis](https://togithub.com/vtermanis) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/571](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/571)
- [@&#8203;rifkyazizf](https://togithub.com/rifkyazizf) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/608](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/608)
- [@&#8203;ikenchina](https://togithub.com/ikenchina) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/612](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/612)
- [@&#8203;gvencadze](https://togithub.com/gvencadze) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/614](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/614)
- [@&#8203;elliotmjackson](https://togithub.com/elliotmjackson) made
their first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/615](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/615)

**Full Changelog**:
grpc-ecosystem/go-grpc-middleware@v1.4.0...v2.0.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/jaegertracing/jaeger).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zOTMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjM5My4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->

---------

Signed-off-by: Mend Renovate <bot@renovateapp.com>
Signed-off-by: Yuri Shkuro <github@ysh.us>
Co-authored-by: Yuri Shkuro <yurishkuro@users.noreply.github.com>
Co-authored-by: Yuri Shkuro <github@ysh.us>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants