Skip to content

Commit 528c02e

Browse files
committed
[ja] docs(i18n): Translate content/en/docs/collector/custom-collector.md
1 parent b3b1203 commit 528c02e

File tree

1 file changed

+318
-0
lines changed

1 file changed

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

0 commit comments

Comments
 (0)