Cómo usar la API de Datadog

Ya sea integrando apps, automatizando flujos o extendiendo Datadog, entender cómo usar la API es clave para maximizar la plataforma.

Daniel Costa

Daniel Costa

5 July 2025

Cómo usar la API de Datadog
💡
Cuando se trabaja con la API de Datadog o cualquier otra API, es crucial contar con una plataforma potente de desarrollo y pruebas de API. Apidog destaca como una excelente alternativa a Postman que ofrece un conjunto completo de herramientas para el desarrollo de API.
button

Introducción a la API de Datadog

La API de Datadog proporciona acceso programático a las sólidas capacidades de monitorización y análisis de la plataforma. Esta API RESTful permite a los desarrolladores enviar datos, crear visualizaciones y gestionar sus cuentas de Datadog a través de código. Ya sea que esté integrando aplicaciones personalizadas, automatizando flujos de trabajo o extendiendo la funcionalidad de Datadog, comprender cómo aprovechar la API es esencial para maximizar el potencial de la plataforma.

La API de Datadog está diseñada con una arquitectura orientada a recursos que utiliza códigos de respuesta HTTP estándar, acepta y devuelve JSON en todas las solicitudes y utiliza métodos HTTP estándar. Esto la hace intuitiva para los desarrolladores familiarizados con los servicios web RESTful. La funcionalidad integral de la API permite tanto operaciones de lectura como de escritura, lo que le permite no solo recuperar datos de monitorización, sino también configurar varios aspectos de su entorno de Datadog.

Al dominar la API de Datadog, podrá:

Primeros pasos con la autenticación de la API de Datadog

Antes de realizar cualquier llamada a la API, deberá configurar correctamente la autenticación para garantizar un acceso seguro a sus recursos de Datadog.

Obtención de claves de API y de aplicación de Datadog

Para empezar a utilizar la API de Datadog, necesitará dos tipos de claves:

  1. Clave de API: Esta identifica su cuenta de Datadog y es necesaria para todas las solicitudes de la API.
  1. Clave de aplicación: Necesaria para muchos endpoints de gestión, proporciona autenticación adicional y especifica los permisos de acceso.

Configuración de los encabezados de autenticación de la API de Datadog

Al realizar solicitudes a la API, deberá incluir estas claves como encabezados:

Aquí tiene un ejemplo de una solicitud autenticada básica:

curl -X GET "<https://api.datadoghq.com/api/v1/dashboard>" \\\\
-H "Content-Type: application/json" \\\\
-H "DD-API-KEY: your_api_key_here" \\\\
-H "DD-APPLICATION-KEY: your_app_key_here"

Gestión de la seguridad de la clave de API de Datadog

Dado el importante acceso que proporcionan estas claves, es crucial seguir las mejores prácticas de seguridad:

Conceptos básicos de la API de Datadog

Comprender los conceptos fundamentales de la API de Datadog le ayudará a navegar por sus amplias capacidades de forma más eficaz.

Estructura de los endpoints de la API de Datadog

La API de Datadog está organizada lógicamente en áreas funcionales que reflejan las capacidades de la plataforma:

Realización de su primera llamada a la API de Datadog

Comencemos con un caso de uso común: el envío de una métrica personalizada. Este ejemplo demuestra cómo enviar una métrica de tipo gauge simple con etiquetas:

import requests
import time
import json

api_key = "your_api_key_here"
current_time = int(time.time())

payload = {
    "series": [
        {
            "metric": "custom.application.performance",
            "points": [[current_time, 100]],
            "type": "gauge",
            "tags": ["environment:production", "application:web", "region:us-east"]
        }
    ]
}

headers = {
    "Content-Type": "application/json",
    "DD-API-KEY": api_key
}

response = requests.post("<https://api.datadoghq.com/api/v1/series>",
                        headers=headers,
                        data=json.dumps(payload))

print(f"Response Status Code: {response.status_code}")
print(f"Response Body: {response.json()}")

Este fragmento de código:

Comprensión del formato de respuesta de la API de Datadog

Las respuestas de la API de Datadog suelen seguir un formato JSON coherente:

{
  "status": "ok",
  "errors": [],
  "data": {
    "id": "abc-123-xyz",
    "name": "Example Resource",
    "created_at": "2023-06-01T12:00:00.000Z",
    "modified_at": "2023-06-02T15:30:00.000Z",
    ...
  }
}

Los campos clave incluyen:

Casos de uso y ejemplos comunes de la API de Datadog

Exploremos las aplicaciones prácticas de la API de Datadog a través de ejemplos detallados que cubren la funcionalidad clave.

Recuperación de información del panel de la API de Datadog

Los paneles son fundamentales para las capacidades de visualización de Datadog. Aquí se explica cómo recuperar detalles sobre un panel específico:

curl -X GET "<https://api.datadoghq.com/api/v1/dashboard/dashboard_id>" \\\\
-H "Content-Type: application/json" \\\\
-H "DD-API-KEY: your_api_key_here" \\\\
-H "DD-APPLICATION-KEY: your_app_key_here"

Para crear un nuevo panel de forma programática:

import requests
import json

api_key = "your_api_key_here"
app_key = "your_app_key_here"

dashboard_payload = {
    "title": "API Generated Dashboard",
    "description": "Created via the Datadog API",
    "widgets": [
        {
            "definition": {
                "type": "timeseries",
                "requests": [
                    {
                        "q": "avg:system.cpu.user{*} by {host}",
                        "display_type": "line"
                    }
                ],
                "title": "CPU Usage by Host"
            }
        }
    ],
    "layout_type": "ordered"
}

headers = {
    "Content-Type": "application/json",
    "DD-API-KEY": api_key,
    "DD-APPLICATION-KEY": app_key
}

response = requests.post("<https://api.datadoghq.com/api/v1/dashboard>",
                        headers=headers,
                        data=json.dumps(dashboard_payload))

print(f"Dashboard created with ID: {response.json().get('id')}")

Creación de un monitor con la API de Datadog

Los monitores son esenciales para las alertas proactivas. Aquí se explica cómo crear un monitor que avise cuando el uso de la CPU supere un umbral:

import requests
import json

api_key = "your_api_key_here"
app_key = "your_app_key_here"

monitor_payload = {
    "name": "High CPU Usage Alert",
    "type": "metric alert",
    "query": "avg(last_5m):avg:system.cpu.user{*} > 80",
    "message": "CPU usage is above 80% for the last 5 minutes. @slack-alerts-channel @email.address@example.com",
    "tags": ["app:web", "env:production", "team:infrastructure"],
    "priority": 3,
    "options": {
        "notify_no_data": True,
        "no_data_timeframe": 10,
        "new_host_delay": 300,
        "evaluation_delay": 60,
        "thresholds": {
            "critical": 80,
            "warning": 70
        },
        "include_tags": True,
        "notify_audit": False,
        "require_full_window": False
    }
}

headers = {
    "Content-Type": "application/json",
    "DD-API-KEY": api_key,
    "DD-APPLICATION-KEY": app_key
}

response = requests.post("<https://api.datadoghq.com/api/v1/monitor>",
                        headers=headers,
                        data=json.dumps(monitor_payload))

print(f"Response Status: {response.status_code}")
print(f"Monitor created: {response.json()}")

Este ejemplo:

Integración con AWS mediante la API de Datadog

Conectar Datadog con los servicios en la nube amplía sus capacidades de monitorización. Aquí se explica cómo crear una integración de AWS:

curl -X POST "<https://api.datadoghq.com/api/v1/integration/aws>" \\\\
-H "Content-Type: application/json" \\\\
-H "DD-API-KEY: your_api_key_here" \\\\
-H "DD-APPLICATION-KEY: your_app_key_here" \\\\
-d '{
  "account_id": "your_aws_account_id",
  "role_name": "DatadogAWSIntegrationRole",
  "access_key_id": "your_access_key",
  "secret_access_key": "your_secret_key",
  "filter_tags": ["env:production", "service:critical"],
  "host_tags": ["account:main", "region:us-east-1"],
  "account_specific_namespace_rules": {
    "auto_scaling": true,
    "opsworks": false,
    "elasticache": true
  },
  "excluded_regions": ["us-west-2", "ca-central-1"]
}'

Esta configuración de integración:

Envío de registros a través de la API de Datadog

Los registros proporcionan información contextual crítica para la resolución de problemas. Aquí se explica cómo enviar registros directamente a Datadog:

import requests
import json
import datetime

api_key = "your_api_key_here"

logs_payload = [{
    "ddsource": "python",
    "ddtags": "env:production,service:payment-processor,version:1.2.3",
    "hostname": "payment-service-01",
    "message": "Payment transaction completed successfully for order #12345",
    "service": "payment-service",
    "status": "info",
    "timestamp": datetime.datetime.now().isoformat(),
    "attributes": {
        "transaction_id": "tx_789012345",
        "amount": 99.95,
        "currency": "USD",
        "customer_id": "cust_123456",
        "payment_method": "credit_card"
    }
}]

headers = {
    "Content-Type": "application/json",
    "DD-API-KEY": api_key
}

response = requests.post("<https://http-intake.logs.datadoghq.com/v1/input>",
                        headers=headers,
                        data=json.dumps(logs_payload))

print(f"Log submission response: {response.status_code}")

Este ejemplo:

Trabajo con los límites de velocidad de la API de Datadog

Datadog aplica límites de velocidad para garantizar la estabilidad de la plataforma y el uso justo entre los clientes. Comprender y respetar estos límites es crucial para una integración fiable de la API.

Comprensión de la limitación de velocidad de la API de Datadog

Los diferentes endpoints tienen diferentes límites de velocidad en función de la intensidad de sus recursos y los patrones de uso típicos:

Monitorización de los encabezados de límite de velocidad de la API de Datadog

Al realizar solicitudes a la API, compruebe estos encabezados de respuesta para comprender el estado actual de su límite de velocidad:

Implementación del manejo del límite de velocidad en las llamadas a la API de Datadog

Aquí tiene una implementación robusta para manejar los límites de velocidad con retroceso exponencial:

import requests
import time
import random

def make_api_request_with_backoff(url, headers, payload=None, max_retries=5):
    retries = 0
    while retries < max_retries:
        response = requests.post(url, headers=headers, json=payload) if payload else requests.get(url, headers=headers)

        if response.status_code == 429:  # Too Many Requests
            # Extract rate limit information
            limit = response.headers.get('X-RateLimit-Limit', 'Unknown')
            remaining = response.headers.get('X-RateLimit-Remaining', 'Unknown')
            reset = int(response.headers.get('X-RateLimit-Reset', 60))

            print(f"Rate limit hit: {remaining}/{limit} requests remaining. Reset in {reset} seconds.")

            # Calculate backoff time with jitter
            backoff_time = min(2 ** retries + random.uniform(0, 1), reset)
            print(f"Backing off for {backoff_time:.2f} seconds")
            time.sleep(backoff_time)
            retries += 1
        else:
            return response

    raise Exception(f"Failed after {max_retries} retries due to rate limiting")

Uso de las bibliotecas de cliente de la API de Datadog

Para mayor comodidad, Datadog ofrece bibliotecas de cliente oficiales en varios idiomas, lo que simplifica la autenticación y el formato de las solicitudes.

Cliente de la API de Python Datadog

El cliente oficial de Python proporciona una interfaz limpia e idiomática para la API de Datadog:

pip install datadog-api-client

Aquí tiene un ejemplo de envío de métricas utilizando el cliente:

from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v1.api.metrics_api import MetricsApi
from datadog_api_client.v1.model.metrics_payload import MetricsPayload
from datadog_api_client.v1.model.metrics_series import MetricsSeries
from datadog_api_client.v1.model.point import Point
import time

configuration = Configuration()
configuration.api_key["apiKeyAuth"] = "your_api_key_here"
configuration.api_key["appKeyAuth"] = "your_app_key_here"

with ApiClient(configuration) as api_client:
    api_instance = MetricsApi(api_client)
    body = MetricsPayload(
        series=[
            MetricsSeries(
                metric="application.request.duration",
                points=[
                    Point([int(time.time()), 250.0])
                ],
                type="gauge",
                host="web-server-01",
                tags=["endpoint:login", "environment:staging"]
            )
        ]
    )
    response = api_instance.submit_metrics(body=body)
    print(f"Metrics submission successful: {response}")

Cliente de la API de Ruby Datadog

Para las aplicaciones de Ruby, la biblioteca de cliente oficial agiliza las interacciones de la API:

gem install datadog_api_client -v 2.31.1

Ejemplo de uso para crear un monitor:

require 'datadog_api_client'

DatadogAPIClient.configure do |config|
  config.api_key = 'your_api_key_here'
  config.application_key = 'your_app_key_here'
end

api_instance = DatadogAPIClient::V1::MonitorsAPI.new
body = {
  'name' => 'API test monitor',
  'type' => 'metric alert',
  'query' => 'avg(last_5m):avg:system.cpu.user{*} > 75',
  'message' => 'CPU usage is high',
  'tags' => ['test:api', 'monitor:automated'],
  'options' => {
    'thresholds' => {
      'critical' => 75,
      'warning' => 65
    }
  }
}

begin
  result = api_instance.create_monitor(body)
  puts "Monitor created successfully with ID: #{result['id']}"
rescue DatadogAPIClient::APIError => e
  puts "Error creating monitor: #{e}"
end

Mejores prácticas para el uso de la API de Datadog

Seguir estas directrices le ayudará a crear integraciones más fiables, seguras y eficientes con la API de Datadog.

Protección de sus claves de API de Datadog

La seguridad de sus claves de API es primordial:

Uso eficaz de las etiquetas en las llamadas a la API de Datadog

Las etiquetas son un mecanismo potente para organizar y filtrar sus datos de Datadog:

Implementación del manejo de errores para las solicitudes de la API de Datadog

Un manejo robusto de errores garantiza que sus integraciones sigan siendo fiables:

def send_to_datadog(endpoint, payload, headers):
    try:
        response = requests.post(endpoint,
                                json=payload,
                                headers=headers,
                                timeout=10)
        response.raise_for_status()
        return response.json()
    except requests.exceptions.Timeout:
        print("Request timed out - Datadog API may be experiencing delays")
    except requests.exceptions.HTTPError as e:
        if e.response.status_code == 400:
            print(f"Bad request: {e.response.json().get('errors', [])}")
        elif e.response.status_code == 403:
            print("Authentication error - check your API and application keys")
        elif e.response.status_code == 429:
            print("Rate limit reached - implement backoff and retry")
        else:
            print(f"HTTP error: {e.response.status_code}")
    except requests.exceptions.RequestException as e:
        print(f"Request failed: {e}")

    return None

Pruebas en entornos sandbox con la API de Datadog

Antes de implementar en producción:

Monitorización del uso de la API de Datadog

Realice un seguimiento del uso de su API para detectar problemas de forma temprana:

Conclusión: Dominio de la API de Datadog

La API de Datadog proporciona potentes capacidades para extender y personalizar su plataforma de monitorización y análisis. Al comprender el proceso de autenticación, los conceptos básicos y las mejores prácticas descritas en esta guía, estará bien equipado para integrar Datadog en sus aplicaciones y automatizar sus flujos de trabajo de forma eficaz.

Ya sea que esté enviando métricas personalizadas, creando monitores o construyendo paneles complejos, la API ofrece la flexibilidad de adaptar Datadog a sus necesidades específicas. A medida que su uso madure, considere la posibilidad de implementar patrones más avanzados como:

Las capacidades programáticas proporcionadas por la API de Datadog le permiten construir un ecosistema de monitorización que se escala con su infraestructura y se adapta a los requisitos únicos de su organización.

Recuerde consultar regularmente la documentación oficial de la API de Datadog, ya que con frecuencia se añaden nuevos endpoints y características para ampliar las capacidades de la plataforma. Con el conocimiento adquirido en esta guía, está listo para construir soluciones de monitorización sofisticadas y automatizadas que aprovechen toda la potencia de la plataforma de observabilidad de Datadog.

button

Explore more

Cómo usar Ollama: Guía Completa para Principiantes sobre LLMs Locales con Ollama

Cómo usar Ollama: Guía Completa para Principiantes sobre LLMs Locales con Ollama

El panorama de la inteligencia artificial evoluciona constantemente, y los Grandes Modelos de Lenguaje (LLM) se vuelven cada vez más potentes y accesibles. Aunque muchos interactúan con estos modelos a través de servicios basados en la nube, existe un movimiento creciente enfocado en ejecutarlos directamente en computadoras personales. Aquí es donde entra Ollama. Ollama es una herramienta potente pero fácil de usar, diseñada para simplificar drásticamente el complejo proceso de descargar, config

28 April 2025

¿Dónde Descargar Swagger UI en Español Gratis?

¿Dónde Descargar Swagger UI en Español Gratis?

¿Necesitas Swagger UI en español? Este artículo explica por qué no existe una descarga oficial gratuita y cómo habilitar la traducción. Explora las características de Swagger y por qué Apidog es la alternativa superior para diseño, pruebas y documentación API integrados.

23 April 2025

¿Dónde Descargar Postman en Español Gratis?

¿Dónde Descargar Postman en Español Gratis?

¿Puedes descargar Postman en español gratis? Aunque Postman carece de soporte nativo en español, existen soluciones. Explóralas y descubre Apidog, una potente alternativa unificada a Postman diseñada para optimizar todo tu flujo de trabajo de API, sin importar el idioma.

22 April 2025

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs