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