├── .gitignore ├── CODEOWNERS ├── README.md ├── images └── console-icon.png ├── light-get-started.yaml ├── quick-start-m4.yml ├── quick-start.yml ├── simple.yml └── sql ├── README.md ├── clickhouse.xml └── docker-compose.yml /.gitignore: -------------------------------------------------------------------------------- 1 | platform_data/ 2 | 3 | # standard IDE files ignore 4 | .idea/ 5 | *.iml 6 | .vscode -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | @conduktor/conduktor-platform 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 |

4 | 5 |

6 |

7 | Conduktor Console 8 |

9 | 10 |

11 | Explore the docs » 12 |
13 |
14 | GitHub Release 15 | · 16 | Scale Data Streaming With Security and Control 17 | · 18 | X (formerly Twitter) Follow 19 | · 20 | Slack 21 |

22 | 23 | We take the complexity out of Kafka. Console gives you visibility into your Kafka ecosystem and concentrates all of the Kafka APIs into a single interface. Troubleshoot and debug Kafka, drill-down into topic data, and continuously monitor your streaming applications. 24 | 25 | Conduktor supports all Kafka providers (Apache Kafka, MSK, Confluent, Aiven, Redpanda, Strimzi etc.) 26 | 27 | ![image](https://repository-images.githubusercontent.com/530997875/bd058e18-34c8-434d-a844-92303767167d) 28 | 29 | 30 | # 👩‍💻 Get Started 31 | 32 | You have two options for getting started: 33 | 34 | 1. Quick-Start: Preconfigured with embedded Redpanda + Datagen 35 | ```` shell 36 | # Start Conduktor in seconds, powered with Redpanda 37 | curl -L https://releases.conduktor.io/quick-start -o docker-compose.yml && docker compose up 38 | ```` 39 | 40 | 2. Console Only: Start Conduktor and connect your own Kafka 41 | ```` shell 42 | # Start Conduktor and connect it to your own Kafka 43 | curl -L https://releases.conduktor.io/console -o docker-compose.yml && docker compose up 44 | ```` 45 | 46 | Once started, you can access the console at **http://localhost:8080** 47 | 48 | See our [docs](https://docs.conduktor.io/) for more information on 49 | - [Configuring your Kafka cluster](https://docs.conduktor.io/platform/installation/get-started/docker/#step-3-configure-your-existing-kafka-cluster) 50 | - [User authentication (SSO, LDAP)](https://docs.conduktor.io/platform/category/user-authentication/) 51 | - [Environment variables](https://docs.conduktor.io/platform/configuration/env-variables/) 52 | - [Deployment methods](https://docs.conduktor.io/platform/category/get-started/) 53 | 54 | --- 55 | 56 | # 📢 Our Roadmap 57 | 58 | We really want our community to be part of our evolution. 59 | 60 | Please upvote or comment everything we're doing. WE. ARE. LISTENING. 61 | 62 | [View roadmap and provide feedback](https://product.conduktor.help/tabs/1-in-development) 63 | 64 | --- 65 | 66 | # 🆘 Looking for help? 67 | 68 | * [Console Changelog](https://www.conduktor.io/changelog) 69 | * [Console Documentation](https://docs.conduktor.io/) 70 | * Contact us for anything else: support@conduktor.io 71 | 72 | --- 73 | 74 | # Get Involved 75 | 76 | * [Our Roadmap](https://product.conduktor.help/tabs/1-in-development) 77 | * Follow @getconduktor on Twitter 78 | * Read the Conduktor blog 79 | * Looking for a job? careers 80 | * Learning Apache Kafka? We have a whole learning website dedicated for you! 81 | -------------------------------------------------------------------------------- /images/console-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conduktor/conduktor-platform/68dc5fec4d9c2ff76edb8c4d3b4fa7a6a83b738c/images/console-icon.png -------------------------------------------------------------------------------- /light-get-started.yaml: -------------------------------------------------------------------------------- 1 | # This docker-compose is only to get started with Conduktor. 2 | # It is starting Conduktor Console and a Redpanda cluster (Kafka). 3 | 4 | # Go to http://localhost:8080 when started 5 | 6 | #################################################################################################### 7 | # DO NOT USE IT IN PRODUCTION 8 | # 9 | # For production, please check: https://docs.conduktor.io/platform/category/deployment-options/ 10 | # to deploy on Kubernetes via Helm, or AWS using Cloudformation. 11 | #################################################################################################### 12 | 13 | 14 | services: 15 | # Conduktor Console, the enterprise UI. 16 | # It depends on PostgreSQL. Here, we depend on Redpanda only for our get-started. 17 | # https://docs.conduktor.io/platform/get-started/configuration/introduction/ 18 | conduktor-console: 19 | image: conduktor/conduktor-console:1.34.3 20 | ports: 21 | - "8080:8080" 22 | volumes: 23 | - conduktor_data:/var/conduktor 24 | environment: 25 | CDK_DATABASE_URL: "postgresql://conduktor:change_me@postgresql:5432/conduktor-console" 26 | CDK_CLUSTERS_0_ID: "local-kafka" 27 | CDK_CLUSTERS_0_NAME: "local-kafka" 28 | CDK_CLUSTERS_0_BOOTSTRAPSERVERS: "redpanda-0:9092" 29 | CDK_CLUSTERS_0_SCHEMAREGISTRY_URL: "http://redpanda-0:18081" 30 | CDK_CLUSTERS_0_COLOR: "#6A57C8" 31 | CDK_CLUSTERS_0_ICON: "kafka" 32 | CDK_MONITORING_CORTEX-URL: http://conduktor-monitoring:9009/ 33 | CDK_MONITORING_ALERT-MANAGER-URL: http://conduktor-monitoring:9010/ 34 | CDK_MONITORING_CALLBACK-URL: http://conduktor-console:8080/monitoring/api/ 35 | CDK_MONITORING_NOTIFICATIONS-CALLBACK-URL: http://localhost:8080 36 | depends_on: 37 | redpanda-0: 38 | condition: service_healthy 39 | postgresql: 40 | condition: service_healthy 41 | # Conduktor stores its metadata in PostgreSQL. 42 | # Consider using an external managed database for production usage. 43 | # https://docs.conduktor.io/platform/get-started/configuration/database/ 44 | postgresql: 45 | image: postgres:14 46 | hostname: postgresql 47 | volumes: 48 | - pg_data:/var/lib/postgresql/data 49 | environment: 50 | PGDATA: "/var/lib/postgresql/data" 51 | POSTGRES_DB: "conduktor-console" 52 | POSTGRES_USER: "conduktor" 53 | POSTGRES_PASSWORD: "change_me" 54 | POSTGRES_HOST_AUTH_METHOD: "scram-sha-256" 55 | healthcheck: 56 | test: ["CMD-SHELL", "pg_isready"] 57 | interval: 10s 58 | timeout: 5s 59 | retries: 5 60 | # Conduktor uses Cortex to store Kafka and applications metrics as well as alerting. 61 | # It is optional. 62 | # https://docs.conduktor.io/platform/get-started/configuration/cortex/ 63 | conduktor-monitoring: 64 | image: conduktor/conduktor-console-cortex:1.34.3 65 | environment: 66 | CDK_CONSOLE-URL: "http://conduktor-console:8080" 67 | # We use Redpanda to start with Kafka as it's small and efficient. 68 | # This is an example here. For production, connect Conduktor Console to your own Kafka clusters. 69 | redpanda-0: 70 | command: 71 | - redpanda 72 | - start 73 | - --kafka-addr internal://0.0.0.0:9092,external://0.0.0.0:19092 74 | - --advertise-kafka-addr internal://redpanda-0:9092,external://localhost:19092 75 | - --pandaproxy-addr internal://0.0.0.0:8082,external://0.0.0.0:18082 76 | # Address the broker advertises to clients that connect to the HTTP Proxy. 77 | - --advertise-pandaproxy-addr internal://redpanda-0:8082,external://localhost:18082 78 | - --schema-registry-addr internal://0.0.0.0:8081,external://0.0.0.0:18081 79 | # Redpanda brokers use the RPC API to communicate with eachother internally. 80 | - --rpc-addr redpanda-0:33145 81 | - --advertise-rpc-addr redpanda-0:33145 82 | - --smp 1 83 | - --memory 1G 84 | - --mode dev-container 85 | - --default-log-level=info 86 | image: docker.redpanda.com/redpandadata/redpanda:v24.1.6 87 | container_name: redpanda-0 88 | volumes: 89 | - redpanda-0:/var/lib/redpanda/data 90 | ports: 91 | - 18081:18081 92 | - 18082:18082 93 | - 19092:19092 94 | - 19644:9644 95 | healthcheck: 96 | test: ["CMD-SHELL", "rpk cluster health | grep -E 'Healthy:.+true' || exit 1"] 97 | interval: 15s 98 | timeout: 3s 99 | retries: 5 100 | start_period: 5s 101 | volumes: 102 | pg_data: {} 103 | conduktor_data: {} 104 | redpanda-0: {} 105 | -------------------------------------------------------------------------------- /quick-start-m4.yml: -------------------------------------------------------------------------------- 1 | # This docker-compose is only to get started with Conduktor. 2 | # It is starting Conduktor, a Redpanda cluster (Kafka), and a fake app to generate traffic. 3 | 4 | # Go to http://localhost:8080 when started 5 | 6 | #################################################################################################### 7 | # DO NOT USE IT IN PRODUCTION 8 | # 9 | # For production, please check: https://docs.conduktor.io/platform/category/deployment-options/ 10 | # to deploy on Kubernetes via Helm, or AWS using Cloudformation. 11 | #################################################################################################### 12 | 13 | 14 | services: 15 | # Conduktor Console, the enterprise UI. 16 | # It depends on PostgreSQL. Here, we depend on Redpanda only for our get-started. 17 | # https://docs.conduktor.io/platform/get-started/configuration/introduction/ 18 | conduktor-console: 19 | image: conduktor/conduktor-console:1.34.3 20 | ports: 21 | - "8080:8080" 22 | volumes: 23 | - conduktor_data:/var/conduktor 24 | environment: 25 | CDK_DATABASE_URL: "postgresql://conduktor:change_me@postgresql:5432/conduktor-console" 26 | CDK_KAFKASQL_DATABASE_URL: "postgresql://conduktor:change_me@postgresql-sql:5432/conduktor-sql" 27 | CDK_ORGANIZATION_NAME: "getting-started" 28 | CDK_CLUSTERS_0_ID: "local-kafka" 29 | CDK_CLUSTERS_0_NAME: "local-kafka" 30 | CDK_CLUSTERS_0_BOOTSTRAPSERVERS: "redpanda-0:9092" 31 | CDK_CLUSTERS_0_SCHEMAREGISTRY_URL: "http://redpanda-0:18081" 32 | CDK_CLUSTERS_0_COLOR: "#6A57C8" 33 | CDK_CLUSTERS_0_ICON: "kafka" 34 | CDK_CLUSTERS_1_ID: "cdk-gateway" 35 | CDK_CLUSTERS_1_NAME: "cdk-gateway" 36 | CDK_CLUSTERS_1_BOOTSTRAPSERVERS: "conduktor-gateway:6969" 37 | CDK_CLUSTERS_1_SCHEMAREGISTRY_URL: "http://redpanda-0:18081" 38 | CDK_CLUSTERS_1_KAFKAFLAVOR_URL: "http://conduktor-gateway:8888" 39 | CDK_CLUSTERS_1_KAFKAFLAVOR_USER: "admin" 40 | CDK_CLUSTERS_1_KAFKAFLAVOR_PASSWORD: "conduktor" 41 | CDK_CLUSTERS_1_KAFKAFLAVOR_VIRTUALCLUSTER: "passthrough" 42 | CDK_CLUSTERS_1_KAFKAFLAVOR_TYPE: "Gateway" 43 | CDK_CLUSTERS_1_COLOR: "#6A57C8" 44 | CDK_CLUSTERS_1_ICON: "dog" 45 | CDK_MONITORING_CORTEX-URL: http://conduktor-monitoring:9009/ 46 | CDK_MONITORING_ALERT-MANAGER-URL: http://conduktor-monitoring:9010/ 47 | CDK_MONITORING_CALLBACK-URL: http://conduktor-console:8080/monitoring/api/ 48 | CDK_MONITORING_NOTIFICATIONS-CALLBACK-URL: http://localhost:8080 49 | CONSOLE_JAVA_OPTS: "-XX:UseSVE=0" 50 | depends_on: 51 | redpanda-0: 52 | condition: service_healthy 53 | postgresql: 54 | condition: service_healthy 55 | postgresql-2: 56 | condition: service_healthy 57 | # Conduktor stores its metadata in PostgreSQL. 58 | # Consider using an external managed database for production usage. 59 | # https://docs.conduktor.io/platform/get-started/configuration/database/ 60 | postgresql: 61 | image: postgres:14 62 | hostname: postgresql 63 | volumes: 64 | - pg_data:/var/lib/postgresql/data 65 | environment: 66 | PGDATA: "/var/lib/postgresql/data" 67 | POSTGRES_DB: "conduktor-console" 68 | POSTGRES_USER: "conduktor" 69 | POSTGRES_PASSWORD: "change_me" 70 | POSTGRES_HOST_AUTH_METHOD: "scram-sha-256" 71 | healthcheck: 72 | test: ["CMD-SHELL", "pg_isready"] 73 | interval: 10s 74 | timeout: 5s 75 | retries: 5 76 | # Conduktor depends on a separate db for storing Kafka data for SQL querying 77 | # It is optional, but required if you wish to use SQL functionality 78 | # Separate db ensures continued operation of the core Console experience if the SQL db becomes unavailable 79 | # https://docs.conduktor.io/platform/guides/configure-sql/ 80 | postgresql-2: 81 | image: postgres:14 82 | hostname: postgresql-sql 83 | volumes: 84 | - pg_data_sql:/var/lib/postgresql/data 85 | environment: 86 | PGDATA: "/var/lib/postgresql/data" 87 | POSTGRES_DB: "conduktor-sql" 88 | POSTGRES_USER: "conduktor" 89 | POSTGRES_PASSWORD: "change_me" 90 | POSTGRES_HOST_AUTH_METHOD: "scram-sha-256" 91 | healthcheck: 92 | test: ["CMD-SHELL", "pg_isready"] 93 | interval: 10s 94 | timeout: 5s 95 | retries: 5 96 | # Conduktor uses Cortex to store Kafka and applications metrics as well as alerting. 97 | # It is optional. 98 | # https://docs.conduktor.io/platform/get-started/configuration/cortex/ 99 | conduktor-monitoring: 100 | image: conduktor/conduktor-console-cortex:1.34.3 101 | environment: 102 | CDK_CONSOLE-URL: "http://conduktor-console:8080" 103 | # We use Redpanda to get started with Kafka as it's small and efficient. 104 | # This is an example here. For production, connect Conduktor to your own Kafka clusters. 105 | redpanda-0: 106 | command: 107 | - redpanda 108 | - start 109 | - --kafka-addr internal://0.0.0.0:9092,external://0.0.0.0:19092 110 | - --advertise-kafka-addr internal://redpanda-0:9092,external://localhost:19092 111 | - --pandaproxy-addr internal://0.0.0.0:8082,external://0.0.0.0:18082 112 | # Address the broker advertises to clients that connect to the HTTP Proxy. 113 | - --advertise-pandaproxy-addr internal://redpanda-0:8082,external://localhost:18082 114 | - --schema-registry-addr internal://0.0.0.0:8081,external://0.0.0.0:18081 115 | # Redpanda brokers use the RPC API to communicate with eachother internally. 116 | - --rpc-addr redpanda-0:33145 117 | - --advertise-rpc-addr redpanda-0:33145 118 | - --smp 1 119 | - --memory 1G 120 | - --mode dev-container 121 | - --default-log-level=info 122 | image: docker.redpanda.com/redpandadata/redpanda:v24.1.6 123 | container_name: redpanda-0 124 | volumes: 125 | - redpanda-0:/var/lib/redpanda/data 126 | ports: 127 | - 18081:18081 128 | - 18082:18082 129 | - 19092:19092 130 | - 19644:9644 131 | healthcheck: 132 | test: ["CMD-SHELL", "rpk cluster health | grep -E 'Healthy:.+true' || exit 1"] 133 | interval: 15s 134 | timeout: 3s 135 | retries: 5 136 | start_period: 5s 137 | # Conduktor comes with its Gateway, a Kafka proxy bringing many security and governance features. 138 | # In this get started, Gateway uses Redpanda as its backend Kafka cluster. 139 | # https://docs.conduktor.io/gateway/ 140 | conduktor-gateway: 141 | image: conduktor/conduktor-gateway:3.9.0 142 | hostname: conduktor-gateway 143 | container_name: conduktor-gateway 144 | environment: 145 | KAFKA_BOOTSTRAP_SERVERS: redpanda-0:9092 146 | JAVA_OPTS: "-XX:UseSVE=0" 147 | ports: 148 | - "8888:8888" 149 | healthcheck: 150 | test: curl localhost:8888/health 151 | interval: 5s 152 | retries: 25 153 | depends_on: 154 | redpanda-0: 155 | condition: service_healthy 156 | # As this is a get started, we want to bring some life to the cluster to demonstrate the value of Conduktor. 157 | # This is totally optional and only used for this purpose. Do not use it in production. 158 | conduktor-data-generator: 159 | image: conduktor/conduktor-data-generator:0.9 160 | container_name: conduktor-data-generator 161 | environment: 162 | KAFKA_BOOTSTRAP_SERVERS: conduktor-gateway:6969 163 | KAFKA_SCHEMA_REGISTRY_URL: http://redpanda-0:8081 164 | GATEWAY_ADMIN_API: http://conduktor-gateway:8888 165 | JAVA_OPTS: "-XX:UseSVE=0" 166 | restart: on-failure 167 | depends_on: 168 | redpanda-0: 169 | condition: service_healthy 170 | conduktor-gateway: 171 | condition: service_healthy 172 | volumes: 173 | pg_data: {} 174 | pg_data_sql: {} 175 | conduktor_data: {} 176 | redpanda-0: {} 177 | -------------------------------------------------------------------------------- /quick-start.yml: -------------------------------------------------------------------------------- 1 | # This docker-compose is only to get started with Conduktor. 2 | # It is starting Conduktor, a Redpanda cluster (Kafka), and a fake app to generate traffic. 3 | 4 | # Go to http://localhost:8080 when started 5 | 6 | #################################################################################################### 7 | # DO NOT USE IT IN PRODUCTION 8 | # 9 | # For production, please check: https://docs.conduktor.io/platform/category/deployment-options/ 10 | # to deploy on Kubernetes via Helm, or AWS using Cloudformation. 11 | #################################################################################################### 12 | 13 | 14 | services: 15 | # Conduktor Console, the enterprise UI. 16 | # It depends on PostgreSQL. Here, we depend on Redpanda only for our get-started. 17 | # https://docs.conduktor.io/platform/get-started/configuration/introduction/ 18 | conduktor-console: 19 | image: conduktor/conduktor-console:1.34.3 20 | ports: 21 | - "8080:8080" 22 | volumes: 23 | - conduktor_data:/var/conduktor 24 | environment: 25 | CDK_DATABASE_URL: "postgresql://conduktor:change_me@postgresql:5432/conduktor-console" 26 | CDK_KAFKASQL_DATABASE_URL: "postgresql://conduktor:change_me@postgresql-sql:5432/conduktor-sql" 27 | CDK_ORGANIZATION_NAME: "getting-started" 28 | CDK_CLUSTERS_0_ID: "local-kafka" 29 | CDK_CLUSTERS_0_NAME: "local-kafka" 30 | CDK_CLUSTERS_0_BOOTSTRAPSERVERS: "redpanda-0:9092" 31 | CDK_CLUSTERS_0_SCHEMAREGISTRY_URL: "http://redpanda-0:18081" 32 | CDK_CLUSTERS_0_COLOR: "#6A57C8" 33 | CDK_CLUSTERS_0_ICON: "kafka" 34 | CDK_CLUSTERS_1_ID: "cdk-gateway" 35 | CDK_CLUSTERS_1_NAME: "cdk-gateway" 36 | CDK_CLUSTERS_1_BOOTSTRAPSERVERS: "conduktor-gateway:6969" 37 | CDK_CLUSTERS_1_SCHEMAREGISTRY_URL: "http://redpanda-0:18081" 38 | CDK_CLUSTERS_1_KAFKAFLAVOR_URL: "http://conduktor-gateway:8888" 39 | CDK_CLUSTERS_1_KAFKAFLAVOR_USER: "admin" 40 | CDK_CLUSTERS_1_KAFKAFLAVOR_PASSWORD: "conduktor" 41 | CDK_CLUSTERS_1_KAFKAFLAVOR_VIRTUALCLUSTER: "passthrough" 42 | CDK_CLUSTERS_1_KAFKAFLAVOR_TYPE: "Gateway" 43 | CDK_CLUSTERS_1_COLOR: "#6A57C8" 44 | CDK_CLUSTERS_1_ICON: "dog" 45 | CDK_MONITORING_CORTEX-URL: http://conduktor-monitoring:9009/ 46 | CDK_MONITORING_ALERT-MANAGER-URL: http://conduktor-monitoring:9010/ 47 | CDK_MONITORING_CALLBACK-URL: http://conduktor-console:8080/monitoring/api/ 48 | CDK_MONITORING_NOTIFICATIONS-CALLBACK-URL: http://localhost:8080 49 | depends_on: 50 | redpanda-0: 51 | condition: service_healthy 52 | postgresql: 53 | condition: service_healthy 54 | postgresql-2: 55 | condition: service_healthy 56 | # Conduktor stores its metadata in PostgreSQL. 57 | # Consider using an external managed database for production usage. 58 | # https://docs.conduktor.io/platform/get-started/configuration/database/ 59 | postgresql: 60 | image: postgres:14 61 | hostname: postgresql 62 | volumes: 63 | - pg_data:/var/lib/postgresql/data 64 | environment: 65 | PGDATA: "/var/lib/postgresql/data" 66 | POSTGRES_DB: "conduktor-console" 67 | POSTGRES_USER: "conduktor" 68 | POSTGRES_PASSWORD: "change_me" 69 | POSTGRES_HOST_AUTH_METHOD: "scram-sha-256" 70 | healthcheck: 71 | test: ["CMD-SHELL", "pg_isready"] 72 | interval: 10s 73 | timeout: 5s 74 | retries: 5 75 | # Conduktor depends on a separate db for storing Kafka data for SQL querying 76 | # It is optional, but required if you wish to use SQL functionality 77 | # Separate db ensures continued operation of the core Console experience if the SQL db becomes unavailable 78 | # https://docs.conduktor.io/platform/guides/configure-sql/ 79 | postgresql-2: 80 | image: postgres:14 81 | hostname: postgresql-sql 82 | volumes: 83 | - pg_data_sql:/var/lib/postgresql/data 84 | environment: 85 | PGDATA: "/var/lib/postgresql/data" 86 | POSTGRES_DB: "conduktor-sql" 87 | POSTGRES_USER: "conduktor" 88 | POSTGRES_PASSWORD: "change_me" 89 | POSTGRES_HOST_AUTH_METHOD: "scram-sha-256" 90 | healthcheck: 91 | test: ["CMD-SHELL", "pg_isready"] 92 | interval: 10s 93 | timeout: 5s 94 | retries: 5 95 | # Conduktor uses Cortex to store Kafka and applications metrics as well as alerting. 96 | # It is optional. 97 | # https://docs.conduktor.io/platform/get-started/configuration/cortex/ 98 | conduktor-monitoring: 99 | image: conduktor/conduktor-console-cortex:1.34.3 100 | environment: 101 | CDK_CONSOLE-URL: "http://conduktor-console:8080" 102 | # We use Redpanda to get started with Kafka as it's small and efficient. 103 | # This is an example here. For production, connect Conduktor to your own Kafka clusters. 104 | redpanda-0: 105 | command: 106 | - redpanda 107 | - start 108 | - --kafka-addr internal://0.0.0.0:9092,external://0.0.0.0:19092 109 | - --advertise-kafka-addr internal://redpanda-0:9092,external://localhost:19092 110 | - --pandaproxy-addr internal://0.0.0.0:8082,external://0.0.0.0:18082 111 | # Address the broker advertises to clients that connect to the HTTP Proxy. 112 | - --advertise-pandaproxy-addr internal://redpanda-0:8082,external://localhost:18082 113 | - --schema-registry-addr internal://0.0.0.0:8081,external://0.0.0.0:18081 114 | # Redpanda brokers use the RPC API to communicate with eachother internally. 115 | - --rpc-addr redpanda-0:33145 116 | - --advertise-rpc-addr redpanda-0:33145 117 | - --smp 1 118 | - --memory 1G 119 | - --mode dev-container 120 | - --default-log-level=info 121 | image: docker.redpanda.com/redpandadata/redpanda:v24.1.6 122 | container_name: redpanda-0 123 | volumes: 124 | - redpanda-0:/var/lib/redpanda/data 125 | ports: 126 | - 18081:18081 127 | - 18082:18082 128 | - 19092:19092 129 | - 19644:9644 130 | healthcheck: 131 | test: ["CMD-SHELL", "rpk cluster health | grep -E 'Healthy:.+true' || exit 1"] 132 | interval: 15s 133 | timeout: 3s 134 | retries: 5 135 | start_period: 5s 136 | # Conduktor comes with its Gateway, a Kafka proxy bringing many security and governance features. 137 | # In this get started, Gateway uses Redpanda as its backend Kafka cluster. 138 | # https://docs.conduktor.io/gateway/ 139 | conduktor-gateway: 140 | image: conduktor/conduktor-gateway:3.9.0 141 | hostname: conduktor-gateway 142 | container_name: conduktor-gateway 143 | environment: 144 | KAFKA_BOOTSTRAP_SERVERS: redpanda-0:9092 145 | ports: 146 | - "8888:8888" 147 | healthcheck: 148 | test: curl localhost:8888/health 149 | interval: 5s 150 | retries: 25 151 | depends_on: 152 | redpanda-0: 153 | condition: service_healthy 154 | # As this is a get started, we want to bring some life to the cluster to demonstrate the value of Conduktor. 155 | # This is totally optional and only used for this purpose. Do not use it in production. 156 | conduktor-data-generator: 157 | image: conduktor/conduktor-data-generator:0.9 158 | container_name: conduktor-data-generator 159 | environment: 160 | KAFKA_BOOTSTRAP_SERVERS: conduktor-gateway:6969 161 | KAFKA_SCHEMA_REGISTRY_URL: http://redpanda-0:8081 162 | GATEWAY_ADMIN_API: http://conduktor-gateway:8888 163 | restart: on-failure 164 | depends_on: 165 | redpanda-0: 166 | condition: service_healthy 167 | conduktor-gateway: 168 | condition: service_healthy 169 | volumes: 170 | pg_data: {} 171 | pg_data_sql: {} 172 | conduktor_data: {} 173 | redpanda-0: {} 174 | -------------------------------------------------------------------------------- /simple.yml: -------------------------------------------------------------------------------- 1 | services: 2 | postgresql: 3 | image: postgres:14 4 | hostname: postgresql 5 | volumes: 6 | - pg_data:/var/lib/postgresql/data 7 | environment: 8 | POSTGRES_DB: "conduktor-console" 9 | POSTGRES_USER: "conduktor" 10 | POSTGRES_PASSWORD: "change_me" 11 | POSTGRES_HOST_AUTH_METHOD: "scram-sha-256" 12 | healthcheck: 13 | test: ["CMD-SHELL", "pg_isready"] 14 | interval: 10s 15 | timeout: 5s 16 | retries: 5 17 | conduktor-console: 18 | image: conduktor/conduktor-console:1.34.3 19 | ports: 20 | - "8080:8080" 21 | volumes: 22 | - conduktor_data:/var/conduktor 23 | environment: 24 | CDK_ORGANIZATION_NAME: "getting-started" 25 | CDK_DATABASE_URL: "postgresql://conduktor:change_me@postgresql:5432/conduktor-console" 26 | CDK_MONITORING_CORTEX-URL: http://conduktor-monitoring:9009/ 27 | CDK_MONITORING_ALERT-MANAGER-URL: http://conduktor-monitoring:9010/ 28 | CDK_MONITORING_CALLBACK-URL: http://conduktor-platform:8080/monitoring/api/ 29 | CDK_MONITORING_NOTIFICATIONS-CALLBACK-URL: http://localhost:8080 30 | depends_on: 31 | postgresql: 32 | condition: service_healthy 33 | conduktor-monitoring: 34 | image: conduktor/conduktor-console-cortex:1.34.3 35 | environment: 36 | CDK_CONSOLE-URL: "http://conduktor-console:8080" 37 | volumes: 38 | pg_data: {} 39 | conduktor_data: {} 40 | -------------------------------------------------------------------------------- /sql/README.md: -------------------------------------------------------------------------------- 1 | # 🚀 Conduktor SQL Alpha 2 | 3 | This alpha introduces SQL as a first-class citizen in Conduktor for exploration, troubleshooting and quality purposes. It also makes your Kafka data accessible via API to integrate with your existing dashboards and pipelines (e.g. Grafana, Apache Superset, dbt). 4 | 5 | Note that all SQL queries provides an ad-hoc view of the data inside Kafka at query execution time, it is not a replacement for SQL processing, i.e. push queries (ksqlDB, Flink, Spark). 6 | 7 | # Why 8 | 9 | - Our intention is to reconcile Kafka data with those using SQL (everyone knows SQL, right?) 10 | - Converge Kafka data at source with Analytics data, eliminating unnecessary data pipelines 11 | - Simplify access to data while also facilitating the development towards 'data as a product' 12 | - Faster resolution of Kafka troubleshooting (message data and metadata) through SQL 13 | 14 | # How 15 | 16 | ## Run 17 | ``` 18 | docker compose up 19 | ``` 20 | 21 | ## Query data inside Conduktor 22 | 23 | When the container is up, you will find a new SQL tab inside the Console interface: 24 | 25 | ![condukor-sql-quickstart-min](https://github.com/conduktor/kafka-security-manager/assets/2573301/c33d643a-b964-430e-804c-a921cfd819b7) 26 | 27 | Run a `DESCRIBE ` query to view the underlying schema, note that you can also query message metadata such as: 28 | - partition, offset, key 29 | - batch compression type, batch size 30 | - schemaId 31 | 32 | 33 | ## Query data outside Conduktor (Clickhouse, MySQL, PostgreSQL) 34 | 35 | To access your Kafka data via SQL outside Conduktor, you can use either clickhouse, mysql or postgres connections. 36 | 37 | Clickhouse conduktor 38 | 39 | ### Connection details 40 | 41 | **Host**: `conduktor-sql` 42 | 43 | **Ports**: 44 | | Connection | Port | 45 | |----------|----------| 46 | | Clickhouse HTTP | `8123` | 47 | | Clickhouse native | `9000` | 48 | | mysql | `9004` | 49 | | postgres | `9005` | 50 | 51 | Note that it's recommended to use Clickhouse or mysql for the best experience today. 52 | 53 | **Database**: `` 54 | 55 | **Authentication**: For Clickhouse, you can use the same credentials used to log into Conduktor. For mysql and postgres, you should use the environment variables from the docker compose (i.e. default values of `conduktor` and `change_me`). 56 | 57 | ## Want to discuss this Alpha? Need support? 58 | 59 | We'd love to chat, get in [contact](https://www.conduktor.io/contact/demo/) with us. 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /sql/clickhouse.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1000 6 | 1000 7 | 1000 8 | 3 9 | 50 10 | 1000 11 | 12 | 13 | 18 | 19 | -------------------------------------------------------------------------------- /sql/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | 3 | services: 4 | 5 | postgresql: 6 | image: postgres:14 7 | hostname: postgresql 8 | volumes: 9 | - pg_data:/var/lib/postgresql/data 10 | environment: 11 | PGDATA: "/var/lib/postgresql/data" 12 | POSTGRES_DB: "conduktor-console" 13 | POSTGRES_USER: "conduktor" 14 | POSTGRES_PASSWORD: "change_me" 15 | POSTGRES_HOST_AUTH_METHOD: "scram-sha-256" 16 | 17 | conduktor-console: 18 | image: harbor.cdkt.dev/public/conduktor-console:1.22.0-sql0 19 | depends_on: 20 | - postgresql 21 | - redpanda-0 22 | ports: 23 | - "8080:8080" 24 | volumes: 25 | - conduktor_data:/var/conduktor 26 | environment: 27 | CDK_DATABASE_URL: "postgresql://conduktor:change_me@postgresql:5432/conduktor-console" 28 | CDK_CLUSTERS_0_ID: "local-kafka" 29 | CDK_CLUSTERS_0_NAME: "local-kafka" 30 | CDK_CLUSTERS_0_BOOTSTRAPSERVERS: "redpanda-0:9092" 31 | CDK_CLUSTERS_0_SCHEMAREGISTRY_URL: "http://redpanda-0:18081" 32 | CDK_CLUSTERS_0_COLOR: "#6A57C8" 33 | CDK_CLUSTERS_0_ICON: "kafka" 34 | CDK_CLUSTERS_1_ID: "cdk-gateway" 35 | CDK_CLUSTERS_1_NAME: "cdk-gateway" 36 | CDK_CLUSTERS_1_BOOTSTRAPSERVERS: "conduktor-gateway:6969" 37 | CDK_CLUSTERS_1_SCHEMAREGISTRY_URL: "http://redpanda-0:18081" 38 | CDK_CLUSTERS_1_KAFKAFLAVOR_URL: "http://conduktor-gateway:8888" 39 | CDK_CLUSTERS_1_KAFKAFLAVOR_USER: "admin" 40 | CDK_CLUSTERS_1_KAFKAFLAVOR_PASSWORD: "conduktor" 41 | CDK_CLUSTERS_1_KAFKAFLAVOR_VIRTUALCLUSTER: "passthrough" 42 | CDK_CLUSTERS_1_KAFKAFLAVOR_TYPE: "Gateway" 43 | CDK_CLUSTERS_1_COLOR: "#6A57C8" 44 | CDK_CLUSTERS_1_ICON: "dog" 45 | CDK_MONITORING_CORTEX-URL: http://conduktor-monitoring:9009/ 46 | CDK_MONITORING_ALERT-MANAGER-URL: http://conduktor-monitoring:9010/ 47 | CDK_MONITORING_CALLBACK-URL: http://conduktor-console:8080/monitoring/api/ 48 | CDK_MONITORING_NOTIFICATIONS-CALLBACK-URL: http://localhost:8080 49 | CDK_SQL_CLICKHOUSE-URL: "http://conduktor:change_me@clickhouse:8123" 50 | CDK_SQL_MARKDOWN-URL: "https://raw.githubusercontent.com/haianh1233/markdown-test/main/" 51 | 52 | conduktor-monitoring: 53 | image: conduktor/conduktor-console-cortex:1.22.0 54 | environment: 55 | CDK_CONSOLE-URL: "http://conduktor-console:8080" 56 | 57 | redpanda-0: 58 | command: 59 | - redpanda 60 | - start 61 | - --kafka-addr internal://0.0.0.0:9092,external://0.0.0.0:19092 62 | - --advertise-kafka-addr internal://redpanda-0:9092,external://localhost:19092 63 | - --pandaproxy-addr internal://0.0.0.0:8082,external://0.0.0.0:18082 64 | # Address the broker advertises to clients that connect to the HTTP Proxy. 65 | - --advertise-pandaproxy-addr internal://redpanda-0:8082,external://localhost:18082 66 | - --schema-registry-addr internal://0.0.0.0:8081,external://0.0.0.0:18081 67 | # Redpanda brokers use the RPC API to communicate with eachother internally. 68 | - --rpc-addr redpanda-0:33145 69 | - --advertise-rpc-addr redpanda-0:33145 70 | - --smp 1 71 | - --memory 1G 72 | - --mode dev-container 73 | - --default-log-level=info 74 | image: docker.redpanda.com/redpandadata/redpanda:v23.1.11 75 | container_name: redpanda-0 76 | volumes: 77 | - redpanda-0:/var/lib/redpanda/data 78 | ports: 79 | - 18081:18081 80 | - 18082:18082 81 | - 19092:19092 82 | - 19644:9644 83 | healthcheck: 84 | test: ["CMD-SHELL", "rpk cluster health | grep -E 'Healthy:.+true' || exit 1"] 85 | interval: 15s 86 | timeout: 3s 87 | retries: 5 88 | start_period: 5s 89 | 90 | conduktor-gateway: 91 | image: conduktor/conduktor-gateway:3.0.1 92 | hostname: conduktor-gateway 93 | container_name: conduktor-gateway 94 | environment: 95 | KAFKA_BOOTSTRAP_SERVERS: redpanda-0:9092 96 | ports: 97 | - "8888:8888" 98 | healthcheck: 99 | test: curl localhost:8888/health 100 | interval: 5s 101 | retries: 25 102 | depends_on: 103 | redpanda-0: 104 | condition: service_healthy 105 | 106 | conduktor-data-generator: 107 | image: conduktor/conduktor-data-generator:0.3 108 | container_name: conduktor-data-generator 109 | environment: 110 | KAFKA_BOOTSTRAP_SERVERS: conduktor-gateway:6969 111 | KAFKA_SCHEMA_REGISTRY_URL: http://redpanda-0:8081 112 | GATEWAY_ADMIN_API: http://conduktor-gateway:8888 113 | restart: on-failure 114 | depends_on: 115 | redpanda-0: 116 | condition: service_healthy 117 | conduktor-gateway: 118 | condition: service_healthy 119 | 120 | conduktor-sql: 121 | image: clickhouse/clickhouse-server 122 | hostname: clickhouse 123 | ports: 124 | - "8123:8123" # http 125 | - "9000:9000" # native 126 | - "9004:9004" # MySQL 127 | - "9005:9005" # PostgreSQL 128 | environment: 129 | CLICKHOUSE_USER: "conduktor" 130 | CLICKHOUSE_PASSWORD: "change_me" 131 | CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1 132 | CDK_LOGIN_URL: http://conduktor-console:8080/auth/login 133 | volumes: 134 | - ./clickhouse.xml:/etc/clickhouse-server/config.d/config.xml 135 | - conduktor_sql_data:/var/lib/clickhouse 136 | 137 | volumes: 138 | pg_data: {} 139 | conduktor_data: {} 140 | redpanda-0: {} 141 | conduktor_sql_data: {} 142 | --------------------------------------------------------------------------------