scouter_settings/
events.rs

1use 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}