Skip to main content

libdd_telemetry/data/
metrics.rs

1// Copyright 2021-Present Datadog, Inc. https://www.datadoghq.com/
2// SPDX-License-Identifier: Apache-2.0
3
4use 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}