Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .changeset/tracing-with-opentelemetry.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
internal: minor
router: minor
config: minor
executor: minor
query-planner: minor
Comment on lines +2 to +6
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

According to the repository style guide (lines 116-120), when a change is done in one of the Crates, it needs to be explicitly declared in the changeset file, so it includes the impacted libs/bins as well. The graphql-tools crate is a dependency of hive-router-query-planner, hive-console-sdk, and hive-router-plan-executor. Therefore, a change in graphql-tools should also be reflected in their respective changeset entries if they are impacted. Please verify if graphql-tools should be listed here.

References
  1. When updating package versions in a changeset based on a dependency tree, ensure any related examples in the style guide are also updated to reflect the correct dependencies.

---

# Tracing with OpenTelemetry

Introducing comprehensive OpenTelemetry-based tracing to the Hive Router, providing deep visibility into the GraphQL request lifecycle and subgraph communications.

- **OpenTelemetry Integration**: Support for OTLP exporters (gRPC and HTTP) and standard propagation formats (Trace Context, Baggage, Jaeger, B3/Zipkin).
- **GraphQL-Specific Spans**: Detailed spans for every phase of the GraphQL lifecycle
- **Hive Console Tracing**: Native integration with Hive Console for trace visualization and analysis.
- **Semantic Conventions**: Support for both stable and deprecated OpenTelemetry HTTP semantic conventions to ensure compatibility with a wide range of observability tools.
- **Optimized Performance**: Tracing is designed with a "pay only for what you use" approach. Overhead is near-zero when disabled, and allocations/computations are minimized when enabled.
- **Rich Configuration**: New configuration options for telemetry exporters, batching, and resource attributes.
40 changes: 40 additions & 0 deletions .changeset/unify-hive-telemetry-config.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
config: minor
router: minor
internal: minor
---

# Unified Hive Telemetry Configuration

Refactored the configuration structure to unify Hive-specific telemetry (tracing and usage reporting) and centralize client identification.

- **Unified Hive Config**: Moved `usage_reporting` under `telemetry.hive.usage_reporting`. Usage reporting now shares the `token` and `target` configuration with Hive tracing, eliminating redundant settings.
- **Centralized Client Identification**: Introduced `telemetry.client_identification` to define client name and version headers once. These are now propagated to both OpenTelemetry spans and Hive usage reports.
- **Enhanced Expression Support**: Both Hive token and target ID now support VRL expressions for usage reporting, matching the existing behavior of tracing.

### Breaking Changes:

The top-level `usage_reporting` block has been moved.

**Before:**
```yaml
usage_reporting:
enabled: true
access_token: "..."
target_id: "..."
client_name_header: "..."
client_version_header: "..."
```

**After:**
```yaml
telemetry:
client_identification:
name_header: "..."
version_header: "..."
hive:
token: "..."
target: "..."
usage_reporting:
enabled: true
```
Loading