<article class=“article fmt article-content”><p></p><p>OpenTelemetry Collector 有两个官网发行版:Core 和 Contrib。</p><ul><li>Core 发行版是 Collector 的根底发行版,供 OTel 开发人员进行开发和测试。它蕴含一组根本的扩大、连接器、接收器、处理器和导出器。</li><li>Contrib 发行版供非 OTel 开发人员进行试验和学习。它还扩大了 Core 发行版,并蕴含由第三方(包含供应商和集体社区成员)创立的组件,这些组件对整个 OpenTelemetry 社区十分有用。在之前的文章 《应用 OpenTelemetry 和 Loki 实现高效的利用日志采集和剖析》 我用的就是这个发行版。</li></ul><p>不论 Core 还是 Contrib 都不应该成为你生产工作负载的一部分。仅仅应用 Core 自身太过简略,无奈满足组织的需要(只管它提供的组件都是必须的);尽管 Contrib 中提供的组件足够全面,然而并不是说每个组件都是你所须要的,太多冗余的组件显得过于臃肿,还增大的攻击面。</p><p>那如何抉择你所需的发行版呢?答案就是构建本人的发行版。能够应用官网提供的名为 OpenTelemetry Collector Builder (OCB) 的工具来自定义附件。</p><h3>装置 OCB</h3><p>ocb 是个简略的 CLI,反对 Window/Linux/macOS 以及 x86 和 arm64 平台。咱们能够从 release 页面 下载 ocb 的 binary。</p><pre><code class=“sh”>curl -o ocb -sL https://github.com/open-telemetry/opentelemetry-collector/releases/download/cmd%2Fbuilder%2Fv0.95.0/ocb_0.95.0_linux_amd64chmod +x ocb</code></pre><p>能够通过 <code>./ocb help</code> 查看应用办法。</p><p>还能够通过 <code>go install</code> 来装置。</p><pre><code>go install go.opentelemetry.io/collector/cmd/builder@latest</code></pre><p>要构建本人的发行版,须要应用上面的命令,通过 <code>–config</code> 指定配置文件,也就是上面要介绍的构建清单。</p><pre><code class=“sh”>./ocb –config=builder-config.yaml</code></pre><p>如果不提供,会应用 默认的清单文件。既然咱们是要构建本人的发行版,那接来看看如何配置构建清单。</p><h3>构建清单</h3><p>构建清单是对 OpenTelemetry Collector 的形容,通常蕴含如下几个局部:</p><ul><li><code> dist</code>:发行版的根本信息</li><li><code>receivers</code>:集成的 receiver 列表</li><li><code>exporters</code>:集成的 exporter 列表</li><li><code>extensions</code>:集成的 extension 列表</li><li><code>processors</code>:集成的 processor 列表</li><li><code>connectors</code>:集成的 receiver 列表</li></ul><p>从 GitHub 仓库中能够找到 core 发行版的构建清单,咱们能够基于该版本进行裁剪(去掉 replace 的局部)。</p><pre><code class=“yaml”>dist: module: go.opentelemetry.io/collector/cmd/otelcorecol name: otelcorecol description: Local OpenTelemetry Collector binary, testing only. version: 0.95.0-dev otelcol_version: 0.95.0 output_path: /tmp/distexporters: - gomod: go.opentelemetry.io/collector/exporter/debugexporter v0.95.0 - gomod: go.opentelemetry.io/collector/exporter/loggingexporter v0.95.0 - gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.95.0 - gomod: go.opentelemetry.io/collector/exporter/otlphttpexporter v0.95.0extensions: - gomod: go.opentelemetry.io/collector/extension/ballastextension v0.95.0 - gomod: go.opentelemetry.io/collector/extension/memorylimiterextension v0.95.0 - gomod: go.opentelemetry.io/collector/extension/zpagesextension v0.95.0processors: - gomod: go.opentelemetry.io/collector/processor/batchprocessor v0.95.0 - gomod: go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.95.0connectors: - gomod: go.opentelemetry.io/collector/connector/forwardconnector v0.95.0</code></pre><p>当初为 结尾提到的文章 构建 OpenTelemetry Collector 发行版,在 <code>exporters</code> 中增加 <code>lokiexporter</code>。在 contrib 仓库 中能够找到更多的组件。</p><pre><code class=“sh”>dist: module: go.opentelemetry.io/collector/cmd/otelcorecol name: otelcorecol description: Local OpenTelemetry Collector binary, testing only. version: 0.95.0-dev otelcol_version: 0.95.0 output_path: /tmp/distreceivers: - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.95.0exporters: - gomod: go.opentelemetry.io/collector/exporter/debugexporter v0.95.0 - gomod: go.opentelemetry.io/collector/exporter/loggingexporter v0.95.0 - gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.95.0 - gomod: go.opentelemetry.io/collector/exporter/otlphttpexporter v0.95.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/lokiexporter v0.95.0extensions: - gomod: go.opentelemetry.io/collector/extension/ballastextension v0.95.0 - gomod: go.opentelemetry.io/collector/extension/memorylimiterextension v0.95.0 - gomod: go.opentelemetry.io/collector/extension/zpagesextension v0.95.0processors: - gomod: go.opentelemetry.io/collector/processor/batchprocessor v0.95.0 - gomod: go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.95.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.95.0connectors: - gomod: go.opentelemetry.io/collector/connector/forwardconnector v0.95.0</code></pre><p>这样就筹备好了构建清单,执行上面的命令,而后在 <code>dist.output_path</code> 指定的目录中能够到找构建好的二进制文件。</p><pre><code class=“shell”>./ocb –config=builder-config.yaml</code></pre><h3>构建镜像</h3><p>通过下面的办法来构建 collector 的二进制文件,进一步再构建容器镜像。</p><pre><code class=“Dockerfile”>FROM golang:1.21 as buildARG OTEL_VERSION=0.95.0WORKDIR /appCOPY . .RUN go install go.opentelemetry.io/collector/cmd/builder@v${OTEL_VERSION}RUN CGO_ENABLED=0 builder –config=builder-config.yamlFROM gcr.io/distroless/base-debian11COPY –from=build /tmp/dist/otelcorecol /# 4317 - default OTLP receiver# 55678 - opencensus (tracing) receiver# 55679 - zpagesEXPOSE 4317/tcp 55678/tcp 55679/tcpCMD ["–config", “/etc/otelcol-contrib/config.yaml”]ENTRYPOINT ["/otelcorecol"]</code></pre><p>我曾经构建好了镜像 <code>addozhang/opentelemetry-collector:0.95.0</code> ,在创立 CR <code>OpenTelemetryCollector</code> 的时候,能够将镜像批改为咱们定制的镜像。</p><blockquote>关注"云原生指北"公众号<br/><br/>(转载本站文章请注明作者和出处盛世浮生,请勿用于任何商业用途)</blockquote></article>