version: "3" services: jmx-exporter: build: ./jmx-exporter tty: true volumes: - jmx-exporter-vol:/usr/share/jmx_exporter/ zookeeper-1: image: confluentinc/cp-zookeeper hostname: zookeeper-1 ports: - 12181:2181 environment: ZOOKEEPER_SERVER_ID: "1" ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_SERVERS: zookeeper-1:2888:3888;zookeeper-2:2888:3888;zookeeper-3:2888:3888 ZOOKEEPER_4LW_COMMANDS_WHITELIST: "*" EXTRA_ARGS: -javaagent:/usr/share/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=1234:/usr/share/jmx_exporter/zookeeper.yml KAFKA_HEAP_OPTS: "-Xmx512M -Xms512M" volumes: - jmx-exporter-vol:/usr/share/jmx_exporter/ depends_on: - jmx-exporter zookeeper-2: image: confluentinc/cp-zookeeper hostname: zookeeper-2 ports: - 12182:2181 environment: ZOOKEEPER_SERVER_ID: "2" ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_SERVERS: zookeeper-1:2888:3888;zookeeper-2:2888:3888;zookeeper-3:2888:3888 ZOOKEEPER_4LW_COMMANDS_WHITELIST: "*" EXTRA_ARGS: -javaagent:/usr/share/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=1234:/usr/share/jmx_exporter/zookeeper.yml KAFKA_HEAP_OPTS: "-Xmx512M -Xms512M" volumes: - jmx-exporter-vol:/usr/share/jmx_exporter/ depends_on: - jmx-exporter zookeeper-3: image: confluentinc/cp-zookeeper hostname: zookeeper-3 ports: - 12183:2181 environment: ZOOKEEPER_SERVER_ID: "3" ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_SERVERS: zookeeper-1:2888:3888;zookeeper-2:2888:3888;zookeeper-3:2888:3888 ZOOKEEPER_4LW_COMMANDS_WHITELIST: "*" EXTRA_ARGS: -javaagent:/usr/share/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=1234:/usr/share/jmx_exporter/zookeeper.yml KAFKA_HEAP_OPTS: "-Xmx512M -Xms512M" volumes: - jmx-exporter-vol:/usr/share/jmx_exporter/ depends_on: - jmx-exporter kafka-1: image: confluentinc/cp-kafka:5.4.0 hostname: kafka-1 ports: - 19092:19092 depends_on: - zookeeper-1 - zookeeper-2 - zookeeper-3 - jmx-exporter environment: KAFKA_LISTENERS: "INTERNAL://kafka-1:9092,EXTERNAL://:19092" KAFKA_ADVERTISED_LISTENERS: "INTERNAL://kafka-1:9092,EXTERNAL://localhost:19092" KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT" KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false" KAFKA_ZOOKEEPER_CONNECT: "zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181,zookeeper-4:2181" KAFKA_BROKER_ID: "1" KAFKA_OPTS: -javaagent:/usr/share/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=1234:/usr/share/jmx_exporter/kafka-2.0.0.yml KAFKA_HEAP_OPTS: "-Xmx512M -Xms512M" volumes: - jmx-exporter-vol:/usr/share/jmx_exporter/ kafka-2: image: confluentinc/cp-kafka:5.4.0 hostname: kafka-2 ports: - 19093:9092 depends_on: - zookeeper-1 - zookeeper-2 - zookeeper-3 - jmx-exporter environment: KAFKA_ZOOKEEPER_CONNECT: "zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181,zookeeper-4:2181" KAFKA_LISTENERS: "INTERNAL://kafka-2:9092,EXTERNAL://:19093" KAFKA_ADVERTISED_LISTENERS: "INTERNAL://kafka-2:9092,EXTERNAL://localhost:19093" KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT" KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false" KAFKA_BROKER_ID: "2" KAFKA_OPTS: -javaagent:/usr/share/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=1234:/usr/share/jmx_exporter/kafka-2.0.0.yml KAFKA_HEAP_OPTS: "-Xmx512M -Xms512M" volumes: - jmx-exporter-vol:/usr/share/jmx_exporter/ kafka-3: image: confluentinc/cp-kafka:5.4.0 hostname: kafka-3 ports: - 19094:9092 depends_on: - zookeeper-1 - zookeeper-2 - zookeeper-3 - jmx-exporter environment: KAFKA_ZOOKEEPER_CONNECT: "zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181,zookeeper-4:2181" KAFKA_LISTENERS: "INTERNAL://kafka-3:9092,EXTERNAL://localhost:19094" KAFKA_ADVERTISED_LISTENERS: "INTERNAL://kafka-3:9092,EXTERNAL://localhost:19094" KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT" KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false" KAFKA_BROKER_ID: "3" KAFKA_OPTS: -javaagent:/usr/share/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=1234:/usr/share/jmx_exporter/kafka-2.0.0.yml KAFKA_HEAP_OPTS: "-Xmx512M -Xms512M" volumes: - jmx-exporter-vol:/usr/share/jmx_exporter/ producer: build: ./sample-application/producer environment: JAVA_OPTS: -javaagent:/usr/share/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=1234:/usr/share/jmx_exporter/kafka-producer.yml -Xmx256M -Xms256M volumes: - jmx-exporter-vol:/usr/share/jmx_exporter/ depends_on: - jmx-exporter - kafka-1 - kafka-2 - kafka-3 consumer-1: build: ./sample-application/consumer hostname: consumer-1 environment: JAVA_OPTS: -javaagent:/usr/share/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=1234:/usr/share/jmx_exporter/kafka-consumer.yml -Xmx256M -Xms256M volumes: - jmx-exporter-vol:/usr/share/jmx_exporter/ depends_on: - jmx-exporter - kafka-1 - kafka-2 - kafka-3 consumer-2: build: ./sample-application/consumer hostname: consumer-2 environment: JAVA_OPTS: -javaagent:/usr/share/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=1234:/usr/share/jmx_exporter/kafka-consumer.yml -Xmx256M -Xms256M volumes: - jmx-exporter-vol:/usr/share/jmx_exporter/ depends_on: - jmx-exporter - kafka-1 - kafka-2 - kafka-3 consumer-3: build: ./sample-application/consumer hostname: consumer-3 environment: JAVA_OPTS: -javaagent:/usr/share/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=1234:/usr/share/jmx_exporter/kafka-consumer.yml -Xmx256M -Xms256M volumes: - jmx-exporter-vol:/usr/share/jmx_exporter/ depends_on: - jmx-exporter - kafka-1 - kafka-2 - kafka-3 prometheus: image: prom/prometheus:v2.11.1 ports: - 9090:9090 volumes: - ./prometheus/:/etc/prometheus/ alertmanager: image: prom/alertmanager:v0.18.0 ports: - 9093:9093 node-exporter: image: prom/node-exporter:v0.18.1 volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro command: - '--path.procfs=/host/proc' - '--path.sysfs=/host/sys' - '--collector.filesystem.ignored-mount-points' - '^(aufs|proc|nsfs|shm|cgroup|tmpfs|binfmt_misc|debugfs|devpts|fusectl|hugetlbfs|fuse.lxcfs|mqueue|pstore|securityfs|sysfs|autofs|devtmpfs|configfs)' kafka-lag-exporter: image: lightbend/kafka-lag-exporter:0.5.5 hostname: kafka-lag-exporter restart: always ports: - 9999:9999 volumes: - ./kafka-lag-exporter/application.conf:/opt/docker/conf/application.conf - ./kafka-lag-exporter/logback.xml:/opt/docker/conf/logback.xml grafana: image: grafana/grafana:6.6.2 environment: GF_INSTALL_PLUGINS: grafana-piechart-panel ports: - 3000:3000 volumes: - ./grafana/provisioning/:/etc/grafana/provisioning/ # # Example workloads for KStreams performance testing # kstreams-1: image: kstreams-perf-test-app environment: JAVA_OPTS: -javaagent:/usr/share/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=1234:/usr/share/jmx_exporter/kafka-producer.yml -Xmx256M -Xms256M STREAMS_SCHEMA_REGISTRY_HOST: schema-registry STREAMS_SCHEMA_REGISTRY_PORT: 8081 volumes: - jmx-exporter-vol:/usr/share/jmx_exporter/ depends_on: - jmx-exporter - kafka-1 - kafka-2 - kafka-3 - schema-registry # # Some applications require a Schema-Registry # schema-registry: image: confluentinc/cp-schema-registry:5.4.1 hostname: schema-registry ports: - 8081:8081 environment: SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: kafka-1:9092,kafka-2:9092,kafka-3:9092 SCHEMA_REGISTRY_HOST_NAME: schema-registry SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8081 SCHEMA_REGISTRY_DEBUG: "true" depends_on: - zookeeper-1 - zookeeper-2 - zookeeper-3 - kafka-1 - kafka-2 - kafka-3 volumes: jmx-exporter-vol: {}