
Pup
- 10 installs
- 12 repo stars
- Updated July 21, 2026
- arjunmahishi/dotfiles
pup is a skill that queries Datadog metrics and logs from the command line to search, aggregate, and analyze observability data.
About
A skill for querying Datadog observability data from the command line using the pup CLI. It searches logs, queries time-series metrics with aggregation and grouping, runs statistical log aggregations, and lists metrics and their metadata. A developer uses it to investigate metrics and logs, for example finding which services are throwing errors, using relative time ranges and Datadog query syntax.
- Queries Datadog metrics and logs from the CLI via the pup wrapper: query, search, aggregate, list, metadata
- Documents the metric query syntax (aggregation:metric{filter} by {group}) and Datadog log search syntax
- Gives investigation workflows for metrics and logs with relative time ranges like 1h, 7d, 1M
Pup by the numbers
- 10 all-time installs (skills.sh)
- Ranked #1,007 of 1,435 DevOps & CI/CD skills by installs in the Skillselion catalog
- Data as of Jul 28, 2026 (Skillselion catalog sync)
pup capabilities & compatibility
- Capabilities
- data analysis
- Works with
- datadog
- Use cases
- data analysis · debugging
What pup says it does
`pup` is a CLI wrapper around Datadog APIs.
**Metric query syntax**: `<aggregation>:<metric_name>{<filter>} [by {<group>}]`
npx skills add https://github.com/arjunmahishi/dotfiles --skill pupAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 10 |
|---|---|
| repo stars | ★ 12 |
| Last updated | July 21, 2026 |
| Repository | arjunmahishi/dotfiles ↗ |
What it does
Query Datadog metrics and logs from the CLI with pup to investigate observability data, aggregate log stats, and inspect metric metadata.
Who is it for?
Investigating Datadog metrics and logs from the terminal, such as finding which services are failing.
Skip if: Editing dashboards or writing observability data; it is a read/query wrapper.
When should I use this skill?
When you need to search Datadog logs, query time-series metrics, or aggregate observability data from the CLI.
What you get
Datadog logs and metrics are searched, aggregated, and analyzed entirely from the command line.
- Datadog metric time-series, log query results, and aggregation reports
Files
Purpose
Use this skill when you need to query Datadog for observability data: searching logs, querying time-series metrics, aggregating log statistics, listing available metrics, or inspecting metric metadata. pup is a CLI wrapper around Datadog APIs.
When to use what
Metrics
pup metrics query: Query time-series metric data with aggregation, filtering, and grouping. Primary command for metric analysis.pup metrics search: Same query syntax asquerybut uses the simpler v1 API. Use when you don't need v2 timeseries formula semantics.pup metrics list: Discover available metric names. Use with--filterto narrow by pattern.pup metrics metadata get: Read metadata (description, unit, type) for a specific metric.pup metrics tags list: List available tags for a specific metric.
Logs
pup logs query: Query logs using the v2 API (recommended). Supports timezone and flexible sorting.pup logs search: Search logs using the v1 API. Simpler but less capable thanquery.pup logs list: List logs with basic filtering. Lightest-weight log retrieval.pup logs aggregate: Statistical analysis on logs -- count, avg, percentile, cardinality, grouped by field.
Core concepts
- Output format: Use
-o tablefor human-readable output,-o jsonfor machine-readable. Default isjson. - Time ranges:
--fromand--toaccept relative values (1h,30m,7d,1w,1M) or absolute unix timestamps.--todefaults tonow. - Metric query syntax:
<aggregation>:<metric_name>{<filter>} [by {<group>}] - Aggregations:
avg,sum,min,max,count - Filters: tag key-value pairs like
{env:prod},{host:web-*}, or{*}for all - Grouping:
by {service},by {host,env} - Log query syntax: Uses Datadog search syntax
- By field:
status:error,service:web-app,host:i-* - By attribute:
@http.status_code:500,@user.id:12345 - Boolean:
AND,OR,NOT, negation with-status:info - Phrase:
"exact phrase" - Wildcard:
host:i-*
Recommended workflow
Investigating a metric
1. Discover metrics: pup metrics list --filter="<pattern>" to find relevant metric names. 2. Inspect metadata: pup metrics metadata get <metric> to understand unit and type. 3. Check tags: pup metrics tags list <metric> to see available dimensions. 4. Query data: pup metrics query --query="avg:<metric>{<filter>} by {<group>}" --from="1h"
Investigating logs
1. Start broad: pup logs search --query="status:error" --from="1h" --limit=10 to see recent errors. 2. Narrow down: Add filters like service:X AND @http.status_code:500. 3. Aggregate for patterns: pup logs aggregate --query="status:error" --from="1h" --compute="count" --group-by="service" to find which services are failing. 4. Deep dive: pup logs query --query="service:failing-svc AND status:error" --from="1h" --limit=100 for full log details.
Important tips
- Prefer
-o jsonwhen processing output programmatically; use-o tablewhen presenting to users. - For log searches,
--limitdefaults to 50 (max 1000 for search, configurable for query/list). - Metric queries return time-series arrays with timestamps -- the data points are in the
seriesfield of the JSON output. - Log aggregate
--computesupports:count,avg(@field),sum(@field),min(@field),max(@field),cardinality(@field),percentile(@field, N). - Use
--group-bywith aggregate to break down results by any log field or attribute. - Time ranges are relative to now:
1hmeans "1 hour ago to now",7dmeans "7 days ago to now".
Related skills
FAQ
What is the metric query syntax?
<aggregation>:<metric_name>{<filter>} [by {<group>}], for example avg:metric{env:prod} by {service}.
How are time ranges specified?
--from and --to accept relative values like 1h, 30m, 7d, 1M or absolute unix timestamps, with --to defaulting to now.