From 3de749044bb320f4af620ea38a6324e1ab9bf2ca Mon Sep 17 00:00:00 2001 From: Matt Bray Date: Tue, 22 Mar 2022 18:21:33 +0000 Subject: [PATCH] chore: Dockerfile; simple pod.yaml; otelcol config --- .dockerignore | 3 +++ resources/Dockerfile | 21 +++++++++++++++++++++ resources/Makefile | 15 +++++++++++++++ resources/emit-test-pod.yaml | 19 +++++++++++++++++++ resources/otelcol.yaml | 31 +++++++++++++++++++++++++++++++ tests/emit1.ml | 3 +++ 6 files changed, 92 insertions(+) create mode 100644 .dockerignore create mode 100644 resources/Dockerfile create mode 100644 resources/Makefile create mode 100644 resources/emit-test-pod.yaml create mode 100644 resources/otelcol.yaml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..b3d0e933 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +.git +_opam +_build diff --git a/resources/Dockerfile b/resources/Dockerfile new file mode 100644 index 00000000..501a4732 --- /dev/null +++ b/resources/Dockerfile @@ -0,0 +1,21 @@ +FROM ocaml/opam:debian-10-ocaml-4.12 AS build +WORKDIR /home/opam/ocaml-opentelemetry +RUN sudo apt-get update && sudo apt-get install pkg-config libcurl4-gnutls-dev -y +COPY ./opentelemetry-client-ocurl.opam ./ +COPY ./opentelemetry-lwt.opam ./ +COPY ./opentelemetry.opam ./ +RUN opam update && opam install . --deps-only -y +COPY ./dune ./dune +COPY ./dune-project ./dune-project +COPY ./emit1.sh ./emit1.sh +COPY ./src ./src +COPY ./tests ./tests +COPY ./vendor/atomic ./vendor/atomic +COPY ./vendor/opentelemetry-proto/opentelemetry/proto ./vendor/opentelemetry-proto/opentelemetry/proto +RUN opam exec -- dune build @all --profile=release +CMD ["./emit1.sh"] + +FROM debian:10 as run +RUN apt-get update && apt-get install libcurl4-gnutls-dev -y +COPY --from=build /home/opam/ocaml-opentelemetry/_build/default/tests/emit1.exe /emit1.exe +ENTRYPOINT ["/emit1.exe"] diff --git a/resources/Makefile b/resources/Makefile new file mode 100644 index 00000000..d8c23577 --- /dev/null +++ b/resources/Makefile @@ -0,0 +1,15 @@ +tag=ocaml-otel-test:latest + +docker-build: + sudo docker buildx build .. -f ./Dockerfile --tag $(tag) + +docker-push: + sudo docker push $(tag) + +kubectl-apply: + kubectl apply -f emit-test-pod.yaml + +kubectl-delete: + kubectl delete -f emit-test-pod.yaml + +all: docker-build docker-push kubectl-delete kubectl-apply diff --git a/resources/emit-test-pod.yaml b/resources/emit-test-pod.yaml new file mode 100644 index 00000000..51c094e5 --- /dev/null +++ b/resources/emit-test-pod.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Pod +metadata: + name: ocaml-otel-test +spec: + containers: + - name: emit + image: ocaml-otel-test:latest + env: + - name: HOST_IP + valueFrom: + fieldRef: + fieldPath: status.hostIP + # This is picked up by the opentelemetry sdks + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: "http://$(HOST_IP):4318" + - name: OTEL_RESOURCE_ATTRIBUTES + value: "service.name=t1,service.version=1,deployment.environment=poc" + diff --git a/resources/otelcol.yaml b/resources/otelcol.yaml new file mode 100644 index 00000000..5205f2bb --- /dev/null +++ b/resources/otelcol.yaml @@ -0,0 +1,31 @@ +receivers: + otlp: + protocols: + http: + +processors: + batch: + timeout: 10s + resourcedetection: + detectors: [gce, system] + +exporters: + logging: + loglevel: debug + sampling_initial: 5 + sampling_thereafter: 10 + + +service: + telemetry: + logs: + level: debug + pipelines: + traces: + receivers: [otlp] + processors: [batch, resourcedetection] + exporters: [logging] + metrics: + receivers: [otlp] + processors: [batch, resourcedetection] + exporters: [logging] diff --git a/tests/emit1.ml b/tests/emit1.ml index 3a4bd927..bbb54a35 100644 --- a/tests/emit1.ml +++ b/tests/emit1.ml @@ -6,6 +6,9 @@ let (let@) f x = f x let sleep_inner = ref 0.1 let sleep_outer = ref 2.0 +let () = Sys.set_signal Sys.sigint (Sys.Signal_handle (fun _ -> exit 0)) + + let run () = Printf.printf "collector is on %S\n%!" (Opentelemetry_client_ocurl.get_url());