Skip to main content

prism_telemetry/
config.rs

1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4// Basic auth configuration
5#[derive(Debug, Default, Serialize, Deserialize, Clone)]
6pub struct BasicAuth {
7    pub enabled: bool,
8    pub username: String,
9    pub password: String,
10}
11
12// Configuration for metrics
13#[derive(Debug, Default, Serialize, Deserialize, Clone)]
14pub struct MetricsConfig {
15    pub enabled: bool,
16    pub endpoint: String,
17    pub auth: BasicAuth,
18}
19
20// Configuration for logs
21#[derive(Debug, Default, Serialize, Deserialize, Clone)]
22pub struct LogsConfig {
23    pub enabled: bool,
24    pub endpoint: String,
25    pub auth: BasicAuth,
26}
27
28// Configuration for traces
29#[derive(Debug, Default, Serialize, Deserialize, Clone)]
30pub struct TracesConfig {
31    pub enabled: bool,
32    pub endpoint: String,
33    pub auth: BasicAuth,
34}
35
36// Configuration for profiles
37#[derive(Debug, Default, Serialize, Deserialize, Clone)]
38pub struct ProfilesConfig {
39    pub enabled: bool,
40    pub endpoint: String,
41    pub auth: BasicAuth,
42}
43
44// Global labels to be added to all telemetry types
45#[derive(Debug, Default, Serialize, Deserialize, Clone)]
46pub struct TelemetryLabels {
47    pub labels: HashMap<String, String>,
48}
49
50// Configuration for telemetry components
51#[derive(Debug, Default, Serialize, Deserialize, Clone)]
52pub struct TelemetryConfig {
53    pub metrics: MetricsConfig,
54    pub logs: LogsConfig,
55    pub traces: TracesConfig,
56    pub profiles: ProfilesConfig,
57    pub global_labels: TelemetryLabels,
58}