v2_spans_metrics_CreateSpansMetric/
v2_spans-metrics_CreateSpansMetric.rs

1// Create 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::SpansMetricCompute;
5use datadog_api_client::datadogV2::model::SpansMetricComputeAggregationType;
6use datadog_api_client::datadogV2::model::SpansMetricCreateAttributes;
7use datadog_api_client::datadogV2::model::SpansMetricCreateData;
8use datadog_api_client::datadogV2::model::SpansMetricCreateRequest;
9use datadog_api_client::datadogV2::model::SpansMetricFilter;
10use datadog_api_client::datadogV2::model::SpansMetricGroupBy;
11use datadog_api_client::datadogV2::model::SpansMetricType;
12
13#[tokio::main]
14async fn main() {
15    let body = SpansMetricCreateRequest::new(SpansMetricCreateData::new(
16        SpansMetricCreateAttributes::new(
17            SpansMetricCompute::new(SpansMetricComputeAggregationType::DISTRIBUTION)
18                .include_percentiles(false)
19                .path("@duration".to_string()),
20        )
21        .filter(
22            SpansMetricFilter::new().query("@http.status_code:200 service:my-service".to_string()),
23        )
24        .group_by(vec![SpansMetricGroupBy::new("resource_name".to_string())
25            .tag_name("resource_name".to_string())]),
26        "ExampleSpansMetric".to_string(),
27        SpansMetricType::SPANS_METRICS,
28    ));
29    let configuration = datadog::Configuration::new();
30    let api = SpansMetricsAPI::with_config(configuration);
31    let resp = api.create_spans_metric(body).await;
32    if let Ok(value) = resp {
33        println!("{:#?}", value);
34    } else {
35        println!("{:#?}", resp.unwrap_err());
36    }
37}