Skip to content

Datadog observability

mnml-obs-datadog is a terminal browser for Datadog. Monitors color-coded by alert state, dashboards, live-tail logs against a custom query, open incidents. Cross-sibling handoff to mnml-aws-cloudwatch-logs when a monitor query references an AWS log group. Runs standalone in any terminal.

┌─ datadog ─────────────────────────────────────────────────────────────┐
│ ▸1.Monitors (37) 2.Dashboards (84) 3.API errors (12) 4.Incidents (2)│
└───────────────────────────────────────────────────────────────────────┘
┌─ monitors (37) ───────────────┐ ┌─ detail ────────────────────────────┐
│ ▸ api 5xx rate │ │ Name api 5xx rate │
│ db connection saturation │ │ State Alert │
│ queue backlog │ │ Query avg(last_5m):sum:…│
│ high cpu — i-aabbccdd │ │ │
└───────────────────────────────┘ └─────────────────────────────────────┘
1-9 tab · Enter/o console · y URL · L → cloudwatch-logs · r refresh · q quit
Terminal window
cargo install --git https://github.com/chris-mclennan/mnml-obs-datadog mnml-obs-datadog
mnml-obs-datadog --install

Datadog uses two keys: an API key (org-scope) + an application key (user-scope).

Terminal window
export DD_API_KEY=... # Org Settings → API Keys
export DD_APP_KEY=... # Org Settings → Application Keys
export DD_SITE=datadoghq.com # default; override for EU / US3 / US5 / AP1 / Gov
mnml-obs-datadog --check

Auth shape: plain HTTP — DD-API-KEY + DD-APPLICATION-KEY headers to https://api.{DD_SITE}/api/{v1,v2}/…. No SDK dep.

~/.config/mnml-obs-datadog/config.toml (scaffolded first run):

refresh_interval_secs = 60
[[tabs]]
name = "Monitors"
kind = "monitors"
# Scope monitors by tag
[[tabs]]
name = "api alerts"
kind = "monitors"
query = "tag:service:api"
[[tabs]]
name = "Dashboards"
kind = "dashboards"
# Title-prefix filter
[[tabs]]
name = "API dashboards"
kind = "dashboards"
query = "API"
# Live-tail logs (Datadog log search syntax; polls every tail_interval_secs)
[[tabs]]
name = "API errors"
kind = "logs"
query = "service:api status:error"
from = "now-15m"
tail_interval_secs = 5
[[tabs]]
name = "Incidents"
kind = "incidents"
kindWhat it showsRequired
monitorsEvery monitor sorted Alert → Warn → No Data → OK. query = tag scope.
dashboardsEvery dashboard. query = title-prefix filter.
logsLive-tail matching Datadog log search syntax.query
incidentsOpen (state=active) incidents.
ChordAction
1-9 / TabSwitch tabs
/ k, / j, PgUp / PgDn, g / GNavigate
Enter / oOpen in Datadog web UI (monitor / dashboard / incident / Logs Explorer pre-scoped)
yYank web URL, or log message body for log events
LCross-sibling jump — on a monitor whose query references an AWS log group (aws_log_group: tag or /aws/… path), launches mnml-aws-cloudwatch-logs --log-group <group>
rRefresh active tab
q / Esc / Ctrl+CQuit
Terminal window
mnml-obs-datadog
:term mnml-obs-datadog

Or <leader>iD after mnml-obs-datadog --install.

v0.1 caps lists at 500 items. When capped, tab badge shows (N+). Real cursor pagination is v0.2.

github.com/chris-mclennan/mnml-obs-datadog. MIT.