From 5522f58ddd553517852021cf15f70ed1c128134e Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Wed, 18 Sep 2024 14:47:59 +0200 Subject: [PATCH 1/8] Add minimal OTLP-only distribution --- .github/workflows/ci-goreleaser-minimal.yaml | 33 +++ .github/workflows/release-minimal.yaml | 16 ++ Makefile | 2 +- README.md | 1 + .../otelcol-minimal/.goreleaser.yaml | 248 ++++++++++++++++++ distributions/otelcol-minimal/Dockerfile | 13 + distributions/otelcol-minimal/README.md | 15 ++ distributions/otelcol-minimal/manifest.yaml | 18 ++ .../otelcol-minimal/opentelemetry.ico | Bin 0 -> 275598 bytes .../otelcol-minimal/otelcol-minimal.conf | 5 + .../otelcol-minimal/otelcol-minimal.service | 15 ++ distributions/otelcol-minimal/postinstall.sh | 24 ++ distributions/otelcol-minimal/preinstall.sh | 17 ++ distributions/otelcol-minimal/preremove.sh | 20 ++ .../otelcol-minimal/windows-installer.wxs | 84 ++++++ 15 files changed, 510 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci-goreleaser-minimal.yaml create mode 100644 .github/workflows/release-minimal.yaml create mode 100644 distributions/otelcol-minimal/.goreleaser.yaml create mode 100644 distributions/otelcol-minimal/Dockerfile create mode 100644 distributions/otelcol-minimal/README.md create mode 100644 distributions/otelcol-minimal/manifest.yaml create mode 100644 distributions/otelcol-minimal/opentelemetry.ico create mode 100644 distributions/otelcol-minimal/otelcol-minimal.conf create mode 100644 distributions/otelcol-minimal/otelcol-minimal.service create mode 100755 distributions/otelcol-minimal/postinstall.sh create mode 100755 distributions/otelcol-minimal/preinstall.sh create mode 100755 distributions/otelcol-minimal/preremove.sh create mode 100644 distributions/otelcol-minimal/windows-installer.wxs diff --git a/.github/workflows/ci-goreleaser-minimal.yaml b/.github/workflows/ci-goreleaser-minimal.yaml new file mode 100644 index 00000000..60cf459d --- /dev/null +++ b/.github/workflows/ci-goreleaser-minimal.yaml @@ -0,0 +1,33 @@ +name: Continuous Integration - Minimal - GoReleaser + +on: + push: + branches: [main] + paths: + - "distributions/otelcol-minimal/**" + - "cmd/**" + - ".github/**" + - "scripts/**" + - "Makefile" + - "go.mod" + - "go.sum" + pull_request: + branches: [main] + paths: + - "distributions/otelcol-minimal/**" + - "cmd/**" + - ".github/**" + - "scripts/**" + - "Makefile" + - "go.mod" + - "go.sum" + +jobs: + check-goreleaser: + name: Continuous Integration - Minimal - GoReleaser + uses: ./.github/workflows/base-ci-goreleaser.yaml + with: + distribution: otelcol-minimal + goos: '[ "linux", "windows", "darwin" ]' + goarch: '[ "386", "amd64", "arm64", "ppc64le", "arm", "s390x" ]' + secrets: inherit diff --git a/.github/workflows/release-minimal.yaml b/.github/workflows/release-minimal.yaml new file mode 100644 index 00000000..d5361ff5 --- /dev/null +++ b/.github/workflows/release-minimal.yaml @@ -0,0 +1,16 @@ +name: Release Minimal + +on: + push: + tags: ["v*"] + +jobs: + release: + name: Release Minimal + uses: ./.github/workflows/base-release.yaml + with: + distribution: otelcol-minimal + goos: '[ "linux", "windows", "darwin" ]' + goarch: '[ "386", "amd64", "arm64", "ppc64le", "arm", "s390x" ]' + secrets: inherit + permissions: write-all diff --git a/Makefile b/Makefile index f473ae11..dc312adc 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ OTELCOL_BUILDER_VERSION ?= 0.109.0 OTELCOL_BUILDER_DIR ?= ${HOME}/bin OTELCOL_BUILDER ?= ${OTELCOL_BUILDER_DIR}/ocb -DISTRIBUTIONS ?= "otelcol,otelcol-contrib,otelcol-k8s" +DISTRIBUTIONS ?= "otelcol,otelcol-contrib,otelcol-k8s,otelcol-minimal" GEN_CONFIG_DISTRIBUTIONS ?= "otelcol,otelcol-contrib" ci: check build diff --git a/README.md b/README.md index bd60f11d..553ba761 100644 --- a/README.md +++ b/README.md @@ -17,3 +17,4 @@ Current list of distributions: - [OpenTelemetry Collector (also known as "otelcol")](./distributions/otelcol) - [OpenTelemetry Collector Contrib (also known as "otelcol-contrib")](./distributions/otelcol-contrib) - [OpenTelemetry Collector for Kubernetes (also known as "otelcol-k8s")](./distributions/otelcol-k8s) +- [OpenTelemetry Collector Minimal (also known as "otelcol-minimal")](./distributions/otelcol-minimal) diff --git a/distributions/otelcol-minimal/.goreleaser.yaml b/distributions/otelcol-minimal/.goreleaser.yaml new file mode 100644 index 00000000..8a1418d9 --- /dev/null +++ b/distributions/otelcol-minimal/.goreleaser.yaml @@ -0,0 +1,248 @@ +partial: + by: target +version: 2 +project_name: opentelemetry-collector-releases +env: + - COSIGN_YES=true +msi: + - id: otelcol-minimal + name: otelcol-minimal_{{ .Version }}_{{ .Os }}_{{ .MsiArch }} + wxs: windows-installer.wxs + extra_files: + - opentelemetry.ico +builds: + - id: otelcol-minimal + goos: + - darwin + - linux + - windows + goarch: + - "386" + - amd64 + - arm + - arm64 + - ppc64le + - s390x + goarm: + - "7" + ignore: + - goos: darwin + goarch: "386" + - goos: darwin + goarch: arm + - goos: darwin + goarch: s390x + - goos: windows + goarch: arm + - goos: windows + goarch: arm64 + - goos: windows + goarch: s390x + dir: _build + binary: otelcol-minimal + ldflags: + - -s + - -w + flags: + - -trimpath + env: + - CGO_ENABLED=0 +archives: + - id: otelcol-minimal + builds: + - otelcol-minimal + name_template: '{{ .Binary }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}{{ if .Mips }}_{{ .Mips }}{{ end }}' +nfpms: + - package_name: otelcol-minimal + contents: + - src: otelcol-minimal.service + dst: /lib/systemd/system/otelcol-minimal.service + - src: otelcol-minimal.conf + dst: /etc/otelcol-minimal/otelcol-minimal.conf + type: config|noreplace + scripts: + preinstall: preinstall.sh + postinstall: postinstall.sh + preremove: preremove.sh + overrides: + rpm: + dependencies: + - /bin/sh + id: otelcol-minimal + builds: + - otelcol-minimal + formats: + - deb + - rpm + maintainer: The OpenTelemetry Collector maintainers + description: OpenTelemetry Collector - otelcol-minimal + license: Apache 2.0 +checksum: + name_template: '{{ .ProjectName }}_otelcol-minimal_checksums.txt' +dockers: + - goos: linux + goarch: "386" + dockerfile: Dockerfile + image_templates: + - otel/opentelemetry-collector-minimal:{{ .Version }}-386 + - otel/opentelemetry-collector-minimal:latest-386 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-386 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-386 + build_flag_templates: + - --pull + - --platform=linux/386 + - --label=org.opencontainers.image.created={{.Date}} + - --label=org.opencontainers.image.name={{.ProjectName}} + - --label=org.opencontainers.image.revision={{.FullCommit}} + - --label=org.opencontainers.image.version={{.Version}} + - --label=org.opencontainers.image.source={{.GitURL}} + - --label=org.opencontainers.image.licenses=Apache-2.0 + use: buildx + - goos: linux + goarch: amd64 + dockerfile: Dockerfile + image_templates: + - otel/opentelemetry-collector-minimal:{{ .Version }}-amd64 + - otel/opentelemetry-collector-minimal:latest-amd64 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-amd64 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-amd64 + build_flag_templates: + - --pull + - --platform=linux/amd64 + - --label=org.opencontainers.image.created={{.Date}} + - --label=org.opencontainers.image.name={{.ProjectName}} + - --label=org.opencontainers.image.revision={{.FullCommit}} + - --label=org.opencontainers.image.version={{.Version}} + - --label=org.opencontainers.image.source={{.GitURL}} + - --label=org.opencontainers.image.licenses=Apache-2.0 + use: buildx + - goos: linux + goarch: arm + goarm: "7" + dockerfile: Dockerfile + image_templates: + - otel/opentelemetry-collector-minimal:{{ .Version }}-armv7 + - otel/opentelemetry-collector-minimal:latest-armv7 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-armv7 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-armv7 + build_flag_templates: + - --pull + - --platform=linux/arm/v7 + - --label=org.opencontainers.image.created={{.Date}} + - --label=org.opencontainers.image.name={{.ProjectName}} + - --label=org.opencontainers.image.revision={{.FullCommit}} + - --label=org.opencontainers.image.version={{.Version}} + - --label=org.opencontainers.image.source={{.GitURL}} + - --label=org.opencontainers.image.licenses=Apache-2.0 + use: buildx + - goos: linux + goarch: arm64 + dockerfile: Dockerfile + image_templates: + - otel/opentelemetry-collector-minimal:{{ .Version }}-arm64 + - otel/opentelemetry-collector-minimal:latest-arm64 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-arm64 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-arm64 + build_flag_templates: + - --pull + - --platform=linux/arm64 + - --label=org.opencontainers.image.created={{.Date}} + - --label=org.opencontainers.image.name={{.ProjectName}} + - --label=org.opencontainers.image.revision={{.FullCommit}} + - --label=org.opencontainers.image.version={{.Version}} + - --label=org.opencontainers.image.source={{.GitURL}} + - --label=org.opencontainers.image.licenses=Apache-2.0 + use: buildx + - goos: linux + goarch: ppc64le + dockerfile: Dockerfile + image_templates: + - otel/opentelemetry-collector-minimal:{{ .Version }}-ppc64le + - otel/opentelemetry-collector-minimal:latest-ppc64le + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-ppc64le + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-ppc64le + build_flag_templates: + - --pull + - --platform=linux/ppc64le + - --label=org.opencontainers.image.created={{.Date}} + - --label=org.opencontainers.image.name={{.ProjectName}} + - --label=org.opencontainers.image.revision={{.FullCommit}} + - --label=org.opencontainers.image.version={{.Version}} + - --label=org.opencontainers.image.source={{.GitURL}} + - --label=org.opencontainers.image.licenses=Apache-2.0 + use: buildx + - goos: linux + goarch: s390x + dockerfile: Dockerfile + image_templates: + - otel/opentelemetry-collector-minimal:{{ .Version }}-s390x + - otel/opentelemetry-collector-minimal:latest-s390x + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-s390x + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-s390x + build_flag_templates: + - --pull + - --platform=linux/s390x + - --label=org.opencontainers.image.created={{.Date}} + - --label=org.opencontainers.image.name={{.ProjectName}} + - --label=org.opencontainers.image.revision={{.FullCommit}} + - --label=org.opencontainers.image.version={{.Version}} + - --label=org.opencontainers.image.source={{.GitURL}} + - --label=org.opencontainers.image.licenses=Apache-2.0 + use: buildx +docker_manifests: + - name_template: otel/opentelemetry-collector-minimal:{{ .Version }} + image_templates: + - otel/opentelemetry-collector-minimal:{{ .Version }}-386 + - otel/opentelemetry-collector-minimal:{{ .Version }}-amd64 + - otel/opentelemetry-collector-minimal:{{ .Version }}-armv7 + - otel/opentelemetry-collector-minimal:{{ .Version }}-arm64 + - otel/opentelemetry-collector-minimal:{{ .Version }}-ppc64le + - otel/opentelemetry-collector-minimal:{{ .Version }}-s390x + - name_template: otel/opentelemetry-collector-minimal:latest + image_templates: + - otel/opentelemetry-collector-minimal:latest-386 + - otel/opentelemetry-collector-minimal:latest-amd64 + - otel/opentelemetry-collector-minimal:latest-armv7 + - otel/opentelemetry-collector-minimal:latest-arm64 + - otel/opentelemetry-collector-minimal:latest-ppc64le + - otel/opentelemetry-collector-minimal:latest-s390x + - name_template: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }} + image_templates: + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-386 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-amd64 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-armv7 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-arm64 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-ppc64le + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-s390x + - name_template: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest + image_templates: + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-386 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-amd64 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-armv7 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-arm64 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-ppc64le + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-s390x +signs: + - cmd: cosign + args: + - sign-blob + - --output-signature + - ${artifact}.sig + - --output-certificate + - ${artifact}.pem + - ${artifact} + signature: ${artifact}.sig + artifacts: all + certificate: ${artifact}.pem +docker_signs: + - args: + - sign + - ${artifact} + artifacts: all +sboms: + - id: archive + artifacts: archive + - id: package + artifacts: package +monorepo: + tag_prefix: v diff --git a/distributions/otelcol-minimal/Dockerfile b/distributions/otelcol-minimal/Dockerfile new file mode 100644 index 00000000..050870b5 --- /dev/null +++ b/distributions/otelcol-minimal/Dockerfile @@ -0,0 +1,13 @@ +FROM alpine:3.19 as certs +RUN apk --update add ca-certificates + +FROM scratch + +ARG USER_UID=10001 +USER ${USER_UID} + +COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt +COPY --chmod=755 otelcol-minimal /otelcol-minimal +ENTRYPOINT ["/otelcol-minimal"] +CMD ["--config", "/etc/otelcol-minimal/config.yaml"] +EXPOSE 4317 55678 55679 diff --git a/distributions/otelcol-minimal/README.md b/distributions/otelcol-minimal/README.md new file mode 100644 index 00000000..3cd63e44 --- /dev/null +++ b/distributions/otelcol-minimal/README.md @@ -0,0 +1,15 @@ +# OpenTelemetry Collector Minimal Distro + +This distribution only contains the receiver and exporters for the OpenTelemetry Protocol (OTLP), supporting both gRPC and HTTP transport. + +## Usage note + +This distribution does not provide a default configuration file. + +## Components + +The full list of components is available in the [manifest](manifest.yaml) + +### Rules for Component Inclusion + +- Only `otlpreceiver`, `otlpexporter`, and `otlphttpexporter` are allowed. diff --git a/distributions/otelcol-minimal/manifest.yaml b/distributions/otelcol-minimal/manifest.yaml new file mode 100644 index 00000000..d420872a --- /dev/null +++ b/distributions/otelcol-minimal/manifest.yaml @@ -0,0 +1,18 @@ +dist: + module: github.com/open-telemetry/opentelemetry-collector-releases/minimal + name: otelcol-minimal + description: OpenTelemetry Collector Minimal + version: 0.109.0 + output_path: ./_build + otelcol_version: 0.109.0 + +exporters: + - gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.109.0 + - gomod: go.opentelemetry.io/collector/exporter/otlphttpexporter v0.109.0 + +receivers: + - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.109.0 + +providers: + - gomod: go.opentelemetry.io/collector/confmap/provider/envprovider v1.15.0 + - gomod: go.opentelemetry.io/collector/confmap/provider/fileprovider v1.15.0 diff --git a/distributions/otelcol-minimal/opentelemetry.ico b/distributions/otelcol-minimal/opentelemetry.ico new file mode 100644 index 0000000000000000000000000000000000000000..9bdd4cf54e47f7fc7689dd285742eeff87ef9fd3 GIT binary patch literal 275598 zcmeHw37lM2mHz82gs=sNkt|i!-C!70MnMCzIsdeRBb_y5j)_g1~CepUUdx~lrU zs`GxoTd%6ld-tC6-TU2r(X<9_ws!Er8t%>7g|js6lbWV2SYZ7A=3Gtt3I1ztHhu^3 z+-V1C+A+t--$!WL8;zQlNEp9kZ_d>I{ZvhRH~he(@X`1mH%)^-M;vN6@f#oST=k^p z4M)%MhNA!K>rc$`^~IIQ)?K_CjQknz@ACG>4#jV6K@XI%dEvc(5$^^gNl!Tbxu1Oc zg!%nl?cU(3R&D$Gm6Q77?Muw`^+x9}>`i>m|IJ`WzrXe2K7ZRU;KzG={cW12>za4# zc!PKIxJJ(E+P3Or+Tf~>Ex@}E;T@eE`7zMd*0i8E`4Q;%eYi`#;n;p~6TCoJ8k~pT z$-LkCM&L`=u3Q*SY{9!-aD8xRz-ii`p5@2jx|JH~N;<=jM~(1X-}vfPH+&rLZ^Jt) z;Wm0hv9rbdS#KLZww<5l$7Ap#(c9Jj>G^%Bm9XJnPdIkXCD;9+QE$>3wyf!}@IlkI zoAu~wKfk}L?VJJsirY7?J?moV_4Ph~>reZ-+L!krZU$DjTlztN_H_wcPKFLIkS%5h zjDsis@VAZ7=fl3<_&&LwJn;F`@V>zFB)qpf>)p;3zY2UQ(C!JvdcDEO8^GdAx$o0& zvhUu1UQT$PhWGzOe)NlXuWbXKA-t;#7m7Y?^}g8;=(22}b47^4&3X5Jqy?}q|0Qrn z`up&m|KpQ7t8jPW-R698Y4(wx0jE9;eP5G0Q@G+?@0O(bQOobX-k3(bCamBd#=HL@ z{2Vmiy%|Yy9^6d0h9ONGo@cn-xbK;xX)!o@l3WT7k7@d~aM#1#Xyh}uPJ> z+6h_U-4~xvdV52WHxb^m3;UACZC`cjiQsFHxblOuPSduYUwRlmVBy=0v#mA^-X+{QfK4f64pxzJVml zqQYSyF14_cznw<IcCcQ=Pe4}*Wt!CmOR_iYXLwQ$d)d^y67|D?b+q>~L6VIaJxzIW*bK9uFR!cVFf z48pwx_kGX6_&%P#u}Sq;4+uMuUMSrtJ8=I!;{HhOr}{w)`jVF{3MV$q?@L~G;t!u% zub}ObsOYE zkR5|~(x}X~du?5_QiE$4T)T1>-ai&L{94BQUfllz_ZD1={sR}EL>hb-^w558Hvl|G zpIL~Jc;oBN|;#c9gM`__jM?%_Ot6hJxBFosvjebEZ%Y6DN7CyzLCLOVPg1w zJ^Y?qYB@;x<--2NyC&dW2EX^a<2A~6$XzPSRHJTG2EPfTIsFlh>OM%{9)z(~hCy*j zc$bU``K>M=>hY9cA{@$3x5Ish;?fH5$59Ww5pE{jjBeBy;D(p#+Ma{EwcXlMZ4X>* z#!}R?mZF}u6!okoxOti$Xn;dqYZz`f+#a|X{!7k;n*)buQca@0*Q{w;3mmm0#f1i7 zZas|t_dbNS5MkdJKMMDqu%XL`--m1*G2W}-r}rla8<-*NBM|lw>LLmJzL>)Q`}^Li zV918ol-H%hCazG~)E7Ta=(K(E`t(#4l$ie{E6sH-`g7>uE4KZw{Iz?hv_|nQFb_q4VG92h{PzKBuOnYu3U}JJwH>p!=4q?i z4bSR1?~Zi(C(M5i_bT#P5 z1yrXV_Vp#^Axw&oCHVb1+*WUIVzvkQXt5WiEsEcKIw1VFcdYu@2?q`8R2O&^ZilaL zYz~!ka7W_z%W&w^h|eh{eA0Ik9mY`~_iMk==OCP&z&c`E^fk{L=^Q(C6)3b?U*JS9kn9@#%p}OK)G3{wglu*F~`V1>85F z-FgW8UySdc-LdM_qxKxP?`+g!8lG9+ydT>6{{;QELAGV{nhqbep@*)Vq7LZmK>yh+ zg!wMG1K{uB2t)MGB0c^Y?h&{F==T`zY3@RYZFtr@fcH0E@xduY$F55{ME+n7TXC|` z9Xi}PbiqpP#Z>Ji%Clrw2UURDAxp8Erb0fBV9}P@(X0WC=X~#WTM>NO>jY4R;`& ztZaHfZ}1J+Z+jDPGW~i`6>Ux``we~@98+Pcy9&Ge*JTZxbXe3gibg2fzBDeT z!ZY7x*iAS5uIyn`_zS~m+Z%Ns8W(#xO9vVDVcoy2NZ1rUU6hwLKMD-MDd_NLna@2h z()l&z$J_`t`;&BNdRT9ud<{DM0%3pRofIzx()o+JuKyhFdbkES#G|g=tn0hy==vUX zPQ)6nhilMd8o7h@BwPyLb#j4#j(&)4^g}F#@Obn^9A@-KAUUAvj0Y)M(1Y;lY52H% z9$XXLQuy8tr_;DJjTLplrTZxsTlZ7ok@STzEE-#&cE=5HccR_o_4T7ny*rYA#;IR? z1JHfT*nx%<$7QIA1O|>yZ+Cy z`kQdi=pKrWL-#8W`_`+PXIpXgp=ugxsk_Q!!_jAv_LnvO%ilDwLv8SG9-Eg=?@Dj; zJsf?GZ1CNReqaaMAo7_|ByN-~(Xp&DM%h6&^uS6T08jt8~9p>8{#oW*fF$kbk~V zwM<(WOlk{*==&W=?&lpCoBh4ZF3zj_L>pFWPuxW{7iU~Fw@9X$3AiiW)!iHq_kZrR zv;hk@C$xip20Z#OH=-{={m@P5LpS{(co2ErvvAMh`y=>oJ?uCL_GtgmJN3CaX~6Jh7=7SjV}9EeNblqM z^tJjQ_TGmvjk&A7(@%Bu1Hd7gBN3aBr-h;k%*FU2>WBwVHlM_-o1O1JIq!5Wv|7y1 z`-+v0h5kbv+&8$oZPu}O|B?EAFNW?3p*yvI!m*8T_u{|jr9Daf{z7ADMDz5Nua5rw znl79d9dw*HtL75Z3FsgBgnH(yZpL4DD8g$`oAvqzX5lR z#($x!9J7yKEo8yyUOacQ54LG#<}qP5cu}iu8;I-R@2VTV_*KGx5%l`4)c;A0#WWF5 z4gKRJ`>Bvoe$8g;pniDXU5ke z9X*Ku$E9um?(I*`B)ckkJ$UsgwroKE{~ypNeZ-~L|A6xTM(AZ8N2jrD^LX~-h?65I zUS=Hf?MkXI{NA=+^h*}xgGfUd=c74*O(F2KFMc>|xD)B+FL227h5IZ1y9eW$@Ame` zw8mh0^PWOL3{Jvn%Bz5XBaI9Exa$+(G3NC4kL`oBa}?a^aA&~1&pVKq^QoJ6P`^2i z-yDT{%3QcYL6=Q7c(FC7rS76WjWM~Ngu3pIKW2UjRFCoo6 zkLRw&ysmvJF%KXeu<6T=%fRU_G5&>dto9qoL0>P%AZXs@{`mbZ%1@!&Q_%6N_(%mS=!>+2P4P?$k(D#vbD;plUpre7Xle&Ks`ozs;Gk!{VnHq*wr8J{|0e*@@3;hq7g3riM)w$WzX9!|{VSz^+J^Pkd{DYi z%GHUulkVSu?)#z5Q%UuO-x)r%6Q@Plfc)LaBkgik*+6|TRn%R9LvveEFP=kn0+g#a zQrYyiE4z#1>NM%DY%t%cJ%Dnx*z{htG-K8^_q){Heje!{+&$=@I`Aos`y2I{Or1cb z@7z1hot=jCo{PEqjrt??olw8Y|H?iIwH9RJ-9fnL=>JZtM;6rIfx43oG-tOFX-L$8 zQIE8=!J)dR;{bJD-zL=GQTL*{aFz`Y*F9sy7;G3(@$ihW!KlwrouDe^s?w#@JGGw{ z-Sr0LMIQyH`;gCk8M+_frMWsqTrtcRqApXKHAMH_@;*#I@jD=YVMr9zb_&V9xX6uFZs3_>I{}OSA4X;3Yjbqfy+4<$d>z1H|t= zQjWD);=N>p;ZLeznAX(m`i!M>#Qp1HZN08Pfr(M{{~meYtu@?Czj4PJd%Dk6w=6$?(|pUSWNv7SLx*P=fv= z8DES5Bj9cXOgvuD6K%$L;s5h)iY{#mM-NLIW_l+5AAey47y;)afa&O}4EJpuS>_2w zXl-!9H=yg}uvV7lnqaNvs4=0Bp4W<7Pvm?MSVKmjh7mAv+|x69ed9K8dyC+o5l#Z76IZoIzLE%l-D;k?j(L=jXdp<5Hiot65nZE z#aPoW@yzAI<{=%sl=8(0FanN6AeZAi1b>OknfaHwV@@=ul-46*e=n5li-c`lt~)l0 zS+P1tpfrvfm#W^sxS*3bJ zpnM#s`nqVJV~qU@0VTK3>oG;K%}zt0oE)eA_Hdla^wIhE?!~EpxB`KRb7Y-{0qesE z)G`9)7-2di=RKPmcG6I$2 zIOfF)*u)$vYm$?;H>+T-I!dpv5C zZoV@DRY#!w95?2@(c1H#Xh7J* zWqH-3l>=l1(g;+BbfQU4o-#}^~O2viS&%5ofMQ5);d8;v!q%=PNU zEQiDh7zk9FL$C>Mu zjd}LHUJ!6T$C>N(k`~#{${;`-m**c~?&(c(KH6kwC@9`d$DPO5E0Yq~*IGuvT^v{W z3Uj@d(dss*Z)#xQY7qg+aXOn=oOxoLX-M2rJaWT* zBG;*YLTwSg7y(8Adn6lYm(uy;#@WO;x71x6SNV`N*ExTU9U#qhUug6OVVtb5a8xq_^^Slq6#aj+UlVvv=a8%N(axQCHBRpu@6#E^ z#pV-5g=beMu^%+faXC}OEuYg=?@65P2Lj$r(WNEuoH(8odp2S}H`?oozT-b9^x=tp z=Ag?nnF!{#dIk&rR*wiYg`a;Jbcq~QGi$WbgOP7B&+9Q^v&|C_kX-lmjDDkO z7q}imzdOz%CQidq-`tq^jdM%onTDD3&dg)fj^esep8I;DUo9ukbxmu~ab9cq?6YUm zoqkWilmB1@oQi!{QT#U{=qIomEt;U^xDYRY^ppUQ>)H}iX_t7YH5u8w#2cXb>$u&V7ngX=r? zQ|}Vr)px!#0**#tvi_>cJf~(CH5MmtKGCj|SGZ{UbdW;JQ4)z?T~kpgwrwMqtS3N2fZk_+4b(bb7cR zr?EY($$8KObH34pq_xTNu%kq32 z$!K7@2!bl>nTrYzmwVQZ8FlECQ9`x|2ArIL}-!Hf`|pwS_==x$Z=cGuLY?#j-V}B2XT#JDKCm^-|LY zzgJrbOpWVq;5c)=wo)uxQz`=axt?#o3tC4L6Kh|^*qIEtO#SL5^tmZ6Pj=__dZ}rI z->VG-i0g8UoA!F5@o!_#i%1f4ZpB&}b*H(kVxF6r10%=BozHQV2Qb%bBgL{6r6OSB zI_>p@GW!|YBSNgDq4hN6uqK7(tEcC(QdsWcICH(!w88Jy9s(xb(mpWY`xoH8MQclG z-PvNbCWS1Y>O40&2d08`b;a%6JD2OVmvY&nViA~Z{is-zBJ1o$_-!@MZ5lYPIL}-! zBJTLnT15anrm~$ltsL>6>h~pF4&yj;y@WXAR~Ugp2so7E%=JQ%#xh2r2m~C?aprmv zamkM|0#*pPgyYP0tH|U37y%myxQye>bsKTYk1zse1YF8-=DIl&`8y*}00EbCoVi{g zZdt?#5CS#Aarbha#yrE}nG?oC#lC_V6QyxdF}JC-u~AOtj6jWX+#OsObCrjT`3=R+ zYe?@aiv33UVgzg;P@^1oF4xukrJT6&{OIjNJi(EpahB!^Pfv7}CpdZm_T0S?XKt_Y zhT~^?!jTgf^+bG_>y*uHD&wilFE+2p37>z~E&?^qac6Oz_-*3o;o&#t;XIF(SbuOk z+<$t5qi=%GI-SKy=k%r5AklX^7pH%m&hv@kT;4zUf{`%tfs4H1*y60zNqkrP^kxb8 zN4+9YCmf%Cu2XqS9G4fB%P6NefU|!i{)%FS$dXtLuM2S=`9!At_w^-3 z-2mKw&KDd#J)J@)TfdlokiXOt0_Jm4=nREA;<(C7D$8{m8B-yNN(qIA^o$sPFPXDg&DJ=zDtf%846DSOzgF3@SDn6D?V2Gzc{rO&_AC*Kix;j z7Up_UG3v^PRas7F6Vth+VdLz=LOiGknczCkX%%NTmV9ob$xm9=V9@OFZ{S3Ue&sa03B*+ z!5DNAmua6p@cIb{aa{2|N#pY57KI`wlVwZp_+@$=pa@I(QHLX->g;`89q&fJn>cq| z-6uK2)Xaxk{GOt7*-^*Y+rPH8iJ~zODEf?gF+UA`Y`wCs?u2q&aa`S#)E|$&xsgTT zXroB3roIG+Ctp_2CIYIDy}zsDI8l~&)@9$@#C!_Zgv|bm++cPM~;J z`Jt^im*t@+JaUXN=S7TVPi0IzCCA-p?2Y=&ssE1rGtZBkYM)+Q);Vq>8@c{&E2drZ zkZPX~uJ70nJpT)~&jrVm+t#ks!<}tUQ$#9^Y)7gr3&F!DX-+!srH+k*%Q!a&<8O`I zG|#$gBNq$jX8A0eN|4|zZ>&v#)ZER-YfxE~pH z)z*Y6+w1h6FvcC)zDDtP$NDAq`=-Qt5l!>me5I87!IcC4P<>eegdQPHZ^YC^Nw@^qdGMC zPrRe=%F%x^T=gu<_jQz4&^%YV!`ZLDBX5v%?T3YbruDMQf4;jL0X1&ahq)oU))Uv; z>aYHee)gTBpS|@*6q_plvlX-EcDa~uR#bUP98Xc3TdXaU0WSF^*0tFh&qG~;_%3>Ueb@^B1`MAY$o!jZQBHW!1QGb)_bHaGit#!$DIiA+i@@!Id4YY-EQC9xTy1oqJPZngE2LI$S%H|g#gXvu2Zh3`e_cFzje>1fA08uiWODA znKXvdb@tIGjWr^6>+I2_Z$Px8f1eJcOmkGyTn|RCHS!*e(b;dSr+mF*dSiHWiO@^d zSJFE2mzqGJ9=T3^a9h``q<)Ft6cveb{0VjTMHuHAr9GUet!;}_81tt3I?CNMDa^9Y zPm%eBTqpOEtiRjr|Bo7V_nydQ0*jo!zM}BqhaHVTy>T7m3uD{QKV8S#++7qgw(IP& ztXqWf?4rtYjJX;8WTP@)DSzEqtvB_BMz1NdOqXMOk$XiVWu7~lt5a33uDCAy+QIh? zgq!WYcF6&h$(PBtx!wM4qs$CNyD7Y~mgVFjU9zsRDE#)3axW>hr_^L)ZAmeguP5>! z!k;p=C4^u6;YbAPhU?VVj`jDbw||==!ggP~>VpeK{q@+rCQJ70Yw9$2ZFPF?P!Hlq^M&Fu$@7_Zzs-N(jKb(R<&2v4&^DhzRws|hgVeouV z%w@B;rz6I$#Q6%l7vJ_ru_t52&QVb9icsX+MbtO2MlMQq`}l&MH=9Ko~E|1Q~E zEYE$l*xw$EyukhKR;j&2$=Wl&s1NO5gn{BOQG0$%gMv9!@j=f`OetS4B=eK9hQJoC)N#$}p zp3X%^SR z_C)dP)i&~aH9Kj)-kxzg*HLFr(pna*U2CJbE4Gb}ebq`>e~z_b#<{7tQ<&vke~vkD zCy2eJOId#&jQmmUPgAiuJY+Cmu0+7)To-%2qFle0z_;D!F5Bph;lz@u>?ecz^`#=x zsc)~u`Dbd~Ii0V9`bEk6$zcDgo71|8FZ{s>WFz2Wu8Z=#x2ydTvdH$@RC-v|-D%(U zsq7CIid;$F(PiupXJ`MYoc-Z8#g76{r?fvD?=fM-0e==oz@=Q5d&;!E6<)pKon#@| zQP@%`mE&u^P;`x~hZoZxR(n&7)4Ql|_jto^{ard-sxOE#-o}2f!Pt7#3z8-6_lkWl zc)!;)>ioqf0xsqH*p7ABZ^GYt7MW>#9l9p>i2xtLv**gNfBT!Bp6HippPI?wrg9&9 z)18iR9~XJd6!vcyJP(bwiZFTq_Q{}UxkSKqTt|PqvA1*ECNjZ3&*@>bt8rnU)pDN4 z62W;aJ3XP1tBK2tLT{gp`76gahGQSY+2!l8-sCRud$-sxwjAfNgd)RaL#h1(;$8lz zO9WiTbyatNGrV@0s5{#lM^`bc+UYdLmf_uG^Utj0*kcZRH==AN4%66};4;o%sO0%- z+%8uU$@fwaa23~St~<_a2(4;gN4DDTcc+JC-@9jHInPT)yIF8PN_$w)UXJ7{a9(Qc zTVz5-=HQaYeANX4F5m=#l{Dl!H z5&<`Ho#wmuceb5MCfc4eqwtVtAYptfEYB8?qYSpHpHJU^)W421meD@gOXs%;)n$D| znZb8Ppi~6hz;(=(5&Jy%cD5EjmQKK!=DC31Mn5?AVR8`HlVXp$a9jt+Pa>7MzD_9c zRZaxlz;&7jYcA7^>U$@!WZCEqzc?5CeoBt3JAvzCzTSjRXRdfRjVvcsRa=9;^Ti01 z69E@+U9D9W?R3(&X!|ACX+A2r{!>|pr#Un>&qgVGT|X}7>-9tu-kxX+*~1(!I#&6G zA`x%_*TtN7)ZZ^4)9zTmWOk7zrptAD4{hNeiuGftFN5pF&Y7D^TVC|fi?Dkl&n^nb zjwF4UzmReg^<>=+$7=bhb4&yp;JW2E2!(FXkASH{M1Dm$W;tP$tnZ~Nco)E@d^;ZQ) zG0#=>ml?b#t}E^nj}3?MZ+su8xv{EVF3N7>*&$DGq?67?PKPe%-=}}`7e-(j5pW3C zGaT!!B*;`{W27KKJTz~9^8p2YcwZ_qe5&6TI}nRqN5eMgxs&u@yN zJpY5QClc}mV;A^>v3F$!E%;sjbCr%d(=lfEdrEKk%Qk3C$Y8HVibA5U_ZWW8f z`*3)sXv-6a&5n3Y^#Fs{Wv^?X4Bv-T!W{pP^mVo0MBfG1OPMc3FZ0C+6hNR#Tz4MF z3t&=75ph|~2MU4X=!=X#e9_103=6S0B(2}0IH{x#?00=4P+_i@mE%;`b!+{W+Tlv~ zUVnS%!0L8=psSrY9^1A4Ox)XVr4-0quTLIU!|Dogy=)v8by}2#3JbUOUHx+X`t+P$ z@cKJ6X8?C{NqJ8&*H!HDy^;u&nd{}_xTzl7zqK z|4-*#$9S1}Pb~DcT?qYS#+fv&i5z|_p3|MVKAjO)M`7pVI`~EWHK)mm-;KGf#yq#| zIWXxuw_PZ$^yuqqi*3VRG}N}G_Uz`aGY(e%5#Lpwp#H1&oyu=Bzk^*J$01Mp#r-J5 z#hM-Lk2fiX%=KzVTiu42%drP8KtGX@Mpb)qBFC{$4ASs8rD@zhPvFUUZe`&({8Z&2 z>5!7)yiQ>auJ71SMHcZ)w%>~mSNT!Qo$?k6Q`OJu-SBzKkAz-7-n_a)AH=zGLU$t% zw8G8mKQ7mci3EPOWCV!oe?i2sS{*F{H?d@v2g5IeR z#|0;3-6BEdy5##`pyM_D=Pg@EVXKSyM|zaGoNrL|^4$KwaA*66!kw)fNk6eyJ-ChU zcFJ((x{5TuR~-TB=T;m+8vX?M{48;qxJBuh9DS#{G-Uscy7VceWN!Mmt9Wib!svre zm*W$;V3d&wDmP{S)+qG2uWxnRvYnqWe3u1P7H_A>~i~=dSQ7{ib@SegLeo zdmsG06#3dtggZicovfdaQ$0u4H>S#Q^*(cbs*%R;+eW|+e^q{9+f(`A6gjT=K=+jD zN1!sE&V-O-)ltZv0{=FE|DQGTs^#zRKkwrU?^?6+K;o{_nRKDL0QK?pbS-bDx;WnX zB+hybAWz!@f1acKgt)x}`H882tx(^ES;tboGuKrF@x2-dh_YR^dx`t`>a%v0DI>>o z`6J3!@Nx{i7HtdF&Y-r3;HSTh>iMq_cY8bApTYfi$P0dt`}4TJhI^dyiyg9kLU{(& z%|&@_l-tzyo_ri4yY7*zr`_Mob-Rg*pK}xf736p>cf^>!sqZjJTqUj(kBPfm*Q}Jz z_)UF$7{?=js7){?>j`2^0l#zouhwtox}#DsD>E4aRpfXf4pKdz@&Mv;uA{#4YL(T6 zbj+18*C$I{EO!I~4&it%f86w&x$cOR%u3`#fH_{aI{!qjJ8b@MzBIu9*ERyo@v?DT z)jhJfuEzaqI~B2YPDX$^UUrV>aNXFeqSUcXC#N0O%^e6Z$1BEhV~h`TgdU_d2wiO# zQ;MLmPIsgX*0NR*V2)RgpIl7iZgWneJR()RJb*@#=A0mh0lIXBziJwwBTr+u|GqnB!IFIF;$+G`A1; zm(UkCmr{dVi|3q#!J5f@!o+nD3kE!WZiHYWD-@wYxeDXA>u=)`L}r^f1{|4rvqT0O%5)gA&WU11FOn_@q? z%zkdQRAxHamN@OHgMPS+D0NM_zum-dIs+Q#O)kcH&_~mmu}6h}qv{I?C{I36dr7?R zEmCI!B8|1leUqxWF5Ai6tCns_QD;XV+)!7`zLX$KZkyA&bMh=$I#1RU9NmC(q+ftb z(mB#z<81id-k#Ar7Y6sfMopu&Pn!~T z_RbY6D4D5zx9B8ioEs@#^MppP^Yx91v*CSxNgZcL!$nebr{8o|Jn`Ps6aBIg4z=L} zGl~wAUvLEi>H7NWwv)CR`@vRn|D<~5az48S$7%m6?3uHU5{#Ywy(|-!nd8CHyPNI@ zkAsnMxP-Weh~p8I=i+YskME6m&et>gJ>e&n=_Y?H!{I+&iGXScVn5?A(4J{1Thu=5 z`O+r;U!HM>bUEIS{bnigsJJLPA(^;I_4LLag5z=U+Tb?v+uEhPJ&^=G?+Zr1FT!Q6 z7Y)A~UQlTZb@kh6-$l8<5_7pcT+WB%1df~cvMegyWN|#II8J4FK5kq6&s;AGboV{X zJg@Hf8R|<;Z>qmLo#V`PcT%_* zt$AFnzS`r8)A{aPhcAXbE_qgs*YZ4>ij?hcDaUg;&s=v2e~VEwU4Q3!ulf4OOZnfe z99NuYt`|chmpsesSjt+SyPf0Ab(iqAST%WFYT0;RD;#I87fT|SJkR?~OquJo#&PDl zOSoICn#}c*xn8RrXRa4ZB9}bRTrZmIwa#(ox=XlQteVVq+gz^~jx*PbC6P;>XRc4m z^?KvDHP^Mw{uVAt+N@>{0?hTiT(4J-XLCIiHP)}2*3RW5A^zzS1eog+xL)rZH@Hsg z*J)3Sp3!cRlzG27moPfNn#}by*O}v)_3gBm#kjA3Twl~P`T>!8!urhosfZ?q~Q#%OM5!adHg*i@KPx>~a?jDYQ)K1#rXWWHA z9dMmFJ~_vU=b|sp6O5eTt`yAL+C`v-xy~H7$MKXm6a&|zdz-@}3+$#Fe$IUe)F9WH z&)?DI3A3|X?_gK^G7v0Yn?7WceRX6 za=uqC&$WH zxa)Z3M1>v9b>=v8+=-NNtxgW)I&+*k?pi)MS#bw(ojJ}NcQRF6ubTt7&KzfsyPijG zFkl+F&KzfsyMZD#qvJGiojJ}NuNnTh$&e~?ojJ}NcM~;gPS+}MojJ}NuQ}eh(Vz-) zojJ}NcOxZgR_6+EojJ}NuUWph*|0KlojJ}NcQX}gUiW-l@AJ2%dj08h67&M!nd8jy zn&(L^7?_Xi;5Ko%5XX~{r*@owy58?^TTfWrv3|+yk}xry6^8Q%HZ<-K>#P%4YfbB| zYsIPch0h!>m>)66rc9%WpP6MTFz0#!wTcpg6cY_TU%xT|#m+UZ{j``dmYIPGtH z9o*mD>u-Mm|6MfH)v_-sH`Kx$FVME&a=fZ3m;);Yf!y*L+@HJgoVIu1zK_|T0CT)h z-vM*noLKm~BM}G$v>C+rKp-%~tRR*5^uMa(n`O4Xb6wpQO#BcdP;CTEZFkXrFFAbX zc*)T5i;RFP5MYkGBAQr9MxbN_nByfw$1gGhu0Vh}?uuw)B^iN|5nzs&3?0A72)F_P z=C~`OiIrpoN=AS=UNUt2A|v1m1eoKlh$dE&5hxh}=6K1_@r#UrD-d9gyCRxcNk*V# z1eoI`L&q;N0eo}2o#Bc z?`Hn6o0?3Z;W_44wtGSo-@ZQmwMP|w;-U(a%z(g*4+Nf%yGA*L)No`2pD~Di+AdC zP=3GQ>r1Ng+^O~NV)SB;S1{$U*DgXpj-z?QvBltd(i@EG-cU`{*_q=mN`|azg%OZ# zb5C&OXm2=9Wo0e2%bDX9PB!el%Mg&|xi1)dmp2q0tAX;IIqtF~$m&)D0i%6>RQNah zpe*0*^7c7%yc$V{!*C}8vcKKiGkRy^cGvc|GsoST`dI5~A)xEx+=hk0z3&libfX{6 zP3?5%c(u|BhvRMp)EIhC^vjJjAFe0jmNSf*&)@#N*^345dAeFUn@b>?{Orzp12sR&eu>&$Vd#y{&-KL}Ko>&)@`Nl9#}(-Ei) z*O}u^k9XFu{tzfH*O}w>mx9=0w;)g+t~1Bo65p(6{UTt+bz}Yde_R)3b#FrL7mfYlai&u^ru(+)LgooZf|}f0n#=Ktkn%r_fFlv0 z^{j&LnzpEC^aGw?vW5 zH%EFN9)4q9rZWRxz;`XAAey47ymO0XfVsD2Mq4 z{fGGl^@I5Z?SuK+kp=XF`Pv}`xH9Oi2U02qe(g#Z{P^9uklOy(B= zV3^D=0Ko9mLY^0Z;d_KUF95?WLY@}@DW8!Kpy7aczo9$N15&OHO(OqOet8##;Lj&- z(I^2FkT>jGP=3#h^9}i)ZmS@MpPnUR(62wW!BYOjT#*9&`j*Qr<MvQdl;lW)9(rg4zUN*f2LQ)Y zAXd2$$pOISq@)!~Ne%%1L`GTxK=M=znQzTflIzW6zBNmQ{1!6bnx#Vi8kuj+QX!A- zCG#x-5c1eOGT#yaAtx0{ZUKOli(JME04Wz~#44MTa*@WYQh<~jxr{|VE#+jsB>++` z%$EQR&mqj^CFR0=1Ayexm=fYH<;}u>0l?njIZc@d47p*xkph0HX)ou>4fBl@a15o! z^kuwnm@iU5YB(z)7;?jWkpk$^ncX?>j~MC^1tRoyC`bN^l!F4V(N}+t{Ane>To+$6 z^&KPpwESrO9(puW-!bIkPeaf}w@iI!g1m*~vvb0~hyJAN=v07i`{b36lUU1S*E#L9X!EhDNl84KJ7gHr`k9rwzS=Yz#X3 zv-MN)Px4thFi1y$@xDqwBtKBsTXN+p{WT!^fc*ryL0`&dpQgCGC-;4W{srWcKl1%O znFL_yC$b+PE9D{(!$K*S0OXZR07%}X!-#YOlkZCa^1d$t$SaosNclwlB>+-B5g#M} zRQ6fOjSNT|%7eeizX4F5_!DIerOZ6>FUlAxw@N=$#*jE)`a@ha3wfUO3;8W+xkdVi z+(-d=_yf5Cz|q$HgWN~~Ql86S$c+?`hyRcpDPTU*Hm= z+Q*enUMhcwTmY~?(jKlf{Y-KJz-;UMll&I|%&^XXNiG1GA?%!xf0JAQFhfrbTjc*F z7XZNUV=T%Kk_!M}xK;T>asdFUD5Cs&S^R?!$uIgz033;MsQmlAg`5DODiW2S_gTmZ zfDOj~sgHKc2TcA0fQF?hAxK`kbfO#p%;=5}kzh=DWY!M=%+e#I0k9S~d^7nE0Osm1 zEg|{$(^VCd8~_}mKXCxWsjhTY#Vo%CZ{0GpN!Q;Bq^l}s`4b4WS$k2}56VQ5S^knX z1RcCH1A8)cHM9Kfncc8qrmh31hNaL0msviZ(kT%bQ>-=!ah5zaQ)MGECUV}#Pniut zj+ms&>_2|Wd>nFFS^{e!tmJO?(=8M3&rSKD{4Xnxj7o_RQti zUw$e_Ze*VF5x@S-@j3ED=55ly8F7>qewKVFHH=nomONcefj(g%W9&+-#p;@1pv2UOCJsmS)LK_>%d=(k!_t ze#m@cX|}ut{~4Ds9{^;@jWR|&Aj}5<+44;K66OPdYwbYQ8jo1zIy5ek@b-rMchQW{6LS=j`(u+J!D4f8GE7lo{0zNK6gvVLKnrCgLThWVEABmj`+TgnLl zX}+bL0FdTe%K?Bi-&&3`Mw)Le2LRH1YdHXr=3C1FfHdD)o(w4St>vi}WxlmsZ$>Ae YaaqN$u0JDM!SsZ+{N<-zBj2S8QZl>h($ literal 0 HcmV?d00001 diff --git a/distributions/otelcol-minimal/otelcol-minimal.conf b/distributions/otelcol-minimal/otelcol-minimal.conf new file mode 100644 index 00000000..19bd8999 --- /dev/null +++ b/distributions/otelcol-minimal/otelcol-minimal.conf @@ -0,0 +1,5 @@ +# Systemd environment file for the otelcol-minimal service + +# Command-line options for the otelcol-minimal service. +# Run `/usr/bin/otelcol-minimal --help` to see all available options. +OTELCOL_OPTIONS="--config=/etc/otelcol-minimal/config.yaml" diff --git a/distributions/otelcol-minimal/otelcol-minimal.service b/distributions/otelcol-minimal/otelcol-minimal.service new file mode 100644 index 00000000..87f1a46d --- /dev/null +++ b/distributions/otelcol-minimal/otelcol-minimal.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenTelemetry Collector Minimal +After=network.target + +[Service] +EnvironmentFile=/etc/otelcol-minimal/otelcol-minimal.conf +ExecStart=/usr/bin/otelcol-minimal $OTELCOL_OPTIONS +KillMode=mixed +Restart=on-failure +Type=simple +User=otelcol-minimal +Group=otelcol-minimal + +[Install] +WantedBy=multi-user.target diff --git a/distributions/otelcol-minimal/postinstall.sh b/distributions/otelcol-minimal/postinstall.sh new file mode 100755 index 00000000..08bf34c4 --- /dev/null +++ b/distributions/otelcol-minimal/postinstall.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +# Copyright The OpenTelemetry Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +if command -v systemctl >/dev/null 2>&1; then + systemctl enable otelcol-minimal.service + if [ -f /etc/otelcol-minimal/config.yaml ]; then + systemctl start otelcol-minimal.service + else + echo "Make sure to configure otelcol-minimal by creating /etc/otelcol-minimal/config.yaml" + fi +fi diff --git a/distributions/otelcol-minimal/preinstall.sh b/distributions/otelcol-minimal/preinstall.sh new file mode 100755 index 00000000..85c3db3a --- /dev/null +++ b/distributions/otelcol-minimal/preinstall.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +# Copyright The OpenTelemetry Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +getent passwd otelcol-minimal >/dev/null || useradd --system --user-group --no-create-home --shell /sbin/nologin otelcol-minimal diff --git a/distributions/otelcol-minimal/preremove.sh b/distributions/otelcol-minimal/preremove.sh new file mode 100755 index 00000000..489091b9 --- /dev/null +++ b/distributions/otelcol-minimal/preremove.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +# Copyright The OpenTelemetry Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +if command -v systemctl >/dev/null 2>&1; then + systemctl stop otelcol-minimal.service + systemctl disable otelcol-minimal.service +fi diff --git a/distributions/otelcol-minimal/windows-installer.wxs b/distributions/otelcol-minimal/windows-installer.wxs new file mode 100644 index 00000000..81be711e --- /dev/null +++ b/distributions/otelcol-minimal/windows-installer.wxs @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + NOT COLLECTOR_SVC_ARGS + + + + + + + + + + + + + + + + + + + + + From dee6c651a7979aef4e280ab5cf87c3f9a8621b25 Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Wed, 18 Sep 2024 16:46:53 +0200 Subject: [PATCH 2/8] Pin CI goreleaser version to v2.2.0 Version 2.3 of goreleaser changed some of the output directory names, making the `Upload linux service packages` task failing silently, causing the `Package tests` tasks to fail at retrieving the package artifacts under test. --- .github/workflows/base-ci-goreleaser.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/base-ci-goreleaser.yaml b/.github/workflows/base-ci-goreleaser.yaml index 57b341fb..f9cdf24e 100644 --- a/.github/workflows/base-ci-goreleaser.yaml +++ b/.github/workflows/base-ci-goreleaser.yaml @@ -67,7 +67,7 @@ jobs: uses: goreleaser/goreleaser-action@286f3b13b1b49da4ac219696163fb8c1c93e1200 # v6.0.0 with: distribution: goreleaser-pro - version: latest + version: v2.2.0 workdir: distributions/${{ inputs.distribution }} args: --snapshot --clean --skip=sign,sbom --timeout 2h --split env: From a0cc30f24cfb45c5a86531e1b0a490eeeb2f3879 Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Thu, 19 Sep 2024 12:13:36 +0200 Subject: [PATCH 3/8] Rename distro from "otelcol-minimal" to "otelcol-otlp" --- ...r-minimal.yaml => ci-goreleaser-otlp.yaml} | 10 +- ...release-minimal.yaml => release-otlp.yaml} | 6 +- Makefile | 2 +- README.md | 2 +- distributions/otelcol-minimal/README.md | 15 -- .../otelcol-minimal/otelcol-minimal.conf | 5 - .../otelcol-minimal/otelcol-minimal.service | 15 -- .../.goreleaser.yaml | 134 +++++++++--------- .../Dockerfile | 6 +- distributions/otelcol-otlp/README.md | 15 ++ .../manifest.yaml | 6 +- .../opentelemetry.ico | Bin distributions/otelcol-otlp/otelcol-otlp.conf | 5 + .../otelcol-otlp/otelcol-otlp.service | 15 ++ .../postinstall.sh | 8 +- .../preinstall.sh | 2 +- .../preremove.sh | 4 +- .../windows-installer.wxs | 0 18 files changed, 125 insertions(+), 125 deletions(-) rename .github/workflows/{ci-goreleaser-minimal.yaml => ci-goreleaser-otlp.yaml} (70%) rename .github/workflows/{release-minimal.yaml => release-otlp.yaml} (76%) delete mode 100644 distributions/otelcol-minimal/README.md delete mode 100644 distributions/otelcol-minimal/otelcol-minimal.conf delete mode 100644 distributions/otelcol-minimal/otelcol-minimal.service rename distributions/{otelcol-minimal => otelcol-otlp}/.goreleaser.yaml (66%) rename distributions/{otelcol-minimal => otelcol-otlp}/Dockerfile (62%) create mode 100644 distributions/otelcol-otlp/README.md rename distributions/{otelcol-minimal => otelcol-otlp}/manifest.yaml (86%) rename distributions/{otelcol-minimal => otelcol-otlp}/opentelemetry.ico (100%) create mode 100644 distributions/otelcol-otlp/otelcol-otlp.conf create mode 100644 distributions/otelcol-otlp/otelcol-otlp.service rename distributions/{otelcol-minimal => otelcol-otlp}/postinstall.sh (73%) rename distributions/{otelcol-minimal => otelcol-otlp}/preinstall.sh (82%) rename distributions/{otelcol-minimal => otelcol-otlp}/preremove.sh (87%) rename distributions/{otelcol-minimal => otelcol-otlp}/windows-installer.wxs (100%) diff --git a/.github/workflows/ci-goreleaser-minimal.yaml b/.github/workflows/ci-goreleaser-otlp.yaml similarity index 70% rename from .github/workflows/ci-goreleaser-minimal.yaml rename to .github/workflows/ci-goreleaser-otlp.yaml index 60cf459d..cab3a788 100644 --- a/.github/workflows/ci-goreleaser-minimal.yaml +++ b/.github/workflows/ci-goreleaser-otlp.yaml @@ -1,10 +1,10 @@ -name: Continuous Integration - Minimal - GoReleaser +name: Continuous Integration - OTLP - GoReleaser on: push: branches: [main] paths: - - "distributions/otelcol-minimal/**" + - "distributions/otelcol-otlp/**" - "cmd/**" - ".github/**" - "scripts/**" @@ -14,7 +14,7 @@ on: pull_request: branches: [main] paths: - - "distributions/otelcol-minimal/**" + - "distributions/otelcol-otlp/**" - "cmd/**" - ".github/**" - "scripts/**" @@ -24,10 +24,10 @@ on: jobs: check-goreleaser: - name: Continuous Integration - Minimal - GoReleaser + name: Continuous Integration - OTLP - GoReleaser uses: ./.github/workflows/base-ci-goreleaser.yaml with: - distribution: otelcol-minimal + distribution: otelcol-otlp goos: '[ "linux", "windows", "darwin" ]' goarch: '[ "386", "amd64", "arm64", "ppc64le", "arm", "s390x" ]' secrets: inherit diff --git a/.github/workflows/release-minimal.yaml b/.github/workflows/release-otlp.yaml similarity index 76% rename from .github/workflows/release-minimal.yaml rename to .github/workflows/release-otlp.yaml index d5361ff5..aa96c368 100644 --- a/.github/workflows/release-minimal.yaml +++ b/.github/workflows/release-otlp.yaml @@ -1,4 +1,4 @@ -name: Release Minimal +name: Release OTLP on: push: @@ -6,10 +6,10 @@ on: jobs: release: - name: Release Minimal + name: Release OTLP uses: ./.github/workflows/base-release.yaml with: - distribution: otelcol-minimal + distribution: otelcol-otlp goos: '[ "linux", "windows", "darwin" ]' goarch: '[ "386", "amd64", "arm64", "ppc64le", "arm", "s390x" ]' secrets: inherit diff --git a/Makefile b/Makefile index dc312adc..7be8f7e9 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ OTELCOL_BUILDER_VERSION ?= 0.109.0 OTELCOL_BUILDER_DIR ?= ${HOME}/bin OTELCOL_BUILDER ?= ${OTELCOL_BUILDER_DIR}/ocb -DISTRIBUTIONS ?= "otelcol,otelcol-contrib,otelcol-k8s,otelcol-minimal" +DISTRIBUTIONS ?= "otelcol,otelcol-contrib,otelcol-k8s,otelcol-otlp" GEN_CONFIG_DISTRIBUTIONS ?= "otelcol,otelcol-contrib" ci: check build diff --git a/README.md b/README.md index 553ba761..a56f90f5 100644 --- a/README.md +++ b/README.md @@ -17,4 +17,4 @@ Current list of distributions: - [OpenTelemetry Collector (also known as "otelcol")](./distributions/otelcol) - [OpenTelemetry Collector Contrib (also known as "otelcol-contrib")](./distributions/otelcol-contrib) - [OpenTelemetry Collector for Kubernetes (also known as "otelcol-k8s")](./distributions/otelcol-k8s) -- [OpenTelemetry Collector Minimal (also known as "otelcol-minimal")](./distributions/otelcol-minimal) +- [OpenTelemetry Collector OTLP (also known as "otelcol-otlp")](./distributions/otelcol-otlp) diff --git a/distributions/otelcol-minimal/README.md b/distributions/otelcol-minimal/README.md deleted file mode 100644 index 3cd63e44..00000000 --- a/distributions/otelcol-minimal/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# OpenTelemetry Collector Minimal Distro - -This distribution only contains the receiver and exporters for the OpenTelemetry Protocol (OTLP), supporting both gRPC and HTTP transport. - -## Usage note - -This distribution does not provide a default configuration file. - -## Components - -The full list of components is available in the [manifest](manifest.yaml) - -### Rules for Component Inclusion - -- Only `otlpreceiver`, `otlpexporter`, and `otlphttpexporter` are allowed. diff --git a/distributions/otelcol-minimal/otelcol-minimal.conf b/distributions/otelcol-minimal/otelcol-minimal.conf deleted file mode 100644 index 19bd8999..00000000 --- a/distributions/otelcol-minimal/otelcol-minimal.conf +++ /dev/null @@ -1,5 +0,0 @@ -# Systemd environment file for the otelcol-minimal service - -# Command-line options for the otelcol-minimal service. -# Run `/usr/bin/otelcol-minimal --help` to see all available options. -OTELCOL_OPTIONS="--config=/etc/otelcol-minimal/config.yaml" diff --git a/distributions/otelcol-minimal/otelcol-minimal.service b/distributions/otelcol-minimal/otelcol-minimal.service deleted file mode 100644 index 87f1a46d..00000000 --- a/distributions/otelcol-minimal/otelcol-minimal.service +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=OpenTelemetry Collector Minimal -After=network.target - -[Service] -EnvironmentFile=/etc/otelcol-minimal/otelcol-minimal.conf -ExecStart=/usr/bin/otelcol-minimal $OTELCOL_OPTIONS -KillMode=mixed -Restart=on-failure -Type=simple -User=otelcol-minimal -Group=otelcol-minimal - -[Install] -WantedBy=multi-user.target diff --git a/distributions/otelcol-minimal/.goreleaser.yaml b/distributions/otelcol-otlp/.goreleaser.yaml similarity index 66% rename from distributions/otelcol-minimal/.goreleaser.yaml rename to distributions/otelcol-otlp/.goreleaser.yaml index 8a1418d9..a1e9681c 100644 --- a/distributions/otelcol-minimal/.goreleaser.yaml +++ b/distributions/otelcol-otlp/.goreleaser.yaml @@ -5,13 +5,13 @@ project_name: opentelemetry-collector-releases env: - COSIGN_YES=true msi: - - id: otelcol-minimal - name: otelcol-minimal_{{ .Version }}_{{ .Os }}_{{ .MsiArch }} + - id: otelcol-otlp + name: otelcol-otlp_{{ .Version }}_{{ .Os }}_{{ .MsiArch }} wxs: windows-installer.wxs extra_files: - opentelemetry.ico builds: - - id: otelcol-minimal + - id: otelcol-otlp goos: - darwin - linux @@ -39,7 +39,7 @@ builds: - goos: windows goarch: s390x dir: _build - binary: otelcol-minimal + binary: otelcol-otlp ldflags: - -s - -w @@ -48,17 +48,17 @@ builds: env: - CGO_ENABLED=0 archives: - - id: otelcol-minimal + - id: otelcol-otlp builds: - - otelcol-minimal + - otelcol-otlp name_template: '{{ .Binary }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}{{ if .Mips }}_{{ .Mips }}{{ end }}' nfpms: - - package_name: otelcol-minimal + - package_name: otelcol-otlp contents: - - src: otelcol-minimal.service - dst: /lib/systemd/system/otelcol-minimal.service - - src: otelcol-minimal.conf - dst: /etc/otelcol-minimal/otelcol-minimal.conf + - src: otelcol-otlp.service + dst: /lib/systemd/system/otelcol-otlp.service + - src: otelcol-otlp.conf + dst: /etc/otelcol-otlp/otelcol-otlp.conf type: config|noreplace scripts: preinstall: preinstall.sh @@ -68,26 +68,26 @@ nfpms: rpm: dependencies: - /bin/sh - id: otelcol-minimal + id: otelcol-otlp builds: - - otelcol-minimal + - otelcol-otlp formats: - deb - rpm maintainer: The OpenTelemetry Collector maintainers - description: OpenTelemetry Collector - otelcol-minimal + description: OpenTelemetry Collector - otelcol-otlp license: Apache 2.0 checksum: - name_template: '{{ .ProjectName }}_otelcol-minimal_checksums.txt' + name_template: '{{ .ProjectName }}_otelcol-otlp_checksums.txt' dockers: - goos: linux goarch: "386" dockerfile: Dockerfile image_templates: - - otel/opentelemetry-collector-minimal:{{ .Version }}-386 - - otel/opentelemetry-collector-minimal:latest-386 - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-386 - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-386 + - otel/opentelemetry-collector-otlp:{{ .Version }}-386 + - otel/opentelemetry-collector-otlp:latest-386 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:{{ .Version }}-386 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:latest-386 build_flag_templates: - --pull - --platform=linux/386 @@ -102,10 +102,10 @@ dockers: goarch: amd64 dockerfile: Dockerfile image_templates: - - otel/opentelemetry-collector-minimal:{{ .Version }}-amd64 - - otel/opentelemetry-collector-minimal:latest-amd64 - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-amd64 - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-amd64 + - otel/opentelemetry-collector-otlp:{{ .Version }}-amd64 + - otel/opentelemetry-collector-otlp:latest-amd64 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:{{ .Version }}-amd64 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:latest-amd64 build_flag_templates: - --pull - --platform=linux/amd64 @@ -121,10 +121,10 @@ dockers: goarm: "7" dockerfile: Dockerfile image_templates: - - otel/opentelemetry-collector-minimal:{{ .Version }}-armv7 - - otel/opentelemetry-collector-minimal:latest-armv7 - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-armv7 - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-armv7 + - otel/opentelemetry-collector-otlp:{{ .Version }}-armv7 + - otel/opentelemetry-collector-otlp:latest-armv7 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:{{ .Version }}-armv7 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:latest-armv7 build_flag_templates: - --pull - --platform=linux/arm/v7 @@ -139,10 +139,10 @@ dockers: goarch: arm64 dockerfile: Dockerfile image_templates: - - otel/opentelemetry-collector-minimal:{{ .Version }}-arm64 - - otel/opentelemetry-collector-minimal:latest-arm64 - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-arm64 - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-arm64 + - otel/opentelemetry-collector-otlp:{{ .Version }}-arm64 + - otel/opentelemetry-collector-otlp:latest-arm64 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:{{ .Version }}-arm64 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:latest-arm64 build_flag_templates: - --pull - --platform=linux/arm64 @@ -157,10 +157,10 @@ dockers: goarch: ppc64le dockerfile: Dockerfile image_templates: - - otel/opentelemetry-collector-minimal:{{ .Version }}-ppc64le - - otel/opentelemetry-collector-minimal:latest-ppc64le - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-ppc64le - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-ppc64le + - otel/opentelemetry-collector-otlp:{{ .Version }}-ppc64le + - otel/opentelemetry-collector-otlp:latest-ppc64le + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:{{ .Version }}-ppc64le + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:latest-ppc64le build_flag_templates: - --pull - --platform=linux/ppc64le @@ -175,10 +175,10 @@ dockers: goarch: s390x dockerfile: Dockerfile image_templates: - - otel/opentelemetry-collector-minimal:{{ .Version }}-s390x - - otel/opentelemetry-collector-minimal:latest-s390x - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-s390x - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-s390x + - otel/opentelemetry-collector-otlp:{{ .Version }}-s390x + - otel/opentelemetry-collector-otlp:latest-s390x + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:{{ .Version }}-s390x + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:latest-s390x build_flag_templates: - --pull - --platform=linux/s390x @@ -190,38 +190,38 @@ dockers: - --label=org.opencontainers.image.licenses=Apache-2.0 use: buildx docker_manifests: - - name_template: otel/opentelemetry-collector-minimal:{{ .Version }} + - name_template: otel/opentelemetry-collector-otlp:{{ .Version }} image_templates: - - otel/opentelemetry-collector-minimal:{{ .Version }}-386 - - otel/opentelemetry-collector-minimal:{{ .Version }}-amd64 - - otel/opentelemetry-collector-minimal:{{ .Version }}-armv7 - - otel/opentelemetry-collector-minimal:{{ .Version }}-arm64 - - otel/opentelemetry-collector-minimal:{{ .Version }}-ppc64le - - otel/opentelemetry-collector-minimal:{{ .Version }}-s390x - - name_template: otel/opentelemetry-collector-minimal:latest + - otel/opentelemetry-collector-otlp:{{ .Version }}-386 + - otel/opentelemetry-collector-otlp:{{ .Version }}-amd64 + - otel/opentelemetry-collector-otlp:{{ .Version }}-armv7 + - otel/opentelemetry-collector-otlp:{{ .Version }}-arm64 + - otel/opentelemetry-collector-otlp:{{ .Version }}-ppc64le + - otel/opentelemetry-collector-otlp:{{ .Version }}-s390x + - name_template: otel/opentelemetry-collector-otlp:latest image_templates: - - otel/opentelemetry-collector-minimal:latest-386 - - otel/opentelemetry-collector-minimal:latest-amd64 - - otel/opentelemetry-collector-minimal:latest-armv7 - - otel/opentelemetry-collector-minimal:latest-arm64 - - otel/opentelemetry-collector-minimal:latest-ppc64le - - otel/opentelemetry-collector-minimal:latest-s390x - - name_template: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }} + - otel/opentelemetry-collector-otlp:latest-386 + - otel/opentelemetry-collector-otlp:latest-amd64 + - otel/opentelemetry-collector-otlp:latest-armv7 + - otel/opentelemetry-collector-otlp:latest-arm64 + - otel/opentelemetry-collector-otlp:latest-ppc64le + - otel/opentelemetry-collector-otlp:latest-s390x + - name_template: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:{{ .Version }} image_templates: - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-386 - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-amd64 - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-armv7 - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-arm64 - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-ppc64le - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:{{ .Version }}-s390x - - name_template: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:{{ .Version }}-386 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:{{ .Version }}-amd64 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:{{ .Version }}-armv7 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:{{ .Version }}-arm64 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:{{ .Version }}-ppc64le + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:{{ .Version }}-s390x + - name_template: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:latest image_templates: - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-386 - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-amd64 - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-armv7 - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-arm64 - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-ppc64le - - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-minimal:latest-s390x + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:latest-386 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:latest-amd64 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:latest-armv7 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:latest-arm64 + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:latest-ppc64le + - ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-otlp:latest-s390x signs: - cmd: cosign args: diff --git a/distributions/otelcol-minimal/Dockerfile b/distributions/otelcol-otlp/Dockerfile similarity index 62% rename from distributions/otelcol-minimal/Dockerfile rename to distributions/otelcol-otlp/Dockerfile index 050870b5..0ed4bff4 100644 --- a/distributions/otelcol-minimal/Dockerfile +++ b/distributions/otelcol-otlp/Dockerfile @@ -7,7 +7,7 @@ ARG USER_UID=10001 USER ${USER_UID} COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt -COPY --chmod=755 otelcol-minimal /otelcol-minimal -ENTRYPOINT ["/otelcol-minimal"] -CMD ["--config", "/etc/otelcol-minimal/config.yaml"] +COPY --chmod=755 otelcol-otlp /otelcol-otlp +ENTRYPOINT ["/otelcol-otlp"] +CMD ["--config", "/etc/otelcol-otlp/config.yaml"] EXPOSE 4317 55678 55679 diff --git a/distributions/otelcol-otlp/README.md b/distributions/otelcol-otlp/README.md new file mode 100644 index 00000000..9e2d6b7d --- /dev/null +++ b/distributions/otelcol-otlp/README.md @@ -0,0 +1,15 @@ +# OpenTelemetry Collector OTLP Distro + +This distribution only contains the receiver and exporters for the OpenTelemetry Protocol (OTLP), including both gRPC and HTTP transport. + +## Usage note + +Unlike the Core and Contrib distributions, the deb/rpm/msi installers and the Docker images for this distribution do not provide a default configuration file. One will need to be created in the appropriate location (`/etc/otelcol-otlp/config.yaml` or `%ProgramW6432%\OpenTelemetry Collector\config.yaml` by default). + +## Components + +The full list of components is available in the [manifest](manifest.yaml) + +### Rules for Component Inclusion + +- Only `otlpreceiver`, `otlpexporter`, and `otlphttpexporter` are allowed. diff --git a/distributions/otelcol-minimal/manifest.yaml b/distributions/otelcol-otlp/manifest.yaml similarity index 86% rename from distributions/otelcol-minimal/manifest.yaml rename to distributions/otelcol-otlp/manifest.yaml index d420872a..4e26e257 100644 --- a/distributions/otelcol-minimal/manifest.yaml +++ b/distributions/otelcol-otlp/manifest.yaml @@ -1,7 +1,7 @@ dist: - module: github.com/open-telemetry/opentelemetry-collector-releases/minimal - name: otelcol-minimal - description: OpenTelemetry Collector Minimal + module: github.com/open-telemetry/opentelemetry-collector-releases/otlp + name: otelcol-otlp + description: OpenTelemetry Collector OTLP version: 0.109.0 output_path: ./_build otelcol_version: 0.109.0 diff --git a/distributions/otelcol-minimal/opentelemetry.ico b/distributions/otelcol-otlp/opentelemetry.ico similarity index 100% rename from distributions/otelcol-minimal/opentelemetry.ico rename to distributions/otelcol-otlp/opentelemetry.ico diff --git a/distributions/otelcol-otlp/otelcol-otlp.conf b/distributions/otelcol-otlp/otelcol-otlp.conf new file mode 100644 index 00000000..1564a69b --- /dev/null +++ b/distributions/otelcol-otlp/otelcol-otlp.conf @@ -0,0 +1,5 @@ +# Systemd environment file for the otelcol-otlp service + +# Command-line options for the otelcol-otlp service. +# Run `/usr/bin/otelcol-otlp --help` to see all available options. +OTELCOL_OPTIONS="--config=/etc/otelcol-otlp/config.yaml" diff --git a/distributions/otelcol-otlp/otelcol-otlp.service b/distributions/otelcol-otlp/otelcol-otlp.service new file mode 100644 index 00000000..bb7ea348 --- /dev/null +++ b/distributions/otelcol-otlp/otelcol-otlp.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenTelemetry Collector OTLP +After=network.target + +[Service] +EnvironmentFile=/etc/otelcol-otlp/otelcol-otlp.conf +ExecStart=/usr/bin/otelcol-otlp $OTELCOL_OPTIONS +KillMode=mixed +Restart=on-failure +Type=simple +User=otelcol-otlp +Group=otelcol-otlp + +[Install] +WantedBy=multi-user.target diff --git a/distributions/otelcol-minimal/postinstall.sh b/distributions/otelcol-otlp/postinstall.sh similarity index 73% rename from distributions/otelcol-minimal/postinstall.sh rename to distributions/otelcol-otlp/postinstall.sh index 08bf34c4..27402a41 100755 --- a/distributions/otelcol-minimal/postinstall.sh +++ b/distributions/otelcol-otlp/postinstall.sh @@ -15,10 +15,10 @@ # limitations under the License. if command -v systemctl >/dev/null 2>&1; then - systemctl enable otelcol-minimal.service - if [ -f /etc/otelcol-minimal/config.yaml ]; then - systemctl start otelcol-minimal.service + systemctl enable otelcol-otlp.service + if [ -f /etc/otelcol-otlp/config.yaml ]; then + systemctl start otelcol-otlp.service else - echo "Make sure to configure otelcol-minimal by creating /etc/otelcol-minimal/config.yaml" + echo "Make sure to configure otelcol-otlp by creating /etc/otelcol-otlp/config.yaml" fi fi diff --git a/distributions/otelcol-minimal/preinstall.sh b/distributions/otelcol-otlp/preinstall.sh similarity index 82% rename from distributions/otelcol-minimal/preinstall.sh rename to distributions/otelcol-otlp/preinstall.sh index 85c3db3a..6920c380 100755 --- a/distributions/otelcol-minimal/preinstall.sh +++ b/distributions/otelcol-otlp/preinstall.sh @@ -14,4 +14,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -getent passwd otelcol-minimal >/dev/null || useradd --system --user-group --no-create-home --shell /sbin/nologin otelcol-minimal +getent passwd otelcol-otlp >/dev/null || useradd --system --user-group --no-create-home --shell /sbin/nologin otelcol-otlp diff --git a/distributions/otelcol-minimal/preremove.sh b/distributions/otelcol-otlp/preremove.sh similarity index 87% rename from distributions/otelcol-minimal/preremove.sh rename to distributions/otelcol-otlp/preremove.sh index 489091b9..1323e27f 100755 --- a/distributions/otelcol-minimal/preremove.sh +++ b/distributions/otelcol-otlp/preremove.sh @@ -15,6 +15,6 @@ # limitations under the License. if command -v systemctl >/dev/null 2>&1; then - systemctl stop otelcol-minimal.service - systemctl disable otelcol-minimal.service + systemctl stop otelcol-otlp.service + systemctl disable otelcol-otlp.service fi diff --git a/distributions/otelcol-minimal/windows-installer.wxs b/distributions/otelcol-otlp/windows-installer.wxs similarity index 100% rename from distributions/otelcol-minimal/windows-installer.wxs rename to distributions/otelcol-otlp/windows-installer.wxs From 966238d346d626f21e77658c8379d9411786de19 Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Thu, 19 Sep 2024 15:46:03 +0200 Subject: [PATCH 4/8] Add note in systemd .conf file --- distributions/otelcol-otlp/otelcol-otlp.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/distributions/otelcol-otlp/otelcol-otlp.conf b/distributions/otelcol-otlp/otelcol-otlp.conf index 1564a69b..261bcdce 100644 --- a/distributions/otelcol-otlp/otelcol-otlp.conf +++ b/distributions/otelcol-otlp/otelcol-otlp.conf @@ -2,4 +2,5 @@ # Command-line options for the otelcol-otlp service. # Run `/usr/bin/otelcol-otlp --help` to see all available options. +# Note: No default config file is provided at the path below, one must be created. OTELCOL_OPTIONS="--config=/etc/otelcol-otlp/config.yaml" From 8bf9711455868d006f9b236c0f51c36ae104823c Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Fri, 20 Sep 2024 10:58:48 +0200 Subject: [PATCH 5/8] Correct exposed ports in Dockerfile --- distributions/otelcol-otlp/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/distributions/otelcol-otlp/Dockerfile b/distributions/otelcol-otlp/Dockerfile index 0ed4bff4..43b6a958 100644 --- a/distributions/otelcol-otlp/Dockerfile +++ b/distributions/otelcol-otlp/Dockerfile @@ -10,4 +10,4 @@ COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certifica COPY --chmod=755 otelcol-otlp /otelcol-otlp ENTRYPOINT ["/otelcol-otlp"] CMD ["--config", "/etc/otelcol-otlp/config.yaml"] -EXPOSE 4317 55678 55679 +EXPOSE 4317 4318 From d7b6c4e5e048d4b55a94973b6df1c8ae1a700f78 Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Mon, 23 Sep 2024 11:06:33 +0200 Subject: [PATCH 6/8] Removed default command line arguments in Dockerfile --- distributions/otelcol-otlp/Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/distributions/otelcol-otlp/Dockerfile b/distributions/otelcol-otlp/Dockerfile index 43b6a958..2e7521c4 100644 --- a/distributions/otelcol-otlp/Dockerfile +++ b/distributions/otelcol-otlp/Dockerfile @@ -9,5 +9,4 @@ USER ${USER_UID} COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt COPY --chmod=755 otelcol-otlp /otelcol-otlp ENTRYPOINT ["/otelcol-otlp"] -CMD ["--config", "/etc/otelcol-otlp/config.yaml"] EXPOSE 4317 4318 From 369bb761ea416caffb07d376201cb25ec24a0d0e Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Mon, 23 Sep 2024 11:06:48 +0200 Subject: [PATCH 7/8] Updated README --- distributions/otelcol-otlp/README.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/distributions/otelcol-otlp/README.md b/distributions/otelcol-otlp/README.md index 9e2d6b7d..03ce769c 100644 --- a/distributions/otelcol-otlp/README.md +++ b/distributions/otelcol-otlp/README.md @@ -2,9 +2,17 @@ This distribution only contains the receiver and exporters for the OpenTelemetry Protocol (OTLP), including both gRPC and HTTP transport. -## Usage note +## Configuration -Unlike the Core and Contrib distributions, the deb/rpm/msi installers and the Docker images for this distribution do not provide a default configuration file. One will need to be created in the appropriate location (`/etc/otelcol-otlp/config.yaml` or `%ProgramW6432%\OpenTelemetry Collector\config.yaml` by default). +Unlike the Core and Contrib distributions, this distribution does not provide a default configuration file, and one will need to be created. The location of the config file is specified with the `--config` command line option. + +- For the .deb/.rpm systemd service packages, the command line options are set in `/etc/otelcol-otlp/otelcol-otlp.conf`, and the default config path is `/etc/otelcol-otlp/config.yaml`. + +- For the Windows installer, the command line options are set during the install process, and the default config path is `%ProgramW6432%\OpenTelemetry Collector\config.yaml`. + +- For the Docker images, the command line options are blank by default, and must be specified with a `CMD` directive. + + Example: `CMD ["--config", "/etc/otelcol-otlp/config.yaml"]` ## Components From 339a1950bd2db0974331105ab06dcccc4cd1cdbb Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Tue, 24 Sep 2024 15:42:49 +0200 Subject: [PATCH 8/8] Update new distro to 0.110.0 --- distributions/otelcol-otlp/manifest.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/distributions/otelcol-otlp/manifest.yaml b/distributions/otelcol-otlp/manifest.yaml index 4e26e257..a62e557f 100644 --- a/distributions/otelcol-otlp/manifest.yaml +++ b/distributions/otelcol-otlp/manifest.yaml @@ -2,17 +2,17 @@ dist: module: github.com/open-telemetry/opentelemetry-collector-releases/otlp name: otelcol-otlp description: OpenTelemetry Collector OTLP - version: 0.109.0 + version: 0.110.0 output_path: ./_build - otelcol_version: 0.109.0 + otelcol_version: 0.110.0 exporters: - - gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.109.0 - - gomod: go.opentelemetry.io/collector/exporter/otlphttpexporter v0.109.0 + - gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.110.0 + - gomod: go.opentelemetry.io/collector/exporter/otlphttpexporter v0.110.0 receivers: - - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.109.0 + - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.110.0 providers: - - gomod: go.opentelemetry.io/collector/confmap/provider/envprovider v1.15.0 - - gomod: go.opentelemetry.io/collector/confmap/provider/fileprovider v1.15.0 + - gomod: go.opentelemetry.io/collector/confmap/provider/envprovider v1.16.0 + - gomod: go.opentelemetry.io/collector/confmap/provider/fileprovider v1.16.0