Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions 92_buildkit_otel/.env.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
HONEYCOMB_APIKEY=
HONEYCOMB_DATASET=91_buildkit_otel
HONEYCOMB_SERVICENAME=91_buildkit_otel
HONEYCOMB_METRICS_DATASET=91_buildkit_otel

#COLLECTOR_ENDPOINT=collector:4317
#COLLECTOR_ENDPOINT=0.0.0.0:4317

15 changes: 15 additions & 0 deletions 92_buildkit_otel/Dockerfile.processor
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# syntax=docker/dockerfile:1.4
FROM ubuntu:20.04 as BASE

WORKDIR /scratch

# NOTE: Escape the \$ otherwise they are rendered at buildtime
COPY --chmod=755 <<EOF /bin/show_architecture.sh
#!/usr/bin/env bash
cat /proc/version
lscpu
uname -a
EOF

ENTRYPOINT ["/bin/bash", "-c", " /bin/show_architecture.sh"]

54 changes: 54 additions & 0 deletions 92_buildkit_otel/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# BUILDKIT OPEN TELEMETRY

TODO:

* Tracing a buildkit build.
* Use the x-develop watcher

## Start Collector

```sh
docker compose --env-file ./.env up -d --build --force-recreate collector
docker compose logs collector
```

## Configure builder

```sh
docker buildx ls
# create a second builder
docker buildx create --use --driver docker-container --driver-opt network=host --driver-opt image=moby/buildkit:v0.11.5 --driver-opt "env.JAEGER_TRACE=0.0.0.0:6831" --name oteltest --platform linux/amd64

docker buildx inspect --bootstrap

```

## Build

```sh
# docker buildx create --use \
# --name mybuilder \
# --driver docker-container \
# --driver-opt "network=host" \
# --driver-opt "env.JAEGER_TRACE=localhost:6831"

docker buildx build --no-cache --builder oteltest --platform linux/amd64 --load --progress=plain -f Dockerfile.processor -t processor-amd64 .
```

## Cleanup

```sh
docker compose --env-file ./.env down
docker compose logs collector

docker buildx rm oteltest
```

## Resources

* OpenTelemetry support [here](https://docs.docker.com/build/building/opentelemetry/)
* Jaeger Receiver [here](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/jaegerreceiver/README.md)
* Docker Stats Receiver [here](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/dockerstatsreceiver)
* List of opentelemetry-collector-contrib receivers [here](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver)

https://opentelemetry.io/docs/reference/specification/trace/sdk_exporters/jaeger/
65 changes: 65 additions & 0 deletions 92_buildkit_otel/collector/otel-collector-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
receivers:
# prometheus:
# config:
# scrape_configs:
# - job_name: "prometheus"
# honor_timestamps: true
# scrape_interval: 15s
# scrape_timeout: 10s
# metrics_path: /metrics
# scheme: http
# static_configs:
# - targets: ["${PROMETHEUS_COLLECTOR_TARGET}"] # this is the endpoint to scrape

# hostmetrics:
# scrapers:
# cpu:
# disk:
# filesystem:
# load:
# memory:
# network:
# process:
# processes:
# paging:

otlp:
protocols:
grpc: # on port 4317

jaeger:
protocols:
thrift_compact:
endpoint: 0.0.0.0:6831

processors:
batch:

exporters:
otlp:
endpoint: "api.honeycomb.io:443"
headers:
"x-honeycomb-team": "${HONEYCOMB_APIKEY}"
"x-honeycomb-dataset": "${HONEYCOMB_SERVICENAME}"

# otlp/metrics:
# endpoint: "api.honeycomb.io:443"
# headers:
# "x-honeycomb-team": "${HONEYCOMB_APIKEY}"
# "x-honeycomb-dataset": "${HONEYCOMB_METRICS_DATASET}"

service:
pipelines:
traces:
receivers: [otlp, jaeger]
processors: [batch]
exporters: [otlp]

# metrics:
# receivers: [hostmetrics,prometheus]
# processors: []
# exporters: [otlp/metrics]

telemetry:
logs:
level: "debug"
25 changes: 25 additions & 0 deletions 92_buildkit_otel/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
services:
collector:
image: otel/opentelemetry-collector-contrib:0.72.0
command: ["--config=/etc/otel-collector-config.yaml", ""]
environment:
- HONEYCOMB_APIKEY=${HONEYCOMB_APIKEY}
- HONEYCOMB_SERVICENAME=${HONEYCOMB_SERVICENAME}
- HONEYCOMB_METRICS_DATASET=${HONEYCOMB_METRICS_DATASET}
volumes:
- ./collector/otel-collector-config.yaml:/etc/otel-collector-config.yaml
ports:
- "1888:1888" # pprof extension
- "8888:8888" # Prometheus metrics exposed by the collector
- "8889:8889" # Prometheus exporter metrics
- "13133:13133" # health_check extension
- "4317:4317" # OTLP gRPC receiver
- "4318:4318" # OTLP http receiver
- "6831:6831" # thrift compact
- "55670:55679" # zpages extension
networks:
- service_bridge

networks:
service_bridge:
driver: bridge