git-subtree-dir: observability git-subtree-mainline:ae1d9bb534git-subtree-split:19e74af9ca
48 lines
2 KiB
YAML
48 lines
2 KiB
YAML
# The Alloy log-collector agent. Runs on EACH node (prod, beta, LAN dev) — one
|
|
# per node — reading that node's Docker containers, Caddy logs, and the app's
|
|
# JSON logs, and shipping them to the central Loki on beta over the mesh.
|
|
#
|
|
# Per-node config comes from the environment (an .env file next to this, or
|
|
# exported before `up`):
|
|
# ALLOY_NODE this node's label: prod | beta | dev
|
|
# LOKI_URL push endpoint. All nodes push over the mesh:
|
|
# http://10.10.0.2:3100/loki/api/v1/push
|
|
#
|
|
# Deploy on a node:
|
|
# ALLOY_NODE=prod LOKI_URL=http://10.10.0.2:3100/loki/api/v1/push \
|
|
# docker compose -f docker-compose.agent.yml up -d
|
|
#
|
|
# The app's JSON logs are read from its `applogs` Docker volume, named
|
|
# `<project>_applogs`. prod and beta run the app under the compose project
|
|
# `thermograph`, so the external volume below is `thermograph_applogs`. The LAN
|
|
# dev stack uses the project `thermograph-dev` — on that node, change the two
|
|
# `thermograph_applogs` references below to `thermograph-dev_applogs`.
|
|
|
|
services:
|
|
alloy:
|
|
image: grafana/alloy:v1.9.1
|
|
command:
|
|
- run
|
|
- /etc/alloy/config.alloy
|
|
- --storage.path=/var/lib/alloy/data
|
|
- --server.http.listen-addr=0.0.0.0:12345
|
|
environment:
|
|
ALLOY_NODE: ${ALLOY_NODE:?set ALLOY_NODE (prod|beta|dev)}
|
|
LOKI_URL: ${LOKI_URL:?set LOKI_URL}
|
|
volumes:
|
|
- ./config.alloy:/etc/alloy/config.alloy:ro
|
|
# Read-only Docker socket: discover + tail every container's stdout/stderr.
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
# Caddy's host access logs (runs on the host, not a container).
|
|
- /var/log/caddy:/var/log/caddy:ro
|
|
# The app's structured JSON logs, straight off its named volume.
|
|
- thermograph_applogs:/applogs:ro
|
|
- alloy_data:/var/lib/alloy/data
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
# The app's existing log volume (created by the app's own stack). external:true
|
|
# means compose references it, never creates or deletes it.
|
|
thermograph_applogs:
|
|
external: true
|
|
alloy_data: {}
|