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.
48 lines
1.8 KiB
Markdown
48 lines
1.8 KiB
Markdown
# 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
|
|
|
|
- [[Loki]] — the log backend
|
|
- [[Observability]] — the full stack
|