Monitoring
Three different jobs, often confused: collecting metrics and alerting on them, catching application errors, and telling users what is broken. Most setups end up with one tool for each.
Metrics and alerting
- Prometheus, Alertmanager and Grafana - Prometheus, Alertmanager and Grafana, pull-based, self-hosted.
- Datadog - SaaS, agent on every host. Container command below.
- New Relic - SaaS, the historical application performance monitoring one.
On Kubernetes these are installed as charts, see Helm.
Error tracking
- Sentry - hosted, and the same product is self-hostable from getsentry/self-hosted (Docker Compose).
Status pages
A status page is what users read when your infrastructure is down, so it is hosted somewhere else than the infrastructure it reports on. That constraint is most of the choice.
- Statuspage - SaaS, the default answer.
- Cachet - self-hosted, PHP.
- Stashboard - Python on App Engine, archived in 2019, do not start here.
Running the Datadog Agent in a container
One agent container per host, with the Docker socket and the host /proc and cgroups mounted
read only:
docker run -d --cgroupns host --pid host --name dd-agent \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v /proc/:/host/proc/:ro \
-v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
-e DD_SITE=datadoghq.com \
-e DD_API_KEY=<your api key> \
registry.datadoghq.com/agent:7
DD_SITE has to match the region your account lives in (it defaults to datadoghq.com); point
it at the wrong one and the agent runs happily while nothing shows up in the interface.
What the agent actually sees, checks included:
docker exec -it dd-agent agent status
Both come from the Docker Agent documentation and its Agent commands guide, checked in August 2026.
The image and the variable names changed with Agent 6: datadog/docker-dd-agent was the Agent 5
image, it took API_KEY rather than DD_API_KEY and ran privileged, and its status command was
service datadog-agent info. Recipes older than that, mine included, are worth nothing today.
The CoreOS unit I used to run it with is kept in CoreOS.