Skip to content

Commit 90844e0

Browse files
committed
Add prometheus metrics and exporter to topics observer
1 parent d18e103 commit 90844e0

12 files changed

+1340
-88
lines changed

Cargo.lock

+954-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+5-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ env_logger = "0.7.1"
3030
futures = "0.3.0"
3131
byte-unit = "4.0.6"
3232
pretty-bytes = "0.2.2"
33+
prometheus = "0.9.0"
34+
lazy_static = "1.4.0"
35+
actix-web = "2.0.0"
36+
actix-rt = "1.1.1"
37+
ctrlc = "3.1.5"
3338

3439

3540
[profile.dev]
@@ -47,7 +52,6 @@ path = "src/lib.rs"
4752
name = "kafka-replicator"
4853
path = "src/main.rs"
4954

50-
5155
[[bin]]
5256
name = "kafka-producer"
5357
path = "src/producer.rs"

Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM rust:1.44.1
1+
FROM rust:1.45.0
22

33

44
RUN apt-get update -y && apt-get install -y \

Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
shell:
2-
docker-compose -f docker-compose.yml run --rm --use-aliases --service-ports app /bin/bash
2+
docker-compose -f docker-compose.yml run --rm --use-aliases app /bin/bash
33

44
build:
55
docker-compose -f docker-compose.yml build
@@ -8,7 +8,7 @@ build:
88
replicator:
99
# docker-compose -f docker-compose.yml run --rm --service-ports app cargo run --bin=replicator --verbose -- --config=fixtures/example_config.toml -p 9445 -h 0.0.0.0
1010

11-
docker-compose -f docker-compose.yml run --rm --use-aliases --service-ports app cargo run --bin=replicator --verbose -- examples/example_config.toml
11+
docker-compose -f docker-compose.yml run --rm --use-aliases app cargo run --bin=kafka-replicator --verbose -- examples/example-config.yaml
1212

1313
up:
1414
docker-compose -f docker-compose.yml up --rm

README.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ routes:
105105
downstream_topic: 'topic2'
106106
repartitioning_strategy: random # strict_p2p | random
107107
upstream_group_id: group_22
108-
progress_every_secs: 10
108+
show_progress_interval_secs: 10
109109
limits:
110110
messages_per_sec: 10000
111111
number_of_messages:
@@ -117,7 +117,7 @@ routes:
117117
downstream_topic: 'topic2'
118118
repartitioning_strategy: strict_p2p
119119
upstream_group_id: group_22
120-
progress_every_secs: 10
120+
show_progress_interval_secs: 10
121121

122122
- upstream_client: cl_2_client_1
123123
downstream_client: cl_1_client_1
@@ -127,7 +127,7 @@ routes:
127127
repartitioning_strategy: strict_p2p # strict_p2p | random
128128
default_begin_offset: earliest # optional
129129
upstream_group_id: group_2
130-
progress_every_secs: 10
130+
show_progress_interval_secs: 10
131131

132132

133133
observers:
@@ -137,13 +137,13 @@ observers:
137137
- 'topic1'
138138
- 'topic2'
139139
fetch_timeout_secs: 5
140-
show_progress_every_secs: 10
140+
show_progress_interval_secs: 10
141141

142142
- client: cl_2_client_1
143143
topic: 'topic3'
144144
topics:
145145
- 'topic2'
146-
show_progress_every_secs: 5
146+
show_progress_interval_secs: 5
147147

148148

149149
- client: cl_1_client_1

examples/example-config.yml

+22-6
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,22 @@ routes:
2626
downstream_topic: 'topic2'
2727
repartitioning_strategy: random # strict_p2p | random
2828
upstream_group_id: group_22
29-
progress_every_secs: 10
29+
show_progress_interval_secs: 10
3030
limits:
3131
messages_per_sec: 10000
3232
number_of_messages:
3333

34+
labels:
35+
label_key: label_value
36+
3437
- upstream_client: cl_1_client_1
3538
downstream_client: cl_2_client_1
3639
upstream_topics:
3740
- 'topic2'
3841
downstream_topic: 'topic2'
3942
repartitioning_strategy: random # strict_p2p | random
4043
upstream_group_id: group_22
41-
progress_every_secs: 10
44+
show_progress_interval_secs: 10
4245

4346
- upstream_client: cl_2_client_1
4447
downstream_client: cl_1_client_1
@@ -48,25 +51,38 @@ routes:
4851
repartitioning_strategy: strict_p2p # strict_p2p | random
4952
default_begin_offset: earliest # optional
5053
upstream_group_id: group_2
51-
progress_every_secs: 10
54+
show_progress_interval_secs: 10
5255

5356

5457
observers:
5558
- client: cl_1_client_1
5659
name: "my name"
60+
group_id: "group_id"
5761
topics:
5862
- 'topic1'
5963
- 'topic2'
6064
fetch_timeout_secs: 5
61-
show_progress_every_secs: 10
65+
fetch_interval_secs: 5
66+
show_progress_interval_secs: 5
67+
labels:
68+
label_key: label_value
69+
env: prod
6270

6371
- client: cl_2_client_1
6472
topic: 'topic3'
6573
topics:
6674
- 'topic2'
67-
show_progress_every_secs: 5
68-
75+
show_progress_interval_secsy: 20
76+
labels:
77+
label_key: label_value2
78+
env: stage
6979

7080
- client: cl_1_client_1
7181
topic: 'topic1'
7282
topics: []
83+
84+
prometheus:
85+
namespace: "app:observer:"
86+
labels:
87+
label_key: label_value
88+
env: prod

examples/experiment-1.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,4 @@ observers:
3939
- 'experimental_topic_1'
4040
- 'experimental_topic_2_output'
4141
fetch_timeout_secs: 5
42-
show_progress_every_secs: 10
42+
show_progress_interval_secs: 10

0 commit comments

Comments
 (0)