#[non_exhaustive]pub struct ServiceLevelObjectiveQuery {
pub denominator: String,
pub numerator: String,
pub additional_properties: BTreeMap<String, Value>,
/* private fields */
}
Expand description
A metric-based SLO. Required if type is metric
. Note that Datadog only allows the sum by aggregator
to be used because this will sum up all request counts instead of averaging them, or taking the max or
min of all of those requests.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.denominator: String
A Datadog metric query for total (valid) events.
numerator: String
A Datadog metric query for good events.
additional_properties: BTreeMap<String, Value>
Implementations§
Source§impl ServiceLevelObjectiveQuery
impl ServiceLevelObjectiveQuery
Sourcepub fn new(denominator: String, numerator: String) -> ServiceLevelObjectiveQuery
pub fn new(denominator: String, numerator: String) -> ServiceLevelObjectiveQuery
Examples found in repository?
examples/v1_service-level-objectives_UpdateSLO.rs (lines 20-23)
11async fn main() {
12 // there is a valid "slo" in the system
13 let slo_data_0_id = std::env::var("SLO_DATA_0_ID").unwrap();
14 let slo_data_0_name = std::env::var("SLO_DATA_0_NAME").unwrap();
15 let body = ServiceLevelObjective::new(
16 slo_data_0_name.clone(),
17 vec![SLOThreshold::new(97.0, SLOTimeframe::SEVEN_DAYS).warning(98.0 as f64)],
18 SLOType::METRIC,
19 )
20 .query(ServiceLevelObjectiveQuery::new(
21 "sum:httpservice.hits{!code:3xx}.as_count()".to_string(),
22 "sum:httpservice.hits{code:2xx}.as_count()".to_string(),
23 ))
24 .target_threshold(97.0 as f64)
25 .timeframe(SLOTimeframe::SEVEN_DAYS)
26 .warning_threshold(98.0 as f64);
27 let configuration = datadog::Configuration::new();
28 let api = ServiceLevelObjectivesAPI::with_config(configuration);
29 let resp = api.update_slo(slo_data_0_id.clone(), body).await;
30 if let Ok(value) = resp {
31 println!("{:#?}", value);
32 } else {
33 println!("{:#?}", resp.unwrap_err());
34 }
35}
More examples
examples/v1_service-level-objectives_CreateSLO.rs (lines 23-26)
11async fn main() {
12 let body = ServiceLevelObjectiveRequest::new(
13 "Example-Service-Level-Objective".to_string(),
14 vec![SLOThreshold::new(97.0, SLOTimeframe::SEVEN_DAYS)
15 .target_display("97.0".to_string())
16 .warning(98.0 as f64)
17 .warning_display("98.0".to_string())],
18 SLOType::METRIC,
19 )
20 .description(Some("string".to_string()))
21 .groups(vec!["env:test".to_string(), "role:mysql".to_string()])
22 .monitor_ids(vec![])
23 .query(ServiceLevelObjectiveQuery::new(
24 "sum:httpservice.hits{!code:3xx}.as_count()".to_string(),
25 "sum:httpservice.hits{code:2xx}.as_count()".to_string(),
26 ))
27 .tags(vec!["env:prod".to_string(), "app:core".to_string()])
28 .target_threshold(97.0 as f64)
29 .timeframe(SLOTimeframe::SEVEN_DAYS)
30 .warning_threshold(98.0 as f64);
31 let configuration = datadog::Configuration::new();
32 let api = ServiceLevelObjectivesAPI::with_config(configuration);
33 let resp = api.create_slo(body).await;
34 if let Ok(value) = resp {
35 println!("{:#?}", value);
36 } else {
37 println!("{:#?}", resp.unwrap_err());
38 }
39}
pub fn additional_properties(self, value: BTreeMap<String, Value>) -> Self
Trait Implementations§
Source§impl Clone for ServiceLevelObjectiveQuery
impl Clone for ServiceLevelObjectiveQuery
Source§fn clone(&self) -> ServiceLevelObjectiveQuery
fn clone(&self) -> ServiceLevelObjectiveQuery
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for ServiceLevelObjectiveQuery
impl Debug for ServiceLevelObjectiveQuery
Source§impl<'de> Deserialize<'de> for ServiceLevelObjectiveQuery
impl<'de> Deserialize<'de> for ServiceLevelObjectiveQuery
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl StructuralPartialEq for ServiceLevelObjectiveQuery
Auto Trait Implementations§
impl Freeze for ServiceLevelObjectiveQuery
impl RefUnwindSafe for ServiceLevelObjectiveQuery
impl Send for ServiceLevelObjectiveQuery
impl Sync for ServiceLevelObjectiveQuery
impl Unpin for ServiceLevelObjectiveQuery
impl UnwindSafe for ServiceLevelObjectiveQuery
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more