A single-binary monitoring agent that just works.
Auto-discovery, an embedded TSDB, and a status-first local panel — out of the box.
Powers the Bleemeo Cloud agent fleet; battle-tested on Linux servers, Docker, and Kubernetes.
Glouton is the agent we use at Bleemeo to run our SaaS monitoring product, released as open source. It is one binary that:
/metrics, query
via PromQL).Dashboard — KPI cards, discovered services row, system and I/O charts, range-aware history.
Captures generated by ./scripts/take-screenshots.sh against a running
Glouton; rerun against any reachable instance to refresh them.
The fastest way to see Glouton in action — no account, no signup:
docker run -d --name=glouton \
-v /var/lib/glouton:/var/lib/glouton \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /:/hostroot:ro \
-e GLOUTON_BLEEMEO_ENABLE=false \
--pid=host --net=host \
--cap-add SYS_PTRACE --cap-add SYS_ADMIN \
bleemeo/bleemeo-agent
Then open http://localhost:8015. With Bleemeo disabled the on-disk TSDB starts automatically so the dashboard's longer time ranges (24 h, 7 d, 30 d) work out of the box.
What those Docker flags do
| Flag | Why |
|---|---|
-v /var/lib/glouton:/var/lib/glouton |
Persist the state file, TSDB and registration data across container restarts. |
-v /var/run/docker.sock:/var/run/docker.sock |
Discover and read stats for the containers running on the host. |
-v /:/hostroot:ro |
Read-only access to the host filesystem (mounts, disks, kernel cmdline, /proc/<pid> of host processes). |
--pid=host |
See host processes for the process explorer and per-service discovery. |
--net=host |
Read network interface metrics that match what the host sees, not the container's namespace. |
--cap-add SYS_PTRACE |
Inspect process working sets and open file descriptors. |
--cap-add SYS_ADMIN |
Read namespaced filesystem and cgroup information. |
For a hardened setup (no host PID/net sharing, narrower bind mounts) follow the installation documentation.
Footprint: ~100 MB RAM and 3-5 % of a single core on a typical host (~700 active metric series, polled every 10 s). The TSDB head accounts for roughly half of the resident memory and stays bounded by metric cardinality, not by retention — keeping more history on disk does not cost RAM.
metric.prometheus.targets, filterable per target),
JMX for Java apps,
StatsD for custom counters and gauges.docker run./metrics for any external scraper./api/v1/query and /api/v1/query_range — same
shape as a Prometheus server, so Grafana and friends connect with no glue.localhost:8015 with KPI cards, discovered services row,
status-coded charts (system metrics, network & I/O), filesystem and disk
utilisation filterable per device or mount, drag-to-zoom on every chart,
theme-aware (system, light, dark).Setting expectations honestly:
jmxtrans
alongside Glouton lives in docker-compose.yml..deb (Debian, Ubuntu) and .rpm
(RHEL, CentOS, Fedora) packages. Follow the
installation documentation; it
targets Bleemeo users but works just as well without an account once you set
bleemeo.enable: false.packaging/windows/, see the same installation
documentation.kubectl apply -f k8s.yaml from the repo root for a default
DaemonSet + RBAC manifest, or follow the
installation documentation for the
Helm chart and per-cluster options.go run . from a clone (see
CONTRIBUTING.md) for development. Docker Desktop and Colima sockets
are auto-detected, so your containers show up without any extra config.Release notes are on the GitHub Releases page.
glouton-auto-upgrade.timer is enabled by default and pulls
fresh packages from the configured repository. To disable, mask the timer:
systemctl disable --now glouton-auto-upgrade.timer.docker pull bleemeo/bleemeo-agent && docker restart glouton. Tag a
specific version (e.g. bleemeo/bleemeo-agent:25.10.07.142359) if you prefer to
pin and bump manually.k8s.yaml / Helm values and re-apply.Out-of-the-box defaults work for most cases. To opt out of the Bleemeo connector and run fully standalone, this is enough:
bleemeo:
enable: false
Drop that into /etc/glouton/conf.d/30-install.conf on a packaged install, or pass it
as -e GLOUTON_BLEEMEO_ENABLE=false with the Docker image.
A few knobs people often touch:
agent:
local_store:
# enable: null # tri-state: null = auto (on iff bleemeo.enable is false)
retention: 15d # how far back the on-disk TSDB keeps points
thresholds: # per-metric thresholds, drive the service_status / agent_status
cpu_used:
high_warning: 80
high_critical: 95
mem_used_perc:
high_warning: 80
high_critical: 95
metric: # scrape arbitrary Prometheus endpoints
prometheus:
targets:
- name: my-app
url: http://my-app.internal:8080/metrics
# allow_metrics: [http_requests_total, http_request_duration_seconds]
# deny_metrics: [go_gc_*]
The full reference, with every available key, lives in the agent configuration documentation.
By default Glouton posts a single anonymous payload to
https://telemetry.bleemeo.com/v1/telemetry/ once per agent start. It contains:
true / false).No metric values, no service names, no IP addresses or hostnames are sent. It
helps us understand the deployment surface we're shipping for. To opt out, add this
to the config (or set GLOUTON_AGENT_TELEMETRY_ENABLE=false):
agent:
telemetry:
enable: false
The examples/ folder contains ready-to-run docker-compose stacks that
plug Glouton into a wider pipeline.
(cd examples/prometheus && docker-compose up -d) # Linux
(cd examples/prometheus_mac && docker-compose up -d) # macOS
Then open http://localhost:3000/d/83ceCuenk/ (admin / password).
(cd examples/mqtt && docker-compose up -d)
Same Grafana URL. The example uses NATS as the broker and SquirrelDB Ingestor to write to SquirrelDB. See the SquirrelDB Ingestor README for authentication and HA notes.
Glouton's MQTT messages are published on v1/agent/<fqdn>/data (with . in the FQDN
replaced by , because NATS doesn't allow dots in topics) and look like:
[
{
"labels_text": "__name__=cpu_used",
"time_ms": 1665479613948,
"value": 46.8
}
]
$ claude mcp add glouton \
-- python -m otcore.mcp_server <graph>