Files
serverAppConfigs/docs/Infrastructure/Alloy.md
T
Frank 90c4ac69a7 Doc audit: fix all broken links + correct stale facts across the KB
Fanned out 5 read-only doc-auditor subagents (one per service group) that
fact-checked the knowledge base against the live system + repo config,
researched official setup docs online, and verified progress. Applied:
- All 34 broken links fixed (real pages / external URLs / correct relative
  paths); 0 broken links remain. No .AGENTTRASH links (the 4 mentions are
  accurate descriptive text, not links).
- Fact-check fixes: Readarr retired (May 2026), Radarr v4->v6, Calibre
  9.2.1 live, Calibre-Web 0.6.25 live, Copyparty v1.20.21, LLM index
  ncmoe 38 + 786432 ctx, frank-default-small active (not frank-pp-worker),
  Hermes/SearXNG/Grafana hostnames, Loki/Alloy local images, Observability
  diagram (Promtail->Alloy), VLLM retired note, DFlash status, benchmark
  live-drift notes, Homepage test count 116.
2026-08-24 01:10:44 -07:00

1.8 KiB

Alloy

Alloy is Grafana's log and telemetry shipper. It replaces Promtail (EOL 2026-03-02). One Alloy instance runs per host and forwards container and journal logs to Loki, and optionally metrics to Prometheus.

Hosts: Dankclaw + Dankserver (one per host) — Docs: https://grafana.com/docs/alloy/latest

Facts (from research)

Item Value
Image franksdank/alloy:latest (local build with a static busybox healthcheck)
Port none published (push-only)
Config River syntax, config.alloy
Successor to Promtail (EOL 2026-03-02)
Inputs journald socket, container log files
Output Loki push endpoint

Why Alloy and not Promtail

Promtail reached end-of-life on 2026-03-02. Grafana Labs directs new installs to Alloy. This stack uses Alloy from day one.

Configuration

River config at shared/alloy/config.alloy:

  • Read journald logs from the host's /run/systemd/journal/socket.
  • Read container logs from /var/lib/containers/... (podman) or the docker path.
  • Forward to http://loki:3100/loki/api/v1/push with host and job labels.

Volumes

Container path Host path (convention)
/etc/alloy/config.alloy shared/alloy/config.alloy (bind mount)
/run/systemd/journal/socket host journald socket (read-only)
/var/log host logs (read-only)

Gotchas

  • The journald socket mount is required for journal scraping.
  • Container log paths differ between docker (/var/lib/docker/containers) and podman (/var/lib/containers/storage/...); point the config at the right one per host.
  • One Alloy per host; do not run a single instance that tries to reach both hosts' logs.

See Also