libdd_telemetry/data/
metrics.rs1use libdd_common::tag::Tag;
5use serde::{Deserialize, Serialize};
6
7#[derive(Serialize, Debug)]
8pub struct Serie {
9 pub namespace: MetricNamespace,
10 pub metric: String,
11 pub points: Vec<(u64, f64)>,
12 pub tags: Vec<Tag>,
13 pub common: bool,
14 #[serde(rename = "type")]
15 pub _type: MetricType,
16 pub interval: u64,
17}
18
19#[derive(Serialize, Debug)]
20pub struct Distribution {
21 pub namespace: MetricNamespace,
22 pub metric: String,
23 pub tags: Vec<Tag>,
24 #[serde(flatten)]
25 pub sketch: SerializedSketch,
26 pub common: bool,
27 pub interval: u64,
28 #[serde(rename = "type")]
29 pub _type: MetricType,
30}
31
32#[derive(Serialize, Debug)]
33#[serde(untagged)]
34pub enum SerializedSketch {
35 Bytes { sketch: Vec<u8> },
36 B64 { sketch_b64: String },
37}
38
39#[derive(
40 Serialize,
41 Deserialize,
42 Debug,
43 Clone,
44 Copy,
45 PartialEq,
46 Eq,
47 Hash,
48 strum_macros::Display,
49 strum_macros::EnumIter,
50 strum_macros::IntoStaticStr,
51)]
52#[serde(rename_all = "snake_case")]
53#[strum(serialize_all = "snake_case")]
54#[repr(C)]
55pub enum MetricNamespace {
56 Tracers,
57 Profilers,
58 Rum,
59 Appsec,
60 IdePlugins,
61 LiveDebugger,
62 Iast,
63 General,
64 Telemetry,
65 Apm,
66 Sidecar,
67 Civisibility,
68 Mlobs,
69 Ddtraceapi,
70 AiGuard,
71}
72
73#[derive(
74 Serialize,
75 Deserialize,
76 Debug,
77 Clone,
78 Copy,
79 PartialEq,
80 Eq,
81 Hash,
82 strum_macros::Display,
83 strum_macros::EnumIter,
84 strum_macros::IntoStaticStr,
85)]
86#[serde(rename_all = "snake_case")]
87#[strum(serialize_all = "snake_case")]
88#[repr(C)]
89pub enum MetricType {
90 Gauge,
91 Count,
92 Distribution,
93 Rate,
94}