Skip to content
Open
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
143 changes: 70 additions & 73 deletions content/en/docs/collector/custom-collector.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ weight: 29
cSpell:ignore: chipset darwin debugexporter gomod otlpexporter otlpreceiver wyrtw
Copy link
Member

@tiffany76 tiffany76 Nov 17, 2025

Choose a reason for hiding this comment

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

I can't leave a comment on the specific line, but can we change the title of the page to be "Build a custom Collector with OpenTelemetry Collector Builder" And the linkTitle can be "Build a custom Collector".

---

If you are planning to build and debug custom collector receivers, processors,
extensions, or exporters, you are going to need your own Collector instance.
That will allow you to launch and debug your OpenTelemetry Collector components
If you are building and debugging custom Collector receivers, processors,
extensions, or exporters, you need your own Collector instance.
This allows you to launch and debug your OpenTelemetry Collector components
directly within your favorite Golang IDE.

The other interesting aspect of approaching the component development this way
Another benefit of this approach
is that you can use all the debugging features from your IDE (stack traces are
great teachers!) to understand how the Collector itself interacts with your
component code.
Expand All @@ -20,13 +20,12 @@ builder][ocb] (or `ocb` for short) to assist people in assembling their own
distribution, making it easy to build a distribution that includes their custom
Copy link
Member

Choose a reason for hiding this comment

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

On the line above, can you capitalize Builder?

components along with components that are publicly available.
Copy link
Member

Choose a reason for hiding this comment

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

Let's shorten this paragraph a little.

You can use the [OpenTelemetry Collector
Builder][ocb] (or ocb for short) to assemble your own
distribution that includes custom
components, upstream components, and other publicly available components.


As part of the process the `ocb` will generate the Collector's source code,
which you can use to help build and debug your own custom components, so let's
get started.
As part of the process, the `ocb` generates the Collector's source code,
which you can use to build and debug your own custom components.
Copy link
Member

Choose a reason for hiding this comment

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

Let's add a sentence after this paragraph to introduce the tutorial. Something like:

The following guide shows you how to get started with ocb to build your own Collector. For more details, see the [Builder documentation][ocb].


## Step 1 - Install the builder
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
## Step 1 - Install the builder
## Install the Builder


{{% alert color="primary" title="Note" %}}
{{% alert title="Note" %}}
Copy link
Member

Choose a reason for hiding this comment

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

I think we should pull this content out of an admonition and make a new section called ## Prerequisites that comes before the steps.


The `ocb` tool requires Go to build the Collector distribution.
[Install Go](https://go.dev/doc/install) on your machine, if you haven't done so
Expand All @@ -35,93 +34,98 @@ already.
{{% /alert %}}

The `ocb` binary is available as a downloadable asset from OpenTelemetry
Collector [releases with `cmd/builder` tags][tags]. You will find a list of
Collector [releases with `cmd/builder` tags](https://github.com/open-telemetry/opentelemetry-collector-releases/tags). You can find a list of
assets named based on OS and chipset, so download the one that fits your
configuration:
Comment on lines +37 to 39
Copy link
Member

Choose a reason for hiding this comment

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

Please keep the link reference rather than add the URL directly. It's true our docs are inconsistent with how we handle links, but in this case, there's no reason to change it. Also, I think the last sentence can be made a little clearer.

Suggested change
Collector [releases with `cmd/builder` tags](https://github.com/open-telemetry/opentelemetry-collector-releases/tags). You can find a list of
assets named based on OS and chipset, so download the one that fits your
configuration:
Collector [releases with `cmd/builder` tags][tags]. Find and download the asset that fits your operating system and chipset:


{{< tabpane text=true >}}
Copy link
Member

Choose a reason for hiding this comment

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

I agree with @chalin that we should keep the tabbed pane section as it was, with variables for version numbers. We also don't need the bulleted list. Please revert the changes to the tabbed pane section, from line 42 to 88 in the original file. Thank you!

- Linux (AMD 64)
- Linux (ARM 64)
- Linux (ppc64le)
- macOS (AMD 64)
- macOS (ARM 64)
- Windows (AMD 64)

{{% tab "Linux (AMD 64)" %}}
{{< tabpane text=true >}} {{% tab "Linux (AMD 64)" %}}

```sh
curl --proto '=https' --tlsv1.2 -fL -o ocb \
https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fbuilder%2F{{% version-from-registry collector-builder %}}/ocb_{{% version-from-registry collector-builder noPrefix %}}_linux_amd64
https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fbuilder%2Fv0.139.0/ocb_0.139.0_linux_amd64
chmod +x ocb
```

{{% /tab %}} {{% tab "Linux (ARM 64)" %}}

```sh
curl --proto '=https' --tlsv1.2 -fL -o ocb \
https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fbuilder%2F{{% version-from-registry collector-builder %}}/ocb_{{% version-from-registry collector-builder noPrefix %}}_linux_arm64
https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fbuilder%2Fv0.139.0/ocb_0.139.0_linux_arm64
chmod +x ocb
```

{{% /tab %}} {{% tab "Linux (ppc64le) "%}}
{{% /tab %}} {{% tab "Linux (ppc64le)" %}}

```sh
curl --proto '=https' --tlsv1.2 -fL -o ocb \
https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fbuilder%2F{{% version-from-registry collector-builder %}}/ocb_{{% version-from-registry collector-builder noPrefix %}}_linux_ppc64le
https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fbuilder%2Fv0.139.0/ocb_0.139.0_linux_ppc64le
chmod +x ocb
```

{{% /tab %}} {{% tab "macOS (AMD 64)" %}}

```sh
curl --proto '=https' --tlsv1.2 -fL -o ocb \
https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fbuilder%2F{{% version-from-registry collector-builder %}}/ocb_{{% version-from-registry collector-builder noPrefix %}}_darwin_amd64
https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fbuilder%2Fv0.139.0/ocb_0.139.0_darwin_amd64
chmod +x ocb
```

{{% /tab %}} {{% tab "macOS (ARM 64)" %}}

```sh
curl --proto '=https' --tlsv1.2 -fL -o ocb \
https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fbuilder%2F{{% version-from-registry collector-builder %}}/ocb_{{% version-from-registry collector-builder noPrefix %}}_darwin_arm64
https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fbuilder%2Fv0.139.0/ocb_0.139.0_darwin_arm64
chmod +x ocb
```

{{% /tab %}} {{% tab "Windows (AMD 64)" %}}
{{% /tab %}} {{% tab "Windows" %}}

```sh
Invoke-WebRequest -Uri "https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fbuilder%2F{{% version-from-registry collector-builder %}}/ocb_{{% version-from-registry collector-builder noPrefix %}}_windows_amd64.exe" -OutFile "ocb.exe"
```powershell
Invoke-WebRequest -Uri "https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fbuilder%2Fv0.139.0/ocb_0.139.0_windows_amd64.exe" -OutFile "ocb.exe"
Unblock-File -Path "ocb.exe"
```

{{% /tab %}} {{< /tabpane >}}

To make sure the `ocb` is ready to be used, go to your terminal and type
`./ocb help`, and once you hit enter you should have the output of the `help`
command showing up in your console.
To make sure the `ocb` is ready to use, go to your terminal and type
`./ocb help`. When you press enter, you should see the output of the `help`
command in your console.

## Step 2 - Create a builder manifest file
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
## Step 2 - Create a builder manifest file
## Configure the Builder


The builder's `manifest` file is a `yaml` where you pass information about the
code generation and compile process combined with the components that you would
The builder's `manifest` file is a YAML file where you provide information about the
code generation and compile process combined with the components you would
like to add to your Collector's distribution.
Comment on lines +103 to 105
Copy link
Member

Choose a reason for hiding this comment

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

Rewriting this a bit to help new users who might need all the dots connected.

Suggested change
The builder's `manifest` file is a YAML file where you provide information about the
code generation and compile process combined with the components you would
like to add to your Collector's distribution.
You configure the Builder using a YAML manifest file. The manifest has two main sections. The first section, `dist`, contains options for configuring the code generation and compile process. The second section contains top-level module types, such as `extensions`, `exporters`, `receivers` or `processors`. Each module type accepts a list of components.


The `manifest` starts with a map named `dist` which contains tags to help you
configure the code generation and compile process. In fact, all the tags for
`dist` are the equivalent of the `ocb` command line `flags`.
`dist` are equivalent to the `ocb` command line `flags`.
Comment on lines 107 to +109
Copy link
Member

Choose a reason for hiding this comment

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

We can delete this paragraph as it goes into details that aren't necessary for beginners.


Here are the tags for the `dist` map:
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
Here are the tags for the `dist` map:
The following table lists the options for configuring the `dist` section of the manifest.


| Tag | Description | Optional | Default Value |
| ------------ | -------------------------------------------------------------------------------------------------- | -------- | --------------------------------------------------------------------------------- |
| module: | The module name for the new distribution, following Go mod conventions. Optional, but recommended. | Yes | `go.opentelemetry.io/collector/cmd/builder` |
| name: | The binary name for your distribution | Yes | `otelcol-custom` |
| description: | A long name for the application. | Yes | `Custom OpenTelemetry Collector distribution` |
| output_path: | The path to write the output (sources and binary). | Yes | `/var/folders/86/s7l1czb16g124tng0d7wyrtw0000gn/T/otelcol-distribution3618633831` |
| version: | The version for your custom OpenTelemetry Collector. | Yes | `1.0.0` |
| go: | Which Go binary to use to compile the generated sources. | Yes | go from the PATH |

As you can see on the table above, all the `dist` tags are optional, so you will
be adding custom values for them depending if your intentions to make your
| Tag | Description | Optional | Default Value |
| ---------------- | -------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------- |
| module: | The module name for the new distribution, following Go mod conventions. | Yes | `go.opentelemetry.io/collector/cmd/builder` |
Copy link
Member

Choose a reason for hiding this comment

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

I think the "recommended" part in the original is important, so let's leave that in.

| name: | The binary name for your distribution | Yes | `otelcol-custom` |
| description: | A long name for the application. | Yes | `Custom OpenTelemetry Collector distribution` |
| output_path: | The path to write the output (sources and binary). | Yes | `/var/folders/86/s7l1czb16g124tng0d7wyrtw0000gn/T/otelcol-distribution3618633831` |
| version: | The version for your custom OpenTelemetry Collector. | Yes | `1.0.0` |
| go: | Which Go binary to use to compile the generated sources. | Yes | go from the PATH |

As you can see in the table above, all the `dist` tags are optional. You add
custom values for them depending on whether you intend to make your
custom Collector distribution available for consumption by other users or if you
Comment on lines +122 to 124
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
As you can see in the table above, all the `dist` tags are optional. You add
custom values for them depending on whether you intend to make your
custom Collector distribution available for consumption by other users or if you
As you can see in the table above, all the `dist` tags are optional. You add
custom values for them depending on whether you intend to make your
custom Collector distribution available to other users or you

are simply leveraging the `ocb` to bootstrap your component development and
are simply using the `ocb` to bootstrap your component development and
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
are simply using the `ocb` to bootstrap your component development and
are using the `ocb` to bootstrap your component development and

testing environment.

For this tutorial, you will be creating a Collector's distribution to support
For this tutorial, you create a Collector's distribution to support
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
For this tutorial, you create a Collector's distribution to support
In the following example, you create a Collector's distribution to support

the development and testing of components.

Go ahead and create a manifest file named `builder-config.yaml` with the
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
Go ahead and create a manifest file named `builder-config.yaml` with the
1. Create a manifest file named `builder-config.yaml` with the

Expand All @@ -134,22 +138,21 @@ dist:
output_path: ./otelcol-dev
```

Now you need to add the modules representing the components you want to be
Now add the modules representing the components you want
incorporated in this custom Collector distribution. Take a look at the
[ocb configuration documentation](https://github.com/open-telemetry/opentelemetry-collector/tree/main/cmd/builder#configuration)
to understand the different modules and how to add the components.

We will be adding the following components to our development and testing
collector distribution:
Add the following components to the development and testing
Collector distribution:

- Exporters: OTLP and Debug
- Receivers: OTLP
- Processors: Batch

The `builder-config.yaml` manifest file will look like this after adding the
The `builder-config.yaml` manifest file looks like this after adding the
Comment on lines +141 to +153
Copy link
Member

Choose a reason for hiding this comment

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

I'm condensing this section a bit, but the suggestion might not work. You might have to make the changes locally.

Suggested change
Now add the modules representing the components you want
incorporated in this custom Collector distribution. Take a look at the
[ocb configuration documentation](https://github.com/open-telemetry/opentelemetry-collector/tree/main/cmd/builder#configuration)
to understand the different modules and how to add the components.
We will be adding the following components to our development and testing
collector distribution:
Add the following components to the development and testing
Collector distribution:
- Exporters: OTLP and Debug
- Receivers: OTLP
- Processors: Batch
The `builder-config.yaml` manifest file will look like this after adding the
The `builder-config.yaml` manifest file looks like this after adding the
2. Add modules for the components you want
to include in your custom Collector distribution. See the
[ocb configuration documentation](https://github.com/open-telemetry/opentelemetry-collector/tree/main/cmd/builder#configuration)
to understand the different modules and how to add components.
For this example, add the following components:
- Exporters: OTLP and Debug
- Receivers: OTLP
- Processors: Batch
The `builder-config.yaml` manifest file looks like this after adding the components:

components:

<!-- prettier-ignore -->
```yaml
dist:
name: otelcol-dev
Expand Down Expand Up @@ -178,9 +181,9 @@ providers:
- gomod: go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.18.0
```

{{% alert color="primary" title="Tip" %}}
{{% alert title="Tip" %}}

For a list of components that you can add to your custom collector, see the
For a list of components that you can add to your custom Collector, see the
[OpenTelemetry Registry](/ecosystem/registry/?language=collector). Note that
registry entries provide the full name and version you need to add to your
`builder-config.yaml`.
Comment on lines 187 to 189
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
[OpenTelemetry Registry](/ecosystem/registry/?language=collector). Note that
registry entries provide the full name and version you need to add to your
`builder-config.yaml`.
[OpenTelemetry Registry](/ecosystem/registry/?language=collector). Each
registry entry contains the full name and version you need to add to your
`builder-config.yaml`.

Expand All @@ -189,27 +192,27 @@ registry entries provide the full name and version you need to add to your

## Step 3a - Generate the code and build your Collector's distribution
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
## Step 3a - Generate the code and build your Collector's distribution
## Generate the code and build your Collector distribution


{{% alert color="primary" title="Note" %}}
{{% alert title="Note" %}}

This step is used to build your custom collector distribution using the `ocb`
This step builds your custom Collector distribution using the `ocb`
binary. If you would like to build and deploy your custom Collector distribution
to a container orchestrator (for example, Kubernetes), skip this step and go to
[Step 3b](#step-3b---containerize-your-collectors-distribution).
Comment on lines +197 to 200
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
This step builds your custom Collector distribution using the `ocb`
binary. If you would like to build and deploy your custom Collector distribution
to a container orchestrator (for example, Kubernetes), skip this step and go to
[Step 3b](#step-3b---containerize-your-collectors-distribution).
This section instructs you to build your custom Collector distribution using the `ocb`
binary. If you would like to build and deploy your custom Collector distribution
to a container orchestrator, such as Kubernetes, skip this section and see
[Containerize your Collector Distribution](#step-3b---containerize-your-collector-distribution).


{{% /alert %}}

All you need now is to let the `ocb` do its job, so go to your terminal and type
Now let the `ocb` do its job. Go to your terminal and type
the following command:

```cmd
```sh
./ocb --config builder-config.yaml
```

If everything went well, here is what the output of the command should look
If everything went well, here is what the output of the command looks
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
If everything went well, here is what the output of the command looks
The output of the command looks

like:

```nocode
2022-06-13T14:25:03.037-0500 INFO internal/command.go:85 OpenTelemetry Collector distribution builder {"version": "{{% version-from-registry collector-builder noPrefix %}}", "date": "2023-01-03T15:05:37Z"}
```text
2022-06-13T14:25:03.037-0500 INFO internal/command.go:85 OpenTelemetry Collector distribution builder {"version": "0.139.0", "date": "2023-01-03T15:05:37Z"}
Copy link
Member

Choose a reason for hiding this comment

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

Here's another spot where we need to maintain the variable.

2022-06-13T14:25:03.039-0500 INFO internal/command.go:108 Using config file {"path": "builder-config.yaml"}
2022-06-13T14:25:03.040-0500 INFO builder/config.go:99 Using go {"go-executable": "/usr/local/go/bin/go"}
2022-06-13T14:25:03.041-0500 INFO builder/main.go:76 Sources created {"path": "./otelcol-dev"}
Expand All @@ -222,9 +225,9 @@ As defined in the `dist` section of your config file, you now have a folder
named `otelcol-dev` containing all the source code and the binary for your
Collector's distribution.

The folder structure should look like this:
The folder structure looks like this:

```console
```text
.
├── builder-config.yaml
├── ocb
Expand All @@ -240,30 +243,30 @@ The folder structure should look like this:
```

You can now use the generated code to bootstrap your component development
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
You can now use the generated code to bootstrap your component development
You can use the generated code to bootstrap your component development

projects and easily build and distribute your own collector distribution with
projects and easily build and distribute your own Collector distribution with
your components.
Comment on lines +246 to 247
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
projects and easily build and distribute your own Collector distribution with
your components.
projects and then build and distribute your own Collector distribution with
those components.


## Step 3b - Containerize your Collector's distribution
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
## Step 3b - Containerize your Collector's distribution
## Containerize your Collector distribution


{{% alert color="primary" title="Note" %}}
{{% alert title="Note" %}}

This step will build your collector distribution inside a `Dockerfile`. Follow
This step builds your Collector distribution inside a `Dockerfile`. Follow
this step if you need to deploy your Collector distribution to a container
Comment on lines +253 to 254
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
This step builds your Collector distribution inside a `Dockerfile`. Follow
this step if you need to deploy your Collector distribution to a container
This section teaches you to build your Collector distribution inside a `Dockerfile`. Follow
these instructions if you need to deploy your Collector distribution to a container

orchestrator (for example, Kubernetes). If you would like to _only_ build your
collector distribution without containerization, go to
orchestrator (for example, Kubernetes). If you would like to *only* build your
Collector distribution without containerization, go to
[Step 3a](#step-3a---generate-the-code-and-build-your-collectors-distribution).
Comment on lines +255 to 257
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
orchestrator (for example, Kubernetes). If you would like to *only* build your
Collector distribution without containerization, go to
[Step 3a](#step-3a---generate-the-code-and-build-your-collectors-distribution).
orchestrator such as Kubernetes. If you want to build your
Collector distribution without containerization, see
[Generate the code and build your Collector distribution](#step-3a---generate-the-code-and-build-your-collector-distribution).


{{% /alert %}}

You need to add two new files to your project:
Add two new files to your project:

- `Dockerfile` - Container image definition of your Collector distribution
- `collector-config.yaml` - Minimalist Collector configuration YAML for testing
your distribution

After adding these files, your file structure looks like this:

```console
```text
.
├── builder-config.yaml
├── collector-config.yaml
Expand All @@ -274,8 +277,7 @@ The following `Dockerfile` builds your Collector distribution in-place, ensuring
that the resulting Collector distribution binary matches the target container
architecture (for example, `linux/arm64`, `linux/amd64`):

<!-- prettier-ignore-start -->
```yaml
```dockerfile
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
```dockerfile
```text

FROM alpine:3.19 AS certs
RUN apk --update add ca-certificates

Expand All @@ -284,7 +286,7 @@ WORKDIR /build

COPY ./builder-config.yaml builder-config.yaml

RUN --mount=type=cache,target=/root/.cache/go-build GO111MODULE=on go install go.opentelemetry.io/collector/cmd/builder@{{% version-from-registry collector-builder %}}
RUN --mount=type=cache,target=/root/.cache/go-build GO111MODULE=on go install go.opentelemetry.io/collector/cmd/builder@v0.139.0
Copy link
Member

Choose a reason for hiding this comment

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

Please keep the variable here.

RUN --mount=type=cache,target=/root/.cache/go-build builder --config builder-config.yaml

FROM gcr.io/distroless/base:latest
Expand All @@ -301,7 +303,6 @@ CMD ["--config", "/otelcol/collector-config.yaml"]

EXPOSE 4317 4318 12001
```
<!-- prettier-ignore-end -->

The following is the minimalist `collector-config.yaml` definition:
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
The following is the minimalist `collector-config.yaml` definition:
The following is a minimal `collector-config.yaml` definition:


Expand Down Expand Up @@ -353,11 +354,7 @@ docker run -it --rm -p 4317:4317 -p 4318:4318 \
--name otelcol <collector_distribution_image_name>:<version>
Copy link
Member

Choose a reason for hiding this comment

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

On line 335 above, can you change OCB to ocb?

```

## Further reading:

- [Building a Trace Receiver](/docs/collector/building/receiver)
- [Building a Connector](/docs/collector/building/connector)
## Further reading

[ocb]:
https://github.com/open-telemetry/opentelemetry-collector/tree/main/cmd/builder
[tags]: https://github.com/open-telemetry/opentelemetry-collector-releases/tags
Comment on lines -361 to -363
Copy link
Member

Choose a reason for hiding this comment

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

We need to keep these link references.

- [Building a trace receiver](/docs/collector/building/receiver)
- [Building a connector](/docs/collector/building/connector)
Loading