542ee1de64518b9663bbd8bd2a17fe1ec5199e20
[demos/kafka/monitoring] / docker-compose.yml
1 version: '3.2'
2
3 services:
4
5   zookeeper:
6     build: zookeeper
7     environment:
8       ALLOW_ANONYMOUS_LOGIN: 'yes'
9       ZOO_ENABLE_PROMETHEUS_METRICS: 'yes'
10     volumes:
11       - zookeeper:/bitnami/zookeeper
12     ports:
13       - 2181:2181
14       - 7000:7070
15
16   kafka-1:
17     build: kafka
18     environment:
19       KAFKA_ENABLE_KRAFT: 'false'
20       KAFKA_OPTS:
21         -Dcom.sun.management.jmxremote=true
22         -Dcom.sun.management.jmxremote.port=7000
23         -Dcom.sun.management.jmxremote.authenticate=false
24       KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper:2181
25       KAFKA_CFG_LISTENERS: BROKER://:9092, LOCALHOST://:9081
26       KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: BROKER:PLAINTEXT, LOCALHOST:PLAINTEXT
27       KAFKA_CFG_ADVERTISED_LISTENERS: BROKER://kafka-1:9092, LOCALHOST://localhost:9081
28       KAFKA_BROKER_ID: 1
29       ALLOW_PLAINTEXT_LISTENER: 'yes'
30       KAFKA_CFG_INTER_BROKER_LISTENER_NAME: BROKER
31       KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
32       KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "false"
33     volumes:
34       - kafka-1:/bitnami/kafka
35     ports:
36       - 9081:9081
37       - 7001:7000
38     depends_on:
39       - zookeeper
40
41   kafka-2:
42     build: kafka
43     environment:
44       KAFKA_ENABLE_KRAFT: 'false'
45       KAFKA_OPTS:
46         -Dcom.sun.management.jmxremote=true
47         -Dcom.sun.management.jmxremote.port=7000
48         -Dcom.sun.management.jmxremote.authenticate=false
49       KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper:2181
50       KAFKA_CFG_LISTENERS: BROKER://:9092, LOCALHOST://:9082
51       KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: BROKER:PLAINTEXT, LOCALHOST:PLAINTEXT
52       KAFKA_CFG_ADVERTISED_LISTENERS: BROKER://kafka-2:9092, LOCALHOST://localhost:9082
53       KAFKA_BROKER_ID: 2
54       ALLOW_PLAINTEXT_LISTENER: 'yes'
55       KAFKA_CFG_INTER_BROKER_LISTENER_NAME: BROKER
56       KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
57       KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "false"
58     volumes:
59       - kafka-2:/bitnami/kafka
60     ports:
61       - 9092:9082
62       - 9082:9082
63       - 7002:7000
64     networks:
65       default:
66         aliases:
67           - kafka
68     depends_on:
69       - zookeeper
70
71   kafka-3:
72     build: kafka
73     environment:
74       KAFKA_ENABLE_KRAFT: 'false'
75       KAFKA_OPTS:
76         -Dcom.sun.management.jmxremote=true
77         -Dcom.sun.management.jmxremote.port=7000
78         -Dcom.sun.management.jmxremote.authenticate=false
79       KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper:2181
80       KAFKA_CFG_LISTENERS: BROKER://:9092, LOCALHOST://:9083
81       KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: BROKER:PLAINTEXT, LOCALHOST:PLAINTEXT
82       KAFKA_CFG_ADVERTISED_LISTENERS: BROKER://kafka-3:9092, LOCALHOST://localhost:9083
83       KAFKA_BROKER_ID: 3
84       ALLOW_PLAINTEXT_LISTENER: 'yes'
85       KAFKA_CFG_INTER_BROKER_LISTENER_NAME: BROKER
86       KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
87       KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "false"
88     volumes:
89       - kafka-3:/bitnami/kafka
90     ports:
91       - 9083:9083
92       - 7003:7000
93     depends_on:
94       - zookeeper
95
96   setup:
97     image: juplo/toolbox
98     command: >
99       bash -c "
100         kafka-topics --bootstrap-server kafka:9092 --delete --if-exists --topic test
101         kafka-topics --bootstrap-server kafka:9092 --create --topic test --partitions 2 --replication-factor 3 --config min.insync.replicas=2
102         kafka-topics --bootstrap-server kafka:9092 --describe --topic test
103       "
104     depends_on:
105       - kafka-1
106       - kafka-2
107       - kafka-3
108
109   cli:
110     image: juplo/toolbox
111     command: sleep infinity
112     depends_on:
113       - kafka-1
114       - kafka-2
115       - kafka-3
116
117   burrow:
118     build: burrow
119     volumes:
120       - ./burrow.conf:/app/burrow.toml:ro
121     ports:
122       - 8080:8080
123
124   burrow_exporter:
125     build: burrow_exporter
126     environment:
127       BURROW_ADDR: http://burrow:8080
128       API_VERSION: 3
129     ports:
130       - 8008:8080
131
132   kafka-lag-exporter:
133     image: seglo/kafka-lag-exporter:0.8.2
134     volumes:
135       - ./kafka-lag-exporter.conf:/opt/docker/conf/application.conf:ro
136     ports:
137       - 8000:8000
138
139   kafka-exporter:
140     image: danielqsj/kafka-exporter:v1.6.0
141     command: --kafka.server kafka:9092
142     ports:
143       - 9308:9308
144
145   prometheus:
146     image: prom/prometheus
147     ports:
148       - "9090:9090"
149     volumes:
150       - ./prometheus.yml:/etc/prometheus/prometheus.yml
151
152   grafana:
153     image: grafana/grafana
154     ports:
155       - "3000:3000"
156     volumes:
157       - grafana:/var/lib/grafana
158
159   producer:
160     image: juplo/simple-producer:1.0-SNAPSHOT
161     entrypoint: java
162         -Dcom.sun.management.jmxremote=true
163         -Dcom.sun.management.jmxremote.port=7000
164         -Dcom.sun.management.jmxremote.local.only=false
165         -Dcom.sun.management.jmxremote.authenticate=false
166         -Dcom.sun.management.jmxremote.ssl=false
167         -jar /opt/app.jar
168     command: kafka:9092 test producer
169     ports:
170       - 7010:7000
171
172   consumer:
173     image: juplo/simple-consumer:1.0-SNAPSHOT
174     entrypoint: java
175         -Dcom.sun.management.jmxremote=true
176         -Dcom.sun.management.jmxremote.port=7000
177         -Dcom.sun.management.jmxremote.local.only=false
178         -Dcom.sun.management.jmxremote.authenticate=false
179         -Dcom.sun.management.jmxremote.ssl=false
180         -jar /opt/app.jar
181     command: kafka:9092 test my-group consumer
182     ports:
183       - 7020:7000
184
185   cli:
186     image: juplo/toolbox
187     command: sleep infinity
188     depends_on:
189       - setup
190
191 volumes:
192
193   zookeeper:
194   kafka-1:
195   kafka-2:
196   kafka-3:
197   grafana: