enhancement(api)!: replace custom Health RPC with standard gRPC health service#25139
Merged
enhancement(api)!: replace custom Health RPC with standard gRPC health service#25139
Conversation
domalessi
approved these changes
Apr 7, 2026
…h service Replace the custom `ObservabilityService/Health` RPC with the standard `grpc.health.v1.Health` service on the observability API (port 8686). This enables native Kubernetes gRPC health probes, `grpc-health-probe`, and other standard tooling to work out of the box. The empty service name (`""`) is used for whole-server health, matching what Kubernetes probes and `grpc-health-probe` query by default. Key changes: - Remove Health RPC, HealthRequest, HealthResponse from the proto - Add tonic_health standard health service to the gRPC server - Switch vector-api-client to use tonic_health HealthClient; the client checks ServingStatus and returns NotServing error if not SERVING - Flip health to NOT_SERVING in TopologyController::stop before draining the topology, so Kubernetes removes the pod from endpoints early - Update docs, changelog, and add integration test Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
127c9af to
69d3136
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8ecc652850
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
pront
commented
Apr 9, 2026
Member
Author
There was a problem hiding this comment.
This is a release blocker, please review when you are back (cc @thomasqueirozb)
thomasqueirozb
approved these changes
Apr 13, 2026
Contributor
thomasqueirozb
left a comment
There was a problem hiding this comment.
Very nice improvement!
Co-authored-by: Thomas <thomas.schneider@datadoghq.com>
Member
Author
|
Note: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Replace the custom (unreleased)
ObservabilityService/HealthRPC on the observability API (port 8686) with the standardgrpc.health.v1.Healthservice. This enables native Kubernetes gRPC health probes,grpc-health-probe, and other standard gRPC health-checking tooling to work out of the box.tonic_healthstandard health service to the gRPC server with reflection supportrunning: Arc<AtomicBool>parameter from the service and serverThis change is required for vectordotdev/helm-charts#540,
which adds default gRPC readiness probes on port 8686. Kubernetes native gRPC probes call the standard
grpc.health.v1.Health/CheckRPC with an empty service name, whichtonic_healthhandles by default.Vector configuration
No configuration changes required. The standard health service is automatically available on the
existing API address (default
0.0.0.0:8686).How did you test this PR?
cargo check --features api,api-clientpassestonic_health::server::health_reporter()responds to empty service name checks withSERVINGby default (same pattern already used and tested in the vector source)minikubelocal setupNote: it's safe to ignore the failing proto check here since the affected proto file is not released yet.
Change Type
Is this a breaking change?
Does this PR include user facing changes?
no-changeloglabel to this PR.References