OpenLogs

All tools

Coroot

Observability and APM tool that combines metrics, logs, traces and profiles.

Replaces

Paid observability services, such as Datadog.

All open-source alternatives to Datadog

Difficulty

Difficulty: Hard

5 services (1 database or broker: clickhouse-server), 9 volume mounts, no env values to set, host access: host_pid, privileged. Heuristic score 7 of 11: hard.

Stack

Go (language), ClickHouse (database)

Deployment

docker_compose

Requirements

Not stated.

License

Apache-2.0 (OSI-approved open source)

Read from github.com/coroot/coroot/blob/15137ef/LICENSE

Business model

Unknown

The README at the pinned commit does not state a business model, so it stays unknown.

Source: github.com/coroot/coroot/blob/15137ef/README.md, read on .

Repository

coroot/coroot

GitHub stats

Stars
7,980
Forks
409
Open issues and pull requests
126
Last push
2026-10-21
Latest release
v1.28.1
Released
2026-10-21

From the GitHub API on . These numbers are a snapshot, not live. GitHub detected the license as Apache-2.0.

Compose file

Config check passed docker compose config exited 0 on this exact file on 2026-10-22.
docker-compose.yaml Version 1
name: coroot
services:
  coroot:
    restart: always
    image: ghcr.io/coroot/coroot${LICENSE_KEY:+-ee} # set 'coroot-ee' as the image if LICENSE_KEY is defined
    pull_policy: always
    user: root
    volumes:
      - coroot_data:/data
    ports:
      - 8080:8080
    command:
      - '--data-dir=/data'
      - '--bootstrap-prometheus-url=http://prometheus:9090'
      - '--bootstrap-refresh-interval=15s'
      - '--bootstrap-clickhouse-address=clickhouse:9000'
    environment:
      - LICENSE_KEY=${LICENSE_KEY:-}
    depends_on:
      clickhouse:
        condition: service_healthy
      prometheus:
        condition: service_healthy

  node-agent:
    restart: always
    image: ghcr.io/coroot/coroot-node-agent
    pull_policy: always
    privileged: true
    pid: "host"
    volumes:
      - /sys/kernel/tracing:/sys/kernel/tracing
      - /sys/kernel/debug:/sys/kernel/debug
      - /sys/fs/cgroup:/host/sys/fs/cgroup
      - node_agent_data:/data
    command:
      - '--collector-endpoint=http://coroot:8080'
      - '--cgroupfs-root=/host/sys/fs/cgroup'
      - '--wal-dir=/data'

  cluster-agent:
    restart: always
    image: ghcr.io/coroot/coroot-cluster-agent
    pull_policy: always
    volumes:
      - cluster_agent_data:/data
    command:
      - '--coroot-url=http://coroot:8080'
      - '--metrics-scrape-interval=15s'
      - '--metrics-wal-dir=/data'
    depends_on:
      - coroot

  prometheus:
    restart: always
    image: prom/prometheus:v2.53.5
    volumes:
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/usr/share/prometheus/console_libraries'
      - '--web.console.templates=/usr/share/prometheus/consoles'
      - '--web.enable-lifecycle'
      - '--web.enable-remote-write-receiver'
    ports:
      - '127.0.0.1:9090:9090'
    healthcheck:
      test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:9090/-/healthy"]
      interval: 3s
      timeout: 5s
      retries: 5
      start_period: 10s

  clickhouse:
    restart: always
    image: clickhouse/clickhouse-server:24.3
    environment:
      CLICKHOUSE_SKIP_USER_SETUP: "1"
    volumes:
      - clickhouse_data:/var/lib/clickhouse
      - clickhouse_logs:/var/log/clickhouse-server
    ports:
      - '127.0.0.1:9000:9000'
    ulimits:
      nofile:
        soft: 262144
        hard: 262144
    configs:
      - source: clickhouse_logging
        target: /etc/clickhouse-server/config.d/logging_rules.xml
      - source: clickhouse_user_logging
        target: /etc/clickhouse-server/config.d/user_logging.xml
    healthcheck:
      test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8123/ping"]
      interval: 3s
      timeout: 5s
      retries: 5
      start_period: 10s

volumes:
  prometheus_data: {}
  clickhouse_data: {}
  clickhouse_logs: {}
  coroot_data: {}
  node_agent_data: {}
  cluster_agent_data: {}

configs:
  clickhouse_logging:
    content: |
      <clickhouse>
        <logger>
            <level>warning</level>
            <console>true</console>
        </logger>
        <query_thread_log remove="remove"/>
        <query_log remove="remove"/>
        <text_log remove="remove"/>
        <trace_log remove="remove"/>
        <metric_log remove="remove"/>
        <asynchronous_metric_log remove="remove"/>
        <session_log remove="remove"/>
        <part_log remove="remove"/>
        <latency_log remove="remove"/>
        <processors_profile_log remove="remove"/>
      </clickhouse>
  clickhouse_user_logging:
    content: |
      <clickhouse>
        <profiles>
          <default>
            <log_queries>0</log_queries>
            <log_query_threads>0</log_query_threads>
            <log_processors_profiles>0</log_processors_profiles>
          </default>
        </profiles>
      </clickhouse>

From the app's own repository: github.com/coroot/coroot/blob/15137ef/deploy/docker-compose.yaml.

Compose file from the app repository.

Install

  1. Docker with the Compose plugin (github.com/coroot/coroot/blob/15137ef/deploy/docker-compose.yaml)

    A host with Docker and the Docker Compose plugin. This entry runs from a compose file.

  2. Save the compose file as docker-compose.yaml (github.com/coroot/coroot/blob/15137ef/deploy/docker-compose.yaml)

    Use the compose file shown above.

  3. Start it (github.com/coroot/coroot/blob/15137ef/deploy/docker-compose.yaml)
    docker compose up -d
  4. Open the app (github.com/coroot/coroot/blob/15137ef/deploy/docker-compose.yaml)

    Open http://localhost:8080. The compose file publishes host port 8080 for the coroot service.

Compose file check: config_ok on 2026-10-22.

Gotchas and maintenance

Gotchas

Signals

  • Open issues and pull requests: 126
  • Last push: 2026-10-21 (0 days before this page was built)
  • Latest release: v1.28.1 on 2026-10-21 (0 days before this page was built)