services: # extract telemetry data from GPU devices otel-gpu-collector: image: ghcr.io/openlit/otel-gpu-collector:latest environment: OTEL_SERVICE_NAME: gpu-fleet OTEL_RESOURCE_ATTRIBUTES: "deployment.environment=prod,team=ml-platform" OTEL_EXPORTER_OTLP_ENDPOINT: "http://otelcol:4317" OTEL_GPU_EBPF_ENABLED: "true" OTEL_METRIC_EXPORT_INTERVAL: 10000 CUDA_HOME: /usr/local/cuda cap_add: [ SYS_ADMIN, SYS_RESOURCE, BPF, PERFMON ] volumes: - /usr/local/cuda-12/targets/x86_64-linux/lib/libcudart.so.12:/usr/local/cuda/lib64/libcudart.so:ro deploy: resources: reservations: devices: - { driver: nvidia, count: all, capabilities: [ gpu ] } # otel-gpu-collector => otelcol otelcol: image: otel/opentelemetry-collector-contrib:0.152.0 command: [ "--config=/etc/otelcol/config.yaml" ] volumes: [ "./otelcol.yaml:/etc/otelcol/config.yaml" ] ports: [ "4317:4317" ] # otelcol => vmagent vmagent: image: victoriametrics/vmagent:latest command: - "-opentelemetry.usePrometheusNaming" - "-remoteWrite.streamAggr.config=/etc/vm/aggr.yml" - "-remoteWrite.url=http://victoriametrics:8428/api/v1/write" volumes: [ "./stream-aggregation.yml:/etc/vm/aggr.yml" ] # vmagent => victoriametrics victoriametrics: image: victoriametrics/victoria-metrics:latest command: [ "-vmalert.proxyURL=http://vmalert:8880" ] ports: [ "8428:8428" ] volumes: [ "vm-data:/victoria-metrics-data" ] # evaluates alerting and recording rules against victoriametrics vmalert: image: victoriametrics/vmalert:latest command: - "-datasource.url=http://victoriametrics:8428" - "-remoteWrite.url=http://victoriametrics:8428" - "-rule=/etc/vmalert/*.yml" # Replace "-notifier.blackhole" with actual "-notifier.url=" - "-notifier.blackhole" volumes: [ "./rules:/etc/vmalert" ] grafana: image: grafana/grafana:latest ports: [ "3000:3000" ] volumes: - grafanadata:/var/lib/grafana - ./provisioning/datasources:/etc/grafana/provisioning/datasources - ./provisioning/dashboards/dashboard.yml:/etc/grafana/provisioning/dashboards/dashboard.yml - ./provisioning/dashboards/openlit-demo.json:/var/lib/grafana/dashboards/openlit-demo.json volumes: { vm-data: { }, grafanadata: { } }