8000 feat(WIP): add opentelemetry by robinbraemer · Pull Request #439 · minekube/gate · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

feat(WIP): add opentelemetry #439

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

Merged
merged 108 commits into from
May 16, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
b02ae13
feat(WIP): add otel
robinbraemer Nov 27, 2024
93de658
add docs and improve env config
robinbraemer Nov 27, 2024
ddec2e1
fix(docs): links
robinbraemer Dec 12, 2024
1dceb74
fix(deps): update module github.com/robinbraemer/event to v0.1.1 (#440)
renovate[bot] Nov 27, 2024
4d5035b
fix(deps): update grpc-java monorepo to v1.68.2 (#441)
renovate[bot] Nov 28, 2024
479368e
fix(deps): update dependency com.google.protobuf:protobuf-java to v4.…
renovate[bot] Nov 28, 2024
5973a0a
fix(deps): update dependency com.google.protobuf:protobuf-java to v4.…
renovate[bot] Nov 29, 2024
089d8ee
fix(deps): update dependency io.grpc:grpc-netty-shaded to v1.68.2 (#444)
renovate[bot] Nov 29, 2024
a4c4fc1
fix(deps): update dependency build.buf.gen:minekube_gate_grpc_java to…
renovate[bot] Dec 2, 2024
fde9532
fix(deps): update dependency build.buf.gen:minekube_gate_protocolbuff…
renovate[bot] Dec 3, 2024
ead8127
chore(deps): update dependency go to v1.23.4 (#449)
renovate[bot] Dec 4, 2024
40f3ebe
chore(deps): update golang docker tag to v1.23.4 (#450)
renovate[bot] Dec 4, 2024
27994a8
fix(deps): update module golang.org/x/sync to v0.10.0 (#451)
renovate[bot] Dec 4, 2024
bec56b3
fix(deps): update module golang.org/x/text to v0.21.0 (#452)
renovate[bot] Dec 4, 2024
c82644e
fix(deps): update module google.g 8000 olang.org/grpc to v1.68.1 (#453)
renovate[bot] Dec 4, 2024
aee0cb1
fix(deps): update dependency com.google.protobuf:protobuf-java to v4.…
renovate[bot] Dec 5, 2024
3285b8a
fix(deps): update dependency com.google.protobuf:protobuf-java to v4.…
renovate[bot] Dec 5, 2024
dfa0fb1
fix(deps): update module golang.org/x/net to v0.32.0 (#457)
renovate[bot] Dec 5, 2024
8594ae5
fix(deps): update dependency build.buf.gen:minekube_gate_protocolbuff…
renovate[bot] Dec 9, 2024
bde6156
feat: Support Minecraft_1_21_4
robinbraemer Dec 10, 2024
8d29a6f
feat(connect): add CONNECT_TOKEN env var
robinbraemer Dec 10, 2024
33514f9
fix(deps): update module go.minekube.com/common to v0.0.6 (#460)
renovate[bot] Dec 11, 2024
fe3769a
fix(deps): update grpc-java monorepo to v1.69.0 (#461)
renovate[bot] Dec 12, 2024
14ad20d
fix(deps): update module go.minekube.com/gate to v0.46.0 (#462)
renovate[bot] Dec 12, 2024
ce71890
fix(deps): update dependency build.buf.gen:minekube_gate_grpc_java to…
renovate[bot] Dec 12, 2024
b573409
fix(deps): update module google.golang.org/grpc to v1.69.0 (#464)
renovate[bot] Dec 14, 2024
e824467
fix(deps): update module golang.org/x/net to v0.33.0 [security] (#466)
renovate[bot] Dec 21, 2024
6e72502
Update events.go
robinbraemer Dec 21, 2024
0589299
fix(deps): update dependency com.google.protobuf:protobuf-java to v4.…
renovate[bot] Dec 21, 2024
e247f68
fix(deps): update dependency com.google.protobuf:protobuf-java to v4.…
renovate[bot] Dec 21, 2024
22fb250
fix(deps): update module google.golang.org/grpc to v1.69.2 (#469)
renovate[bot] Dec 21, 2024
3287d84
fix(deps): update dependency @bufbuild/buf to v1.48.0 (#470)
renovate[bot] Dec 22, 2024
7cfae48
fix(deps): update dependency build.buf.gen:minekube_gate_protocolbuff…
renovate[bot] Dec 22, 2024
f3d2637
fix(deps): update dependency org.jetbrains.kotlinx:kotlinx-coroutines…
renovate[bot] Dec 22, 2024
8906a08
fix(deps): update module buf.build/gen/go/minekube/gate/protocolbuffe…
renovate[bot] Dec 22, 2024
7766db0
fix(deps): update module google.golang.org/protobuf to v1.36.0 (#474)
renovate[bot] Dec 22, 2024
0578789
fix(deps): update module google.golang.org/protobuf to v1.36.1 (#475)
renovate[bot] Dec 23, 2024
b4d912d
fix(deps): update module buf.build/gen/go/minekube/gate/protocolbuffe…
renovate[bot] Dec 24, 2024
fa26a87
fix(deps): update module google.golang.org/protobuf to v1.36.2 (#478)
renovate[bot] Jan 7, 2025
8d39c9c
fix(deps): update module buf.build/gen/go/minekube/gate/protocolbuffe…
renovate[bot] Jan 7, 2025
d0de3fb
fix(deps): update module golang.org/x/net to v0.34.0 (#480)
renovate[bot] Jan 8, 2025
b927070
fix(deps): update dependency @bufbuild/buf to v1.49.0 (#481)
renovate[bot] Jan 8, 2025
89b71f0
fix(deps): update module buf.build/gen/go/minekube/gate/connectrpc/go…
renovate[bot] Jan 9, 2025
2f52359
fix(deps): update dependency com.google.protobuf:protobuf-java to v4.…
renovate[bot] Jan 9, 2025
c27c2ea
feat(Lite): Allow configuring players in fallback status response #28…
TheVihara Jan 14, 2025
909b309
fix(deps): update dependency com.google.protobuf:protobuf-java to v4.…
renovate[bot] Jan 14, 2025
6668ba7
fix(deps): update module google.golang.org/grpc to v1.69.4 (#485)
renovate[bot] Jan 15, 2025
374d6fd
fix(deps): update dependency build.buf.gen:minekube_gate_protocolbuff…
renovate[bot] Jan 15, 2025
2c863de
fix(deps): update module connectrpc.com/connect to v1.18.1 (#487)
renovate[bot] Jan 15, 2025
be3587d
fix(deps): update module go.minekube.com/gate to v0.47.0 (#488)
renovate[bot] Jan 15, 2025
1a8be76
fix(deps): update module golang.org/x/time to v0.9.0 (#489)
renovate[bot] Jan 15, 2025
268322d
fix(deps): update module buf.build/gen/go/minekube/gate/protocolbuffe…
renovate[bot] Jan 15, 2025
47c0af6
fix(deps): update module google.golang.org/protobuf to v1.36.3 (#491)
renovate[bot] Jan 16, 2025
d8a7ed6
chore(deps): update dependency go to v1.23.5 (#492)
renovate[bot] Jan 17, 2025
1b60de4
chore(deps): update golang docker tag to v1.23.5 (#493)
renovate[bot] Jan 17, 2025
8000 64656e6
fix(deps): update grpc-java monorepo to v1.69.1 (#494)
renovate[bot] Jan 17, 2025
06818e1
fix(deps): update dependency build.buf.gen:minekube_gate_grpc_java to…
renovate[bot] Jan 19, 2025
f2468b8
fix(deps): update dependency @bufbuild/buf to v1.50.0 (#496)
renovate[bot] Jan 19, 2025
f4f789c
fix(deps): update grpc-java monorepo to v1.70.0 (#497)
renovate[bot] Jan 24, 2025
4f95dc5
fix(deps): update module google.golang.org/grpc to v1.70.0 (#498)
renovate[bot] Jan 24, 2025
a90af52
fix(deps): update module google.golang.org/protobuf to v1.36.4 (#499)
renovate[bot] Jan 24, 2025
aff59cc
fix(deps): update module buf.build/gen/go/minekube/gate/protocolbuffe…
renovate[bot] Jan 25, 2025
83c20a3
fix(deps): update dependency build.buf.gen:minekube_gate_grpc_java to…
renovate[bot] Jan 26, 2025
9138a84
fix(deps): update module golang.org/x/net to v0.36.0 [security] (#508)
renovate[bot] Mar 14, 2025
ee6b090
fix: config path in k8s examples (#511)
Izzy-Irvine Apr 7, 2025
defdf8b
docs: Updated Connect Integration Guide (#509)
NixNux123 Apr 7, 2025
4bca3df
fix(deps): update dependency org.jetbrains.kotlinx:kotlinx-coroutines…
renovate[bot] Apr 15, 2025
23862ce
fix(deps): update module golang.org/x/net to v0.38.0 [security] (#513)
renovate[bot] Apr 17, 2025
ddd8e72
feat: Support Minecraft 1.21.5
robinbraemer Apr 23, 2025
68b4dcc
chore(deps): update Go version to 1.24.1 and dependencies in go.mod a…
robinbraemer Apr 23, 2025
017fa99
fix(deps): resolve merge conflicts and update dependencies in go.mod …
robinbraemer Apr 23, 2025
97d250d
refactor: Clean up formatting and whitespace in various files
robinbraemer Apr 23, 2025
8673c2f
refactor: Enhance error handling and validation in channel identifier…
robinbraemer Apr 23, 2025
07a61f1
chore: update Go version in Dockerfile to 1.24.1
robinbraemer Apr 23, 2025
d090a53
feat: Enhance installation script for cross-platform support
robinbraemer Apr 23, 2025
a7c8bf2
fix(deps): update dependency @bufbuild/protobuf to v1.10.1 (#516)
renovate[bot] Apr 23, 2025
fafb23a
chore(deps): update golang docker tag to v1.24.2 (#517)
renovate[bot] Apr 24, 2025
8c5a891
fix(deps): update dependency io.grpc:grpc-kotlin-stub to v1.4.3 (#518)
renovate[bot] Apr 24, 2025
df3fa86
fix(deps): update module buf.build/gen/go/minekube/gate/protocolbuffe…
renovate[bot] Apr 24, 2025
c28aa67
fix(deps): update dependency build.buf.gen:minekube_gate_grpc_java to…
renovate[bot] Apr 24, 2025
1094308
fix(deps): update dependency com.google.protobuf:protobuf-java to v4.…
renovate[bot] Apr 24, 2025
a801ffa
fix(deps): update grpc-java monorepo to v1.72.0 (#523)
renovate[bot] Apr 25, 2025
703181f
fix(deps): update module github.com/go-faker/faker/v4 to v4.6.0 (#524)
renovate[bot] Apr 25, 2025
a6bfc6b
fix(deps): update module go.minekube.com/gate to v0.48.1 (#525)
renovate[bot] Apr 25, 2025
97f3e80
fix(deps): update module golang.org/x/net to v0.39.0 (#526)
renovate[bot] Apr 25, 2025
b7c4580
fix(deps): update module github.com/go-faker/faker/v4 to v4.6.1 (#528)
renovate[bot] Apr 27, 2025
7bd5e6a
fix(deps): update module golang.org/x/time to v0.11.0 (#529)
renovate[bot] Apr 27, 2025
f0e3893
fix(deps): update module google.golang.org/grpc to v1.72.0 (#530)
renovate[bot] Apr 27, 2025
95a2a59
fix(network): fix AvailableCommands packet for mods (#534)
robinbraemer May 14, 2025
0c6c637
feat(WIP): add otel
robinbraemer Nov 27, 2024
1effdb4
add docs and improve env config
robinbraemer Nov 27, 2024
902dd3a
feat(docs): add FAQ section and update navigation
robinbraemer May 14, 2025
a8ad223
feat: enhance packet reading with byte count tracking
robinbraemer May 14, 2025
e23d05f
fix(deps): update OpenTelemetry dependencies and related modules
robinbraemer May 14, 2025
05014d0
Merge branch 'master' into feat/otel
robinbraemer May 14, 2025
a62dd9d
go mod tidy
robinbraemer May 14, 2025
04092d9
feat(otel): update OpenTelemetry dependencies to v1.35.0 and add Prom…
robinbraemer May 14, 2025
5ef2a70
feat(docs): add 'Self-hosted' link to OpenTelemetry navigation
robinbraemer May 14, 2025
1d8b96f
feat(docs): enhance OpenTelemetry self-hosted guide with configuratio…
robinbraemer May 14, 2025
348db2f
feat(api): integrate OpenTelemetry interceptor into Gate service handler
robinbraemer May 15, 2025
5e2cd82
feat(docs): update OpenTelemetry self-hosted guide with new metrics a…
robinbraemer May 15, 2025
4b4b37d
chore(deps): update Go module dependencies and documentation configur…
robinbraemer May 15, 2025
ff5a53a
fix(docs): update OpenTelemetry self-hosted guide for Jaeger configur…
robinbraemer May 15, 2025
7685d44
feat(docs): enhance OpenTelemetry self-hosted guide with new configur…
robinbraemer May 16, 2025
65ee98f
feat(docs): update Grafana dashboard for Gate overview with new data …
robinbraemer May 16, 2025
31d7289
feat(docs): expand OpenTelemetry self-hosted guide with new Grafana a…
robinbraemer May 16, 2025
9edcbda
fix(docs): update links in OpenTelemetry self-hosted guide for Grafan…
robinbraemer May 16, 2025
affe1b0
fix(docs): update Google Cloud product name in OpenTelemetry guide
robinbraemer May 16, 2025
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
33 changes: 33 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Debug",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceFolder}/gate.go",
"args": ["-d"],
"console": "integratedTerminal"
},
{
"name": "Debug with OTEL (Self-hosted)",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceFolder}/gate.go",
"args": [" F438 -d"],
"console": "integratedTerminal",
"env": {
"OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:4318",
"OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf",
"OTEL_TRACES_ENABLED": "true",
"OTEL_METRICS_ENABLED": "true",
"OTEL_SERVICE_NAME": "gate-dev"
}
}
]
}
42 changes: 41 additions & 1 deletion .web/docs/.vitepress/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,11 @@ export default defineConfig({
],

vue: {
reactivityTransform: true,
// reactivityTransform: true, // This option is deprecated
},

ignoreDeadLinks: 'localhostLinks',

themeConfig: {
logo: '/minekube-logo.png',

Expand Down Expand Up @@ -176,6 +178,44 @@ export default defineConfig({
},
],
},
{
text: 'OpenTelemetry',
items: [
{
text: 'Overview',
link: '/guide/otel/',
},
{
text: 'Grafana',
items: [
{
text: 'Grafana Cloud',
link: '/guide/otel/grafana-cloud/',
},
{
text: 'Self-hosted Grafana Stack',
link: '/guide/otel/self-hosted/grafana-stack.md',
},
{
text: 'Grafana Dashboards',
link: '/guide/otel/self-hosted/dashboard',
},
],
},
{
text: 'Honeycomb',
link: '/guide/otel/honeycomb/',
},
{
text: 'Self-hosted Jaeger',
link: '/guide/otel/self-hosted/jaeger',
},
{
text: 'FAQ',
link: '/guide/otel/faq/',
},
],
},
{
text: 'Security',
items: [
Expand Down
56 changes: 56 additions & 0 deletions .web/docs/guide/otel/faq.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# OpenTelemetry FAQ

This FAQ addresses common questions about using OpenTelemetry with Gate, particularly in conjunction with Grafana Mimir, Grafana Tempo, and the OpenTelemetry Collector.

## What does a recommended scalable OpenTelemetry setup for Gate look like?

A recommended scalable setup involves:

1. **Gate**: Your application, instrumented with OpenTelemetry, emitting metrics and traces via OTLP.
2. **OpenTelemetry Collector**: Receives OTLP data from Gate, processes it (batching, filtering, enrichment), and exports it.
3. **Grafana Mimir**: A scalable, long-term storage backend for metrics, receiving data from the OTel Collector (e.g., via Prometheus remote write or OTLP). It's queried using PromQL.
4. **Grafana Tempo**: A scalable backend for traces, receiving OTLP traces from the OTel Collector.
5. **Grafana OSS**: The visualization platform, connecting to Mimir (for metrics) and Tempo (for traces).

The data flow generally looks like this:
`Gate (OTLP) -> OTel Collector -> Grafana Mimir (Metrics) & Grafana Tempo (Traces) -> Grafana OSS (Visualization)`

## In a setup with Grafana Mimir, is a separate Prometheus server still deployed?

Generally, no. Grafana Mimir takes on the role of the scalable metrics backend, handling storage and PromQL querying. You wouldn't typically deploy and manage a separate, standalone Prometheus server for its own data storage in this scenario. However, Prometheus concepts and technologies are still integral:

- **PromQL**: Used to query metrics from Mimir.
- **Exposition Format**: Applications might still expose metrics in the Prometheus format.
- **Collection Mechanisms**: The OTel Collector might use its Prometheus receiver, or Mimir ingests data via Prometheus remote write.

Mimir effectively becomes your Prometheus-compatible, scalable metrics datastore and query engine.

## What is the role of the OpenTelemetry Collector? Can applications like Gate push data directly to backends like Prometheus or Mimir?

The OpenTelemetry Collector is a crucial component that acts as a telemetry processing and routing pipeline. While some backends (including newer versions of Prometheus and potentially Mimir) can accept OTLP data directly, the Collector offers significant advantages:

- **Decoupling**: Applications only need to send data to the Collector, which then handles routing to various backends. This simplifies application configuration and makes it easier to change or add backends.
- **Processing**: The Collector can batch data for efficiency, filter unwanted telemetry, enrich data with additional attributes (e.g., Kubernetes metadata), and handle export retries.
- **Protocol Translation**: It can convert telemetry data between different protocols if needed.
- **Standardization**: It promotes a standardized way of handling telemetry data before it reaches the backends.

For these reasons, even if direct sending is possible, using the OTel Collector is often the recommended approach for flexibility and robustness.

## How do Grafana Mimir and Grafana Tempo fit into this?

- **Grafana Mimir**: Serves as a highly scalable, long-term storage solution for Prometheus metrics. It addresses potential scaling limitations of a single Prometheus instance for large data volumes and long retention periods. It remains compatible with PromQL for querying.
- **Grafana Tempo**: Is a highly scalable, easy-to-operate distributed tracing backend. It's optimized for ingesting and retrieving traces by ID and integrates well with Grafana for visualization and correlation with metrics and logs.

## Why does my OpenTelemetry `service.name` appear as the `job` label in Prometheus?

When you send telemetry from an application (like Gate) instrumented with OpenTelemetry to an OpenTelemetry Collector, and then the Collector forwards this data to Prometheus (typically using the `prometheusremotewrite` exporter), a common and intentional translation occurs:

1. **OTLP Transmits Resource Attributes**: Your application sends `service.name` (along with other details like `service.version`, `host.name`, etc.) as "resource attributes" within the OTLP (OpenTelemetry Protocol) data. These attributes describe the entity generating the telemetry.

2. **Collector's Role (`prometheusremotewrite` Exporter)**: The OpenTelemetry Collector receives this OTLP data. When configured to send metrics to Prometheus, its `prometheusremotewrite` exporter takes on the task of converting the OpenTelemetry data model into the format Prometheus understands.

3. **Default Convention: `service.name` to `job`**: By default, and in line with common Prometheus conventions, this exporter maps the OpenTelemetry `service.name` resource attribute to the `job` label in Prometheus. Similarly, `service.instance.id` is often mapped to the `instance` label.

**In essence, if you see `job="your-service-name"` in Prometheus, this _is_ your OpenTelemetry `service.name` attribute.** It has been translated to the standard Prometheus `job` label, which is the conventional way to identify a service or application in Prometheus.

You generally do **not** need to add special processing in the Collector (e.g., using an `attributes` processor) to achieve this mapping; it's a standard behavior of the `prometheusremotewrite` exporter. This design choice simplifies integration and aligns with how Prometheus users typically organize and query their metrics.
78 changes: 78 additions & 0 deletions .web/docs/guide/otel/grafana-cloud/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Grafana Cloud

[Grafana Cloud](https://grafana.com/products/cloud/) is a fully managed observability platform that supports OpenTelemetry. Follow these steps to set up Gate with Grafana Cloud:

1. **Create a Grafana Cloud Account**

- Sign up at [Grafana.com](https://grafana.com/auth/sign-up/create-user)
- Navigate to your organization
- Create an Access Policy with write permissions at [Access Policies](https://grafana.com/orgs/your-org/access-policies)
- Generate and save your API token

2. **Configure Stack**

Navigate to your Grafana Cloud Stack (e.g., grafana.com/orgs/your-org/stacks/xxxxx) and:

- Click "Send Traces" in the Tempo section to get your traces endpoint
- Click "Send Metrics" in the Prometheus section to get your metrics endpoint

![Stack](./stack.png)

3. **Prepare Your Authentication**

You'll need to encode your credentials in base64 format. Use one of these methods:

- Using the command line:

```bash
echo "YOUR_INSTANCE_ID:YOUR_API_TOKEN" | base64
```

- Or visit an online base64 encoder like [base64encode.org](https://www.base64encode.org/)

4. **Configure Gate**

Export the following environment variables before starting Gate:

```bash
# For traces (Tempo)
export OTEL_EXPORTER_OTLP_ENDPOINT="https://tempo-prod-XX-prod-XX-XXXXX.grafana.net/tempo"
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Basic YOUR_BASE64_ENCODED_CREDENTIALS"

# For metrics (Prometheus)
export OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf"
export OTEL_METRICS_EXPORTER="otlp"
export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT="https://prometheus-prod-XX-prod-XX-XXXXX.grafana.net/api/prom/push"
export OTEL_EXPORTER_OTLP_METRICS_HEADERS="Authorization=Basic YOUR_BASE64_ENCODED_CREDENTIALS"
```

::: tip
For production deployments, consider setting these environment variables in your system configuration or container orchestration platform rather than exporting them manually.
:::

5. **Start Gate**

Once the environment variables are set, start Gate normally. It will automatically begin sending telemetry data to Grafana Cloud.

```bash
gate
```

See [Install](/guide/install/) for more information on how to start Gate.

6. **View Your Data**

Log into your Grafana Cloud account and click on the "Launch" button for Grafana:

- Navigate to the Tempo service to view your traces
- Navigate to the Prometheus service to view your metrics

![Launch](./launch.png)

- Go to the "Explore" section and select "Tempo" to in the sources

![tempo-source](./tempo-source.png)

![Trace](./trace.png)

- Or select "Prometheus" to view your metrics
Binary file added .web/docs/guide/otel/grafana-cloud/launch.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .web/docs/guide/otel/grafana-cloud/stack.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .web/docs/guide/otel/grafana-cloud/trace.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
49 changes: 49 additions & 0 deletions .web/docs/guide/otel/honeycomb/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Honeycomb

[Honeycomb](https://www.honeycomb.io/) is an OpenTelemetry-compatible observability platform that requires minimal setup - just sign up, create an environment, and get your API key to start collecting telemetry data. Here's how to get started:

1. **Create a Honeycomb Account**

- Sign up at [Honeycomb.io](https://ui.honeycomb.io/signup)
- Create a new environment (or use an existing one)
- Get your API key from Environment Settings

2. **Configure Gate**

Export the following environment variables before starting Gate:

::: code-group

```bash [US Region]
export OTEL_EXPORTER_OTLP_ENDPOINT="https://api.honeycomb.io:443"
export OTEL_EXPORTER_OTLP_HEADERS="x-honeycomb-team=your-api-key"
```

```bash [EU Region]
export OTEL_EXPORTER_OTLP_ENDPOINT="https://api.eu1.honeycomb.io:443"
export OTEL_EXPORTER_OTLP_HEADERS="x-honeycomb-team=your-api-key"
```

:::

::: tip
For production deployments, consider setting these environment variables in your system configuration or container orchestration platform rather than exporting them manually.
:::

3. **Start Gate**

Once the environment variables are set, start Gate normally. It will automatically begin sending telemetry data to Honeycomb.

```bash
gate
```

See [Install](/guide/install/) for more information on how to start Gate.

4. **View Your Data**

Log into your Honeycomb account and navigate to your environment. You should see your Gate service appearing in the list of services, and you can start creating queries and visualizations to analyze your data.

![Trace](trace.png)

![Metric](metric.png)
Binary file added .web/docs/guide/otel/honeycomb/metric.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .web/docs/guide/otel/honeycomb/trace.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
0