Set up the OTel collector to gather and export metrics from containers

This commit is contained in:
Lewis Buckley
2025-09-16 11:16:02 +01:00
parent 0e2c7f7d4d
commit ab6622d653
2 changed files with 59 additions and 0 deletions
+14
View File
@@ -32,3 +32,17 @@ aliases:
console: app exec -i --reuse "bin/rails console"
ssh: app exec -i --reuse /bin/bash
switch: accessory exec beamer --reuse "beamer switch --primary=<%= ENV["PRIMARY"] %>"
accessories:
otel_collector:
image: otel/opentelemetry-collector-contrib:0.126.0
port: 9394
files:
- config/otel_collector.yml:/etc/otelcol-contrib/config.yaml
volumes:
- /var/run/docker.sock:/var/run/docker.sock
options:
user: 0
roles:
- web
- jobs
+45
View File
@@ -0,0 +1,45 @@
receivers:
prometheus:
config:
scrape_configs:
- job_name: "kamal-containers"
scrape_interval: 5s
docker_sd_configs:
- host: unix:///var/run/docker.sock
refresh_interval: 10s
relabel_configs:
# Limit scraping to labeled containers with port 9394 exposed
- source_labels: [__address__]
regex: .*:9394
action: keep
- source_labels: [__meta_docker_container_name]
regex: (/fizzy-(web|jobs)-.*|/kamal-proxy)
action: keep
# Pull service and role from Kamal Docker labels
- source_labels: [__meta_docker_container_label_service]
target_label: service
- source_labels: [__meta_docker_container_label_role]
target_label: role
- source_labels: [__meta_docker_container_name]
regex: ^/kamal-proxy$
target_label: service
replacement: kamal-proxy
- source_labels: [__meta_docker_container_name]
regex: ^/kamal-proxy$
target_label: role
replacement: proxy
exporters:
prometheus:
endpoint: 0.0.0.0:9394
service:
telemetry:
logs:
level: "warn"
pipelines:
metrics:
receivers: [prometheus]
exporters: [prometheus]