diff options
| author | MatthieuCoder <matthieu@matthieu-dev.xyz> | 2023-01-05 18:33:53 +0400 |
|---|---|---|
| committer | MatthieuCoder <matthieu@matthieu-dev.xyz> | 2023-01-05 18:33:53 +0400 |
| commit | 038add4d5e8465f8bb36f1a1fa5817a02cab833b (patch) | |
| tree | 2bcab259fc3b7a57ff9de4b043fa0c5571c85622 /docker-compose.yaml | |
| parent | 63565094f480154556be69a6b3625e47c3b28f04 (diff) | |
base for tracing
Diffstat (limited to 'docker-compose.yaml')
| -rw-r--r-- | docker-compose.yaml | 112 |
1 files changed, 96 insertions, 16 deletions
diff --git a/docker-compose.yaml b/docker-compose.yaml index 2472e45..6d5ccdb 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -6,6 +6,7 @@ services: ports: - 4222:4222 - 8222:8222 + redis: image: redis @@ -17,12 +18,14 @@ services: args: - COMPONENT=cache volumes: - - ./config.yml:/config/default.yml + - ./config/default.yml:/config/default.yml environment: - - RUST_LOG=info + - RUST_LOG=debug + - OTEL_EXPORTER_OTLP_ENDPOINT=http://otelcol:4317 depends_on: - nats - redis + - otelcol gateway: image: ghcr.io/discordnova/nova/gateway @@ -32,13 +35,13 @@ services: args: - COMPONENT=gateway volumes: - - ./config.yml:/config/default.yml + - ./config/default.yml:/config/default.yml environment: - - RUST_LOG=info + - RUST_LOG=debug + - OTEL_EXPORTER_OTLP_ENDPOINT=http://otelcol:4317 depends_on: - nats - ports: - - 9000:9000 + - otelcol rest: image: ghcr.io/discordnova/nova/rest @@ -48,14 +51,16 @@ services: args: - COMPONENT=rest volumes: - - ./config.yml:/config/default.yml + - ./config/default.yml:/config/default.yml environment: - - RUST_LOG=info + - RUST_LOG=debug + - OTEL_EXPORTER_OTLP_ENDPOINT=http://otelcol:4317 depends_on: - ratelimit + - otelcol ports: - 9001:9000 - - 8080:8080 + - 8090:8090 webhook: image: ghcr.io/discordnova/nova/webhook @@ -63,16 +68,19 @@ services: build: context: . args: + - RUST_LOG=debug - COMPONENT=webhook volumes: - - ./config.yml:/config/default.yml + - ./config/default.yml:/config/default.yml environment: - - RUST_LOG=info + - RUST_LOG=debug + - OTEL_EXPORTER_OTLP_ENDPOINT=http://otelcol:4317 depends_on: - nats + - otelcol ports: - 9002:9000 - - 8081:8080 + - 8091:8091 ratelimit: image: ghcr.io/discordnova/nova/ratelimit restart: always @@ -81,12 +89,84 @@ services: args: - COMPONENT=ratelimit volumes: - - ./config.yml:/config/default.yml + - ./config/default.yml:/config/default.yml environment: - - RUST_LOG=info + - RUST_LOG=debug + - OTEL_EXPORTER_OTLP_ENDPOINT=http://otelcol:4317 depends_on: - nats - redis + - otelcol + + # ******************** + # Telemetry Components + # ******************** + # Jaeger + jaeger: + image: jaegertracing/all-in-one + container_name: jaeger + command: + - "--memory.max-debugs" + - "10000" + - "--query.base-path" + - "/jaeger/ui" + - "--prometheus.server-url" + - "http://${PROMETHEUS_ADDR}" + deploy: + resources: + limits: + memory: 275M + restart: always + ports: + - "${JAEGER_SERVICE_PORT}:${JAEGER_SERVICE_PORT}" # Jaeger UI + - "4317" # OTLP gRPC default port + environment: + - COLLECTOR_OTLP_ENABLED=true + - METRICS_STORAGE_TYPE=prometheus + + # Grafana + grafana: + image: grafana/grafana:9.1.0 + container_name: grafana + volumes: + - ./otel/grafana/grafana.ini:/etc/grafana/grafana.ini + - ./otel/grafana/provisioning/:/etc/grafana/provisioning/ + ports: + - "${GRAFANA_SERVICE_PORT}:${GRAFANA_SERVICE_PORT}" + + # OpenTelemetry Collector + otelcol: + image: otel/opentelemetry-collector-contrib:0.61.0 + deploy: + resources: + limits: + memory: 100M + restart: always + command: [ "--config=/etc/otelcol-config.yml", "--config=/etc/otelcol-config-extras.yml" ] + volumes: + - ./otel/otelcollector/otelcol-config.yml:/etc/otelcol-config.yml + - ./otel/otelcollector/otelcol-config-extras.yml:/etc/otelcol-config-extras.yml + ports: + - "4317:4317" # OTLP over gRPC receiver + - "4318:4318" # OTLP over HTTP receiver + - "9464" # Prometheus exporter + - "8888" # metrics endpoint + depends_on: + - jaeger + + # Prometheus + prometheus: + image: quay.io/prometheus/prometheus:v2.34.0 + container_name: prometheus + command: + - --web.console.templates=/etc/prometheus/consoles + - --web.console.libraries=/etc/prometheus/console_libraries + - --storage.tsdb.retention.time=1h + - --config.file=/etc/prometheus/prometheus-config.yaml + - --storage.tsdb.path=/prometheus + - --web.enable-lifecycle + - --web.route-prefix=/ + volumes: + - ./otel/prometheus/prometheus-config.yaml:/etc/prometheus/prometheus-config.yaml ports: - - 9003:9000 - - 8082:8080
\ No newline at end of file + - "${PROMETHEUS_SERVICE_PORT}:${PROMETHEUS_SERVICE_PORT}" |
