Skip to content

Commit 32046b8

Browse files
committed
[ja] docs(i18n): Translate content/en/docs/collector/custom-collector.md
1 parent 7007075 commit 32046b8

File tree

1 file changed

+317
-0
lines changed

1 file changed

+317
-0
lines changed
Lines changed: 317 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,317 @@
1+
---
2+
title: カスタムコレクターのビルド
3+
weight: 29
4+
default_lang_commit: 52ef6272047483d1d4913a7e5ce8532196c58b30
5+
cSpell:ignore: darwin debugexporter gomod otlpexporter otlpreceiver wyrtw
6+
---
7+
8+
カスタムコレクターのレシーバー、プロセッサー、エクステンション、またはエクスポーターをビルドおよびデバッグする計画がある場合は、独自のコレクターインスタンスが必要になります。
9+
これにより、任意のGolang IDE内でOpenTelemetry Collectorコンポーネントを直接起動およびデバッグできるようになります。
10+
11+
この方法でコンポーネント開発に取り組むもうひとつの興味深い側面は、IDEのすべてのデバッグ機能(スタックトレースは素晴らしい教師です!)を使用して、コレクター自体がコンポーネントのコードとどのように対話するかを理解できることです。
12+
13+
OpenTelemetryコミュニティは、独自のディストリビューションの組み立てを支援するために[OpenTelemetry Collector builder][ocb](略して`ocb`)と呼ばれるツールを開発しました。
14+
これにより、公開されているコンポーネントとともにカスタムコンポーネントを含むディストリビューションを簡単にビルドできるようになります。
15+
16+
プロセスの一環として、`ocb`は独自のカスタムコンポーネントのビルドとデバッグに役立つコレクターのソースコードを生成します。
17+
それでは始めましょう。
18+
19+
## ステップ 1 - ビルダーのインストール {#step-1---install-the-builder}
20+
21+
{{% alert color="primary" title="注意" %}}
22+
23+
`ocb`ツールは、コレクターのディストリビューションをビルドするためにGoを必要とします。
24+
まだのインストールしていない場合は、マシンに[Goをインストール](https://go.dev/doc/install)してください。
25+
26+
{{% /alert %}}
27+
28+
`ocb`バイナリは、OpenTelemetry Collectorの[`cmd/builder`タグが付いたリリース][tags]からダウンロード可能なアセットとして入手できます。
29+
OSとチップセットに基づいて名前が付けられたアセットのリストがあるため、ご自身の構成に適したものをダウンロードしてください。
30+
31+
{{< tabpane text=true >}}
32+
33+
{{% tab "Linux (AMD 64)" %}}
34+
35+
```sh
36+
curl --proto '=https' --tlsv1.2 -fL -o ocb \
37+
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
38+
chmod +x ocb
39+
```
40+
41+
{{% /tab %}} {{% tab "Linux (ARM 64)" %}}
42+
43+
```sh
44+
curl --proto '=https' --tlsv1.2 -fL -o ocb \
45+
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
46+
chmod +x ocb
47+
```
48+
49+
{{% /tab %}} {{% tab "Linux (ppc64le) "%}}
50+
51+
```sh
52+
curl --proto '=https' --tlsv1.2 -fL -o ocb \
53+
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
54+
chmod +x ocb
55+
```
56+
57+
{{% /tab %}} {{% tab "macOS (AMD 64)" %}}
58+
59+
```sh
60+
curl --proto '=https' --tlsv1.2 -fL -o ocb \
61+
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
62+
chmod +x ocb
63+
```
64+
65+
{{% /tab %}} {{% tab "macOS (ARM 64)" %}}
66+
67+
```sh
68+
curl --proto '=https' --tlsv1.2 -fL -o ocb \
69+
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
70+
chmod +x ocb
71+
```
72+
73+
{{% /tab %}} {{% tab "Windows (AMD 64)" %}}
74+
75+
```sh
76+
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"
77+
Unblock-File -Path "ocb.exe"
78+
```
79+
80+
{{% /tab %}} {{< /tabpane >}}
81+
82+
`ocb`が使用可能であることを確認するには、ターミナルに移動して`./ocb help`と入力し、Enterキーを押すと`help`コマンドの出力がコンソールに表示されるはずです。
83+
84+
## ステップ 2 - ビルダーマニフェストファイルの作成 {#step-2---create-a-builder-manifest-file}
85+
86+
ビルダーの`manifest`ファイルは`yaml`であり、コード生成とコンパイルプロセスに関する情報と、コレクターのディストリビューションに追加したいコンポーネントを組み合わせて渡します。
87+
88+
`manifest`は、コード生成とコンパイルプロセスの構成に役立つタグを含む`dist`という名前のマップで始まります。
89+
実際に`dist`のすべてのタグは、`ocb`コマンドラインの`flags`に相当します。
90+
91+
`dist`マップのタグは次のとおりです。
92+
93+
| タグ | 説明 | 任意 | デフォルト値 |
94+
| ------------ | ------------------------------------------------------------------------------------------ | ---- | --------------------------------------------------------------------------------- |
95+
| module: | Go modの規約に従った、新しいディストリビューションのモジュール名。任意ですが推奨されます。 | はい | `go.opentelemetry.io/collector/cmd/builder` |
96+
| name: | ディストリビューションのバイナリ名。 | はい | `otelcol-custom` |
97+
| description: | 長いアプリケーション名。 | はい | `Custom OpenTelemetry Collector distribution` |
98+
| output_path: | 出力(ソースとバイナリ)を書き込むパス。 | はい | `/var/folders/86/s7l1czb16g124tng0d7wyrtw0000gn/T/otelcol-distribution3618633831` |
99+
| version: | カスタムOpenTelemetry Collectorのバージョン。 | はい | `1.0.0` |
100+
| go: | 生成されたソースのコンパイルに使用するGoバイナリ。 | はい | PATHから取得されるgo |
101+
102+
上の表からわかるように、すべての`dist`タグはオプショナルであるため、カスタムコレクターディストリビューションの利用可能性を他のユーザーに提供する意図があるか、または単に`ocb`を使用してコンポーネントの開発およびテスト環境をブートストラップするだけかに応じて、それらのカスタム値を追加します。
103+
104+
このチュートリアルでは、コンポーネントの開発とテストをサポートするコレクターのディストリビューションを作成します。
105+
106+
次の内容で`builder-config.yaml`という名前のマニフェストファイルを作成します。
107+
108+
```yaml
109+
dist:
110+
name: otelcol-dev
111+
description: 開発者向けの基本的なOTelコレクターのディストリビューション
112+
output_path: ./otelcol-dev
113+
```
114+
115+
次に、このカスタムコレクターディストリビューションに組み込みたいコンポーネントを表すモジュールを追加する必要があります。
116+
それぞれのモジュールとコンポーネントの追加方法については、[ocb設定ドキュメント](https://github.com/open-telemetry/opentelemetry-collector/tree/main/cmd/builder#configuration)をご覧ください。
117+
118+
開発とテストのコレクターディストリビューションに次のコンポーネントを追加します。
119+
120+
- エクスポーター: OTLPおよびDebug
121+
- レシーバー: OTLP
122+
- プロセッサー: Batch
123+
124+
`builder-config.yaml`マニフェストファイルは、コンポーネントの追加後、次のようになります。
125+
126+
<!-- prettier-ignore -->
127+
```yaml
128+
dist:
129+
name: otelcol-dev
130+
description: 開発者向けの基本的なOTelコレクターのディストリビューション
131+
output_path: ./otelcol-dev
132+
133+
exporters:
134+
- gomod:
135+
go.opentelemetry.io/collector/exporter/debugexporter {{% version-from-registry collector-exporter-debug %}}
136+
- gomod:
137+
go.opentelemetry.io/collector/exporter/otlpexporter {{% version-from-registry collector-exporter-otlp %}}
138+
139+
processors:
140+
- gomod:
141+
go.opentelemetry.io/collector/processor/batchprocessor {{% version-from-registry collector-processor-batch %}}
142+
143+
receivers:
144+
- gomod:
145+
go.opentelemetry.io/collector/receiver/otlpreceiver {{% version-from-registry collector-receiver-otlp %}}
146+
147+
providers:
148+
- gomod: go.opentelemetry.io/collector/confmap/provider/envprovider v1.18.0
149+
- gomod: go.opentelemetry.io/collector/confmap/provider/fileprovider v1.18.0
150+
- gomod: go.opentelemetry.io/collector/confmap/provider/httpprovider v1.18.0
151+
- gomod: go.opentelemetry.io/collector/confmap/provider/httpsprovider v1.18.0
152+
- gomod: go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.18.0
153+
```
154+
155+
{{% alert color="primary" title="Tip" %}}
156+
157+
カスタムコレクターに追加できるコンポーネントのリストについては、[OpenTelemetry Registry](/ecosystem/registry/?language=collector)をご覧ください。
158+
レジストリのエントリには、`builder-config.yaml`に追加するために必要な完全な名前とバージョンが記載されていることに注意してください。
159+
160+
{{% /alert %}}
161+
162+
## ステップ 3a - コードを生成し、コレクターのディストリビューションをビルドする {#step-3a---generate-the-code-and-build-your-collectors-distribution}
163+
164+
{{% alert color="primary" title="Note" %}}
165+
166+
このステップは、`ocb`バイナリを使用してカスタムコレクターのディストリビューションをビルドするために使用されます。
167+
(たとえば、Kubernetesのような)コンテナオーケストレーターにカスタムコレクターのディストリビューションをビルドしてデプロイしたい場合は、このステップをスキップして[ステップ 3b](#step-3b---containerize-your-collectors-distribution)に進んでください。
168+
169+
{{% /alert %}}
170+
171+
必要なのは`ocb`に仕事をさせることだけなので、ターミナルに移動して次のコマンドを入力します。
172+
173+
```cmd
174+
./ocb --config builder-config.yaml
175+
```
176+
177+
すべてが順調に進んだ場合、コマンドの出力は次のようになります。
178+
179+
```nocode
180+
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"}
181+
2022-06-13T14:25:03.039-0500 INFO internal/command.go:108 Using config file {"path": "builder-config.yaml"}
182+
2022-06-13T14:25:03.040-0500 INFO builder/config.go:99 Using go {"go-executable": "/usr/local/go/bin/go"}
183+
2022-06-13T14:25:03.041-0500 INFO builder/main.go:76 Sources created {"path": "./otelcol-dev"}
184+
2022-06-13T14:25:03.445-0500 INFO builder/main.go:108 Getting go modules
185+
2022-06-13T14:25:04.675-0500 INFO builder/main.go:87 Compiling
186+
2022-06-13T14:25:17.259-0500 INFO builder/main.go:94 Compiled {"binary": "./otelcol-dev/otelcol-dev"}
187+
```
188+
189+
設定ファイルの`dist`セクションで定義されているように、現在コレクターのディストリビューションのソースコードとバイナリを含む`otelcol-dev`という名前のフォルダがあります。
190+
191+
フォルダ構成は次のようになります。
192+
193+
```console
194+
.
195+
├── builder-config.yaml
196+
├── ocb
197+
└── otelcol-dev
198+
├── components.go
199+
├── components_test.go
200+
├── go.mod
201+
├── go.sum
202+
├── main.go
203+
├── main_others.go
204+
├── main_windows.go
205+
└── otelcol-dev
206+
```
207+
208+
生成されたコードを使用して、コンポーネント開発プロジェクトをブートストラップし、コンポーネントを使用してコレクターのディストリビューションを簡単にビルドおよび配布できるようになりました。
209+
210+
## ステップ 3b - コレクターのディストリビューションをコンテナ化する {#step-3b---containerize-your-collectors-distribution}
211+
212+
{{% alert color="primary" title="注意" %}}
213+
214+
このステップでは、`Dockerfile`内でコレクターのディストリビューションをビルドします。
215+
(たとえば、Kubernetesのような)コンテナオーケストレーターにコレクターのディストリビューションをデプロイする必要がある場合は、このステップに従ってください。
216+
コンテナ化せずにコレクターのディストリビューションのみをビルドしたい場合は、[ステップ 3a](#step-3a---generate-the-code-and-build-your-collectors-distribution)に進んでください。
217+
218+
{{% /alert %}}
219+
220+
プロジェクトに次の2つの新しいファイルを追加する必要があります。
221+
222+
- `Dockerfile` - コレクターのディストリビューションのコンテナイメージ定義
223+
- `collector-config.yaml` - ディストリビューションをテストするための最小限のコレクター構成YAML
224+
225+
これらのファイルを追加した後、ファイルは次のようになります。
226+
227+
```console
228+
.
229+
├── builder-config.yaml
230+
├── collector-config.yaml
231+
└── Dockerfile
232+
```
233+
234+
次の`Dockerfile`は、コレクターのディストリビューションをインプレースでビルドし、結果として得られるコレクターのディストリビューションバイナリがターゲットのコンテナアーキテクチャ(たとえば、`linux/arm64`、`linux/amd64`)と一致することを保証します。
235+
236+
<!-- prettier-ignore-start -->
237+
```yaml
238+
FROM alpine:3.19 AS certs
239+
RUN apk --update add ca-certificates
240+
241+
FROM golang:1.25.0 AS build-stage
242+
WORKDIR /build
243+
244+
COPY ./builder-config.yaml builder-config.yaml
245+
246+
RUN --mount=type=cache,target=/root/.cache/go-build GO111MODULE=on go install go.opentelemetry.io/collector/cmd/builder@{{% version-from-registry collector-builder %}}
247+
RUN --mount=type=cache,target=/root/.cache/go-build builder --config builder-config.yaml
248+
249+
FROM gcr.io/distroless/base:latest
250+
251+
ARG USER_UID=10001
252+
USER ${USER_UID}
253+
254+
COPY ./collector-config.yaml /otelcol/collector-config.yaml
255+
COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
256+
COPY --chmod=755 --from=build-stage /build/otelcol-dev /otelcol
257+
258+
ENTRYPOINT ["/otelcol/otelcol-dev"]
259+
CMD ["--config", "/otelcol/collector-config.yaml"]
260+
261+
EXPOSE 4317 4318 12001
262+
```
263+
<!-- prettier-ignore-end -->
264+
265+
最小限の`collector-config.yaml`定義は次のとおりです。
266+
267+
```yaml
268+
receivers:
269+
otlp:
270+
protocols:
271+
grpc:
272+
endpoint: 0.0.0.0:4317
273+
http:
274+
endpoint: 0.0.0.0:4318
275+
276+
exporters:
277+
debug:
278+
verbosity: detailed
279+
280+
service:
281+
pipelines:
282+
traces:
283+
receivers: [otlp]
284+
exporters: [debug]
285+
metrics:
286+
receivers: [otlp]
287+
exporters: [debug]
288+
logs:
289+
receivers: [otlp]
290+
exporters: [debug]
291+
```
292+
293+
次のコマンドを使用して、`linux/amd64`と`linux/arm64`をターゲットビルドアーキテクチャとして使用して、OCBのマルチアーキテクチャDockerイメージをビルドします。
294+
より詳しくは、マルチアーキテクチャビルドに関するこの[ブログ記事](https://blog.jaimyn.dev/how-to-build-multi-architecture-docker-images-on-an-m1-mac/)をご覧ください。
295+
296+
```bash
297+
# Dockerマルチアーキテクチャビルドを有効にする
298+
docker run --rm --privileged tonistiigi/binfmt --install all
299+
docker buildx create --name mybuilder --use
300+
301+
# DockerイメージをLinux AMDおよびARMとしてビルドし、ビルド結果を「docker images」にロードします
302+
docker buildx build --load \
303+
-t <collector_distribution_image_name>:<version> \
304+
--platform=linux/amd64,linux/arm64 .
305+
306+
# 新たにビルドされたイメージをテストします
307+
docker run -it --rm -p 4317:4317 -p 4318:4318 \
308+
--name otelcol <collector_distribution_image_name>:<version>
309+
```
310+
311+
## さらなる学びのために {#further-reading}
312+
313+
- [トレースレシーバーをビルドする](/docs/collector/building/receiver)
314+
- [コネクターをビルドする](/docs/collector/building/connector)
315+
316+
[ocb]: https://github.com/open-telemetry/opentelemetry-collector/tree/main/cmd/builder
317+
[tags]: https://github.com/open-telemetry/opentelemetry-collector-releases/tags

0 commit comments

Comments
 (0)