Expand description
§Datadog API Client Library
A Rust client for the Datadog API with type-safe access to monitors, dashboards, metrics, logs, synthetics, and more.
§Architecture
┌─────────────────────────────────────────────────────────────┐
│ datadog-api │
├─────────────────────────────────────────────────────────────┤
│ config.rs │ Configuration & credentials │
│ ├─ DatadogConfig │ API keys, site, retry settings │
│ └─ SecretString │ Zeroize-on-drop credential wrapper │
├─────────────────────────────────────────────────────────────┤
│ client.rs │ HTTP client with middleware │
│ └─ DatadogClient │ Retry logic, auth headers, gzip │
├─────────────────────────────────────────────────────────────┤
│ apis/ │ Domain-specific API modules │
│ ├─ monitors │ Monitor CRUD operations │
│ ├─ dashboards │ Dashboard management │
│ ├─ metrics │ Metrics queries │
│ ├─ logs │ Log search │
│ ├─ synthetics │ Synthetic tests │
│ ├─ events │ Event stream │
│ ├─ infrastructure │ Hosts and tags │
│ ├─ downtimes │ Scheduled downtimes │
│ ├─ incidents │ Incident management │
│ ├─ slos │ Service Level Objectives │
│ ├─ security │ Security rules │
│ ├─ notebooks │ Notebooks │
│ ├─ teams/users │ Team and user management │
│ └─ traces │ APM traces │
├─────────────────────────────────────────────────────────────┤
│ models/ │ Request/response types (Serde) │
├─────────────────────────────────────────────────────────────┤
│ error.rs │ Error types with helper methods │
│ └─ Error │ is_retryable, is_not_found, etc. │
└─────────────────────────────────────────────────────────────┘§Quick Start
use datadog_api::{DatadogClient, DatadogConfig};
use datadog_api::apis::MetricsApi;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = DatadogConfig::from_env()?;
let client = DatadogClient::new(config)?;
let metrics_api = MetricsApi::new(client);
let metrics = metrics_api.list_metrics("system.cpu").await?;
println!("Found {} metrics", metrics.metrics.unwrap_or_default().len());
Ok(())
}§Configuration Sources
Credentials load from (in order):
- File:
~/.datadog-mcp/credentials.json - Keyring: System credential storage (requires
keyringfeature) - Environment:
DD_API_KEY,DD_APP_KEY,DD_SITE
Use DatadogConfig::from_env_or_file() to try all sources.
§Error Handling
fn handle(e: &Error) {
if e.is_not_found() { /* 404 */ }
else if e.is_rate_limited() { /* 429 - back off */ }
else if e.is_retryable() { /* transient - retry */ }
}§Supported Sites
- US1:
datadoghq.com(default) - US3:
us3.datadoghq.com - US5:
us5.datadoghq.com - EU:
datadoghq.eu - AP1:
ap1.datadoghq.com - US1-FED:
ddog-gov.com
§Cargo Features
keyring(default): Secure credential storage in system keyring
Re-exports§
pub use client::CacheInfo;pub use client::CachedResponse;pub use client::DatadogClient;pub use config::DatadogConfig;pub use config::HttpConfig;pub use config::RetryConfig;pub use error::Error;pub use error::Result;pub use models::GroupDefinition;pub use models::HeatmapDefinition;pub use models::NoteDefinition;pub use models::QueryTableDefinition;pub use models::QueryValueDefinition;pub use models::TemplateVariable;pub use models::TimeseriesDefinition;pub use models::ToplistDefinition;pub use models::Widget;pub use models::WidgetDefinition;pub use models::WidgetLayout;pub use pagination::CursorParams;pub use pagination::PageParams;pub use pagination::PaginatedResponse;pub use pagination::PaginationMeta;pub use rate_limit::RateLimitConfig;pub use rate_limit::RateLimiter;pub use timestamp::TimestampMillis;pub use timestamp::TimestampNanos;pub use timestamp::TimestampSecs;
Modules§
- apis
- client
- config
- error
- models
- pagination
- Pagination utilities for Datadog API responses
- rate_
limit - Client-side rate limiting for Datadog API requests
- timestamp
- Type-safe timestamp wrappers for Datadog API