scouter_settings/
events.rs1use serde::Serialize;
2
3#[derive(Clone, Serialize)]
4pub struct KafkaSettings {
5 pub brokers: String,
6 pub num_workers: usize,
7 pub topics: Vec<String>,
8 pub group_id: String,
9 pub username: Option<String>,
10 pub password: Option<String>,
11 pub security_protocol: String,
12 pub sasl_mechanism: String,
13 pub offset_reset: String,
14 pub cert_location: Option<String>,
15}
16
17impl std::fmt::Debug for KafkaSettings {
18 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
19 f.debug_struct("KafkaSettings")
20 .field("brokers", &self.brokers)
21 .field("num_workers", &self.num_workers)
22 .field("topics", &self.topics)
23 .field("group_id", &self.group_id)
24 .field("username", &self.username)
25 .field("password", &self.password.as_ref().map(|_| "***"))
26 .field("security_protocol", &self.security_protocol)
27 .field("offset_reset", &self.offset_reset)
28 .field("sasl_mechanism", &self.sasl_mechanism)
29 .finish()
30 }
31}
32
33impl Default for KafkaSettings {
34 fn default() -> Self {
35 let brokers =
36 std::env::var("KAFKA_BROKERS").unwrap_or_else(|_| "localhost:9092".to_string());
37
38 let num_workers = std::env::var("KAFKA_WORKER_COUNT")
39 .unwrap_or_else(|_| "3".to_string())
40 .parse::<usize>()
41 .unwrap();
42
43 let topics = std::env::var("KAFKA_TOPIC")
44 .unwrap_or_else(|_| "scouter_monitoring".to_string())
45 .split(',')
46 .map(|s| s.to_string())
47 .collect();
48
49 let group_id = std::env::var("KAFKA_GROUP").unwrap_or("scouter".to_string());
50 let offset_reset = std::env::var("KAFKA_OFFSET_RESET")
51 .unwrap_or_else(|_| "earliest".to_string())
52 .to_string();
53 let username: Option<String> = std::env::var("KAFKA_USERNAME").ok();
54 let password: Option<String> = std::env::var("KAFKA_PASSWORD").ok();
55
56 let security_protocol = std::env::var("KAFKA_SECURITY_PROTOCOL")
57 .ok()
58 .unwrap_or_else(|| "SASL_SSL".to_string());
59 let sasl_mechanism = std::env::var("KAFKA_SASL_MECHANISM")
60 .ok()
61 .unwrap_or_else(|| "PLAIN".to_string());
62 let cert_location = std::env::var("KAFKA_CERT_LOCATION").ok();
63
64 Self {
65 brokers,
66 num_workers,
67 topics,
68 group_id,
69 username,
70 password,
71 security_protocol,
72 sasl_mechanism,
73 offset_reset,
74 cert_location,
75 }
76 }
77}
78
79#[derive(Debug, Clone, Serialize)]
80pub struct RabbitMQSettings {
81 pub num_consumers: usize,
82 pub prefetch_count: u16,
83 pub queue: String,
84 pub consumer_tag: String,
85 pub address: String,
86}
87impl Default for RabbitMQSettings {
88 fn default() -> Self {
89 let num_consumers = std::env::var("RABBITMQ_CONSUMER_COUNT")
90 .unwrap_or_else(|_| "3".to_string())
91 .parse::<usize>()
92 .unwrap();
93
94 let prefetch_count = std::env::var("RABBITMQ_PREFETCH_COUNT")
95 .unwrap_or_else(|_| "10".to_string())
96 .parse::<u16>()
97 .unwrap();
98
99 let address = std::env::var("RABBITMQ_ADDR")
100 .unwrap_or_else(|_| "amqp://guest:guest@127.0.0.1:5672/%2f".to_string());
101
102 let queue =
103 std::env::var("RABBITMQ_QUEUE").unwrap_or_else(|_| "scouter_monitoring".to_string());
104
105 let consumer_tag =
106 std::env::var("RABBITMQ_CONSUMER_TAG").unwrap_or_else(|_| "scouter".to_string());
107
108 Self {
109 num_consumers,
110 prefetch_count,
111 queue,
112 consumer_tag,
113 address,
114 }
115 }
116}
117
118#[derive(Debug, Clone, Serialize)]
119pub struct RedisSettings {
120 pub num_consumers: usize,
121 pub channel: String,
122 pub address: String,
123}
124
125impl Default for RedisSettings {
126 fn default() -> Self {
127 let num_consumers = std::env::var("REDIS_CONSUMER_COUNT")
128 .unwrap_or_else(|_| "3".to_string())
129 .parse::<usize>()
130 .unwrap();
131 let channel =
132 std::env::var("REDIS_CHANNEL").unwrap_or_else(|_| "scouter_monitoring".to_string());
133
134 let address =
135 std::env::var("REDIS_ADDR").unwrap_or_else(|_| "redis://127.0.0.1:6379".to_string());
136
137 Self {
138 num_consumers,
139 channel,
140 address,
141 }
142 }
143}
144
145#[derive(Debug, Clone)]
146pub struct HttpConsumerSettings {
147 pub num_workers: usize,
148}
149impl Default for HttpConsumerSettings {
150 fn default() -> Self {
151 let num_workers = std::env::var("HTTP_CONSUMER_WORKER_COUNT")
152 .unwrap_or_else(|_| "1".to_string())
153 .parse::<usize>()
154 .unwrap();
155
156 Self { num_workers }
157 }
158}