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