v2_spans_metrics_UpdateSpansMetric/
v2_spans-metrics_UpdateSpansMetric.rs

1// Update a span-based metric returns "OK" response
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_spans_metrics::SpansMetricsAPI;
4use datadog_api_client::datadogV2::model::SpansMetricFilter;
5use datadog_api_client::datadogV2::model::SpansMetricGroupBy;
6use datadog_api_client::datadogV2::model::SpansMetricType;
7use datadog_api_client::datadogV2::model::SpansMetricUpdateAttributes;
8use datadog_api_client::datadogV2::model::SpansMetricUpdateCompute;
9use datadog_api_client::datadogV2::model::SpansMetricUpdateData;
10use datadog_api_client::datadogV2::model::SpansMetricUpdateRequest;
11
12#[tokio::main]
13async fn main() {
14    // there is a valid "spans_metric" in the system
15    let spans_metric_data_id = std::env::var("SPANS_METRIC_DATA_ID").unwrap();
16    let body = SpansMetricUpdateRequest::new(SpansMetricUpdateData::new(
17        SpansMetricUpdateAttributes::new()
18            .compute(SpansMetricUpdateCompute::new().include_percentiles(false))
19            .filter(
20                SpansMetricFilter::new()
21                    .query("@http.status_code:200 service:my-service-updated".to_string()),
22            )
23            .group_by(vec![SpansMetricGroupBy::new("resource_name".to_string())
24                .tag_name("resource_name".to_string())]),
25        SpansMetricType::SPANS_METRICS,
26    ));
27    let configuration = datadog::Configuration::new();
28    let api = SpansMetricsAPI::with_config(configuration);
29    let resp = api
30        .update_spans_metric(spans_metric_data_id.clone(), body)
31        .await;
32    if let Ok(value) = resp {
33        println!("{:#?}", value);
34    } else {
35        println!("{:#?}", resp.unwrap_err());
36    }
37}