1# Local observability stack for 012: an OpenTelemetry Collector feeding2# ClickHouse, and Grafana on top. See docs/contributing/observability.md.3#4# make obs-up start it and print the environment for 0125# make obs-status containers, endpoints and row counts6# make obs-down stop it (data stays in the named volumes)7#8# Everything listens on 127.0.0.1 only. The credentials are for this9# local stack; don't expose it.10name: o12-obs1112services:13 clickhouse:14 image: clickhouse/clickhouse-server:26.3.34.13615 environment:16 CLICKHOUSE_DB: otel17 CLICKHOUSE_USER: o1218 CLICKHOUSE_PASSWORD: o1219 CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: "1"20 ports:21 - "127.0.0.1:8123:8123" # HTTP: stress-load, queries22 - "127.0.0.1:9000:9000" # native23 volumes:24 - clickhouse-data:/var/lib/clickhouse25 - ./clickhouse/config.d/memory.xml:/etc/clickhouse-server/config.d/memory.xml:ro26 - ./clickhouse/init.sql:/docker-entrypoint-initdb.d/init.sql:ro27 ulimits:28 nofile: { soft: 262144, hard: 262144 }29 mem_limit: 3g30 healthcheck:31 test: ["CMD", "wget", "-qO-", "http://127.0.0.1:8123/ping"]32 interval: 3s33 timeout: 3s34 retries: 403536 otel-collector:37 image: otel/opentelemetry-collector-contrib:0.161.038 user: "0:0" # to write its checkpoint volume and read the bind-mounted logs39 command: ["--config=/etc/otelcol/config.yaml"]40 depends_on:41 clickhouse: { condition: service_healthy }42 ports:43 - "127.0.0.1:4317:4317" # OTLP gRPC44 - "127.0.0.1:4318:4318" # OTLP HTTP45 - "127.0.0.1:13133:13133" # health check46 volumes:47 - ./otel-collector.yaml:/etc/otelcol/config.yaml:ro48 # 012 writes JSON logs here (O12_LOG); the filelog receiver tails them.49 - ${O12_LOG_DIR:-../../.deps/obs/logs}:/var/log/012:ro50 - collector-state:/var/lib/otelcol51 mem_limit: 512m5253 grafana:54 image: grafana/grafana:13.2.255 depends_on:56 clickhouse: { condition: service_healthy }57 environment:58 GF_INSTALL_PLUGINS: grafana-clickhouse-datasource 4.21.359 GF_AUTH_ANONYMOUS_ENABLED: "true"60 GF_AUTH_ANONYMOUS_ORG_ROLE: Viewer61 GF_SECURITY_ADMIN_PASSWORD: o1262 GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH: /var/lib/grafana/dashboards/runtime.json63 GF_NEWS_NEWS_FEED_ENABLED: "false"64 GF_ANALYTICS_REPORTING_ENABLED: "false"65 GF_ANALYTICS_CHECK_FOR_UPDATES: "false"66 GF_ANALYTICS_CHECK_FOR_PLUGIN_UPDATES: "false"67 ports:68 - "127.0.0.1:3000:3000"69 volumes:70 - grafana-data:/var/lib/grafana71 - ./grafana/provisioning:/etc/grafana/provisioning:ro72 - ./grafana/dashboards:/var/lib/grafana/dashboards:ro73 mem_limit: 512m74 healthcheck:75 test: ["CMD", "wget", "-qO-", "http://127.0.0.1:3000/api/health"]76 interval: 3s77 timeout: 3s78 retries: 607980volumes:81 clickhouse-data:82 collector-state:83 grafana-data: