Datadog Logs
AI 에이전트가 Composio CLI를 통해 Datadog 로그를 쿼리하여, 스크린샷을 붙여넣지 않고도 필터링, 피벗, 요약을 수행할 수 있습니다.
사용 시기
- 스파이크, 오류 급증, 또는 지연 시간 회귀를 조사할 때 구조화된 JSON 결과가 필요한 경우.
- 배포와 서비스/환경별 로그 볼륨 변화를 연관지을 때.
- "밤사이 무엇이 고장 났는지" 요약하는 스케줄링된 다이제스트를 구축할 때.
사전 요구 사항
curl -fsSL https://composio.dev/install | bash
composio login
composio link datadog # 사이트 및 API/APP 키 입력
도구 검색
composio search "search logs" --toolkits datadog
composio search "aggregate logs" --toolkits datadog
composio tools list datadog
자주 사용되는 슬러그 (--get-schema로 확인):
DATADOG_SEARCH_LOGSDATADOG_AGGREGATE_LOGSDATADOG_LIST_ACTIVE_METRICSDATADOG_GET_EVENT
필터 레시피
지난 15분간 단일 서비스 오류
composio execute DATADOG_SEARCH_LOGS -d '{
"filter": {
"query": "service:checkout status:error env:prod",
"from": "now-15m",
"to": "now"
},
"page": { "limit": 100 },
"sort": "-timestamp"
}'
엔드포인트별 오류 개수 집계
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" }]
}'
단일 요청을 서비스 간 추적
composio execute DATADOG_SEARCH_LOGS -d '{
"filter": { "query": "@trace_id:7f3a2b1c env:prod", "from": "now-1h", "to": "now" },
"sort": "timestamp"
}'
재사용 가능한 쿼리 저장
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"
}'
로컬 분석으로 파이프
Datadog 출력은 JSON (stdout)이므로 jq로 빠르게 요약할 수 있습니다:
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
다단계 워크플로우
scripts/dd-incident.ts로 저장한 후 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));
일일 다이제스트 스케줄링
cron (또는 트리거를 위한 composio dev listen)을 사용해 워크플로우를 실행하고 결과를 Slack으로 전달:
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)}')"
문제 해결
- 결과 없음 →
env:및service:태그를 확인하십시오. Datadog 인덱스는 지역별로 범위가 지정되므로composio link datadog중 올바른 사이트를 설정하십시오. 403 Forbidden→ APP 키에logs_read권한이 없습니다. 범위를 설정하여 다시 생성하고 다시 연결하십시오.- 쿼리 속도 느림 →
from/to범위를 좁히거나,facet필터를 추가하거나, 원시 이벤트를 가져오는 대신DATADOG_AGGREGATE_LOGS를 사용하십시오. - 알 수 없는 facet →
composio search "list log facets" --toolkits datadog실행.
전체 CLI 참조: docs.composio.dev/docs/cli