Datadog Logs
Datadog-Logs über die Composio CLI abfragen, damit der Agent filtern, pivotieren und zusammenfassen kann – ohne dass du Screenshots einfügen musst.
Wann verwenden
- Untersuchung eines Spikes, eines Error-Anstiegs oder einer Latenz-Regression – und du möchtest strukturiertes JSON zurück.
- Korrelation eines Deployments mit Log-Volume-Änderungen über Services/Umgebungen hinweg.
- Erstellung einer geplanten „Was ist über Nacht kaputt gegangen“-Zusammenfassung.
Voraussetzungen
curl -fsSL https://composio.dev/install | bash
composio login
composio link datadog # fragt nach Site + API/APP-Keys
Tools entdecken
composio search "search logs" --toolkits datadog
composio search "aggregate logs" --toolkits datadog
composio tools list datadog
Häufig verwendete Slugs (mit --get-schema bestätigen):
DATADOG_SEARCH_LOGSDATADOG_AGGREGATE_LOGSDATADOG_LIST_ACTIVE_METRICSDATADOG_GET_EVENT
Filter-Rezepte
Fehler aus einem Service in den letzten 15 Minuten
composio execute DATADOG_SEARCH_LOGS -d '{
"filter": {
"query": "service:checkout status:error env:prod",
"from": "now-15m",
"to": "now"
},
"page": { "limit": 100 },
"sort": "-timestamp"
}'
Fehleranzahl nach Endpunkt aggregieren
composio execute DATADOG_AGGREGATE_LOGS -d '{
"filter": { "query": "service:checkout status:error", "from": "now-1h", "to": "now" },
"group_by": [{ "facet": "@http.url_path", "limit": 20 }],
"compute": [{ "aggregation": "count" }]
}'
Eine einzelne Anfrage über Services hinweg verfolgen
composio execute DATADOG_SEARCH_LOGS -d '{
"filter": { "query": "@trace_id:7f3a2b1c env:prod", "from": "now-1h", "to": "now" },
"sort": "timestamp"
}'
Eine wiederverwendbare Abfrage speichern
composio search "save log view" --toolkits datadog
composio execute DATADOG_CREATE_SAVED_VIEW -d '{
"name": "checkout-errors-prod",
"query": "service:checkout status:error env:prod"
}'
In die lokale Analyse übergeben
Die Datadog-Ausgabe ist JSON auf stdout – mit jq für schnelle Zusammenfassungen weiterleiten:
composio execute DATADOG_SEARCH_LOGS -d '{
"filter": {"query":"service:api status:error","from":"now-30m","to":"now"},
"page":{"limit":500}
}' | jq -r '.data[].attributes.message' | sort | uniq -c | sort -rn | head
Multi-Step-Workflow
Speichern als scripts/dd-incident.ts, dann composio run --file scripts/dd-incident.ts -- --service checkout:
const svc = process.argv[process.argv.indexOf("--service") + 1];
const errors = await execute("DATADOG_SEARCH_LOGS", {
filter: { query: `service:${svc} status:error`, from: "now-1h", to: "now" },
page: { limit: 200 }, sort: "-timestamp"
});
const topPaths = await execute("DATADOG_AGGREGATE_LOGS", {
filter: { query: `service:${svc} status:error`, from: "now-1h", to: "now" },
group_by: [{ facet: "@http.url_path", limit: 10 }],
compute: [{ aggregation: "count" }]
});
console.log(JSON.stringify({ svc, sample: errors.data?.slice(0,5), topPaths }, null, 2));
Eine tägliche Zusammenfassung planen
Cron (oder composio dev listen für Trigger) verwenden, um den Workflow auszuführen und die Ergebnisse an Slack weiterzuleiten:
composio run --file scripts/dd-incident.ts -- --service checkout \
| tee /tmp/digest.json
composio execute SLACK_SEND_MESSAGE -d "$(jq -n \
--slurpfile d /tmp/digest.json \
'{channel:"oncall", text: ($d[0] | tojson)}')"
Fehlerbehebung
- Leere Ergebnisse →
env:- undservice:-Tags überprüfen; Datadog-Indizes sind regionenabhängig – die richtige Site beicomposio link datadogangeben. 403 Forbidden→ Der APP-Key hat keinlogs_read; mit entsprechendem Bereich neu generieren und erneut verknüpfen.- Langsame Abfragen →
from/toeingrenzen, einenfacet-Filter hinzufügen oderDATADOG_AGGREGATE_LOGSanstelle von Roh-Events verwenden. - Unbekannter Facet →
composio search "list log facets" --toolkits datadog.
Vollständige CLI-Referenz: docs.composio.dev/docs/cli