v1_monitors_ValidateExistingMonitor/
v1_monitors_ValidateExistingMonitor.rs1use datadog_api_client::datadog;
3use datadog_api_client::datadogV1::api_monitors::MonitorsAPI;
4use datadog_api_client::datadogV1::model::Monitor;
5use datadog_api_client::datadogV1::model::MonitorOptions;
6use datadog_api_client::datadogV1::model::MonitorOptionsNotificationPresets;
7use datadog_api_client::datadogV1::model::MonitorThresholds;
8use datadog_api_client::datadogV1::model::MonitorType;
9use datadog_api_client::datadogV1::model::OnMissingDataOption;
10
11#[tokio::main]
12async fn main() {
13 let monitor_id: i64 = std::env::var("MONITOR_ID").unwrap().parse().unwrap();
15 let body =
16 Monitor::new(
17 r#"logs("service:foo AND type:error").index("main").rollup("count").by("source").last("5m") > 2"#.to_string(),
18 MonitorType::LOG_ALERT,
19 )
20 .message("some message Notify: @hipchat-channel".to_string())
21 .name("Example-Monitor".to_string())
22 .options(
23 MonitorOptions::new()
24 .enable_logs_sample(true)
25 .escalation_message("the situation has escalated".to_string())
26 .evaluation_delay(Some(700))
27 .include_tags(true)
28 .locked(false)
29 .new_host_delay(Some(600))
30 .no_data_timeframe(None)
31 .notification_preset_name(MonitorOptionsNotificationPresets::HIDE_HANDLES)
32 .notify_audit(false)
33 .notify_no_data(false)
34 .on_missing_data(OnMissingDataOption::SHOW_AND_NOTIFY_NO_DATA)
35 .renotify_interval(Some(60))
36 .require_full_window(true)
37 .thresholds(MonitorThresholds::new().critical(2.0 as f64).warning(Some(1.0 as f64)))
38 .timeout_h(Some(24)),
39 )
40 .priority(Some(3))
41 .tags(vec!["test:examplemonitor".to_string(), "env:ci".to_string()]);
42 let configuration = datadog::Configuration::new();
43 let api = MonitorsAPI::with_config(configuration);
44 let resp = api
45 .validate_existing_monitor(monitor_id.clone(), body)
46 .await;
47 if let Ok(value) = resp {
48 println!("{:#?}", value);
49 } else {
50 println!("{:#?}", resp.unwrap_err());
51 }
52}