Files
agentmon/docker-compose.yaml
T
William Valentin f8ddea3698 feat: add agentmon services section to infrastructure page
Label all agentmon docker-compose services with agentmon.monitor=true
and agentmon.group=agentmon so the swarm-monitor picks them up.
Adds Group field to ServiceSnapshot, probes /healthz for api/web roles,
and renders a separate "Agentmon" section below Swarm Services on the
Infrastructure page with new api and worker card renderers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 13:41:26 -07:00

163 lines
4.1 KiB
YAML

services:
postgres:
image: postgres:16
container_name: agentmon-db
environment:
POSTGRES_PASSWORD: pass
POSTGRES_DB: agentmon
ports:
- "5432:5432"
volumes:
- postgres-data:/var/lib/postgresql/data
- ./deploy/k8s/postgres.sql:/docker-entrypoint-initdb.d/init.sql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
labels:
agentmon.monitor: "true"
agentmon.group: agentmon
agentmon.role: db
nats:
image: nats:latest
container_name: agentmon-nats
ports:
- "4222:4222"
command: "--jetstream"
volumes:
- nats-data:/data
labels:
agentmon.monitor: "true"
agentmon.group: agentmon
agentmon.role: queue
ingest-gateway:
build: .
container_name: agentmon-ingest
command: ingest-gateway
ports:
- "8080:8080"
depends_on:
nats:
condition: service_started
environment:
AGENTMON_ADDR: :8080
NATS_URL: nats://nats:4222
NATS_TOPIC: agentmon.events.v1
labels:
agentmon.monitor: "true"
agentmon.group: agentmon
agentmon.role: api
agentmon.port: "8080"
query-api:
build: .
container_name: agentmon-query
command: query-api
ports:
- "8081:8081"
depends_on:
nats:
condition: service_started
postgres:
condition: service_healthy
environment:
AGENTMON_QUERY_ADDR: :8081
DATABASE_URL: postgres://postgres:pass@postgres:5432/agentmon?sslmode=disable
AGENTMON_QUERY_BASE: http://localhost:8081
NATS_URL: nats://nats:4222
NATS_TOPIC: agentmon.events.v1
labels:
agentmon.monitor: "true"
agentmon.group: agentmon
agentmon.role: api
agentmon.port: "8081"
web-ui:
build: .
container_name: agentmon-ui
command: web-ui
ports:
- "8082:8082"
depends_on:
query-api:
condition: service_started
environment:
AGENTMON_UI_ADDR: :8082
AGENTMON_QUERY_BASE: http://query-api:8081
labels:
agentmon.monitor: "true"
agentmon.group: agentmon
agentmon.role: api
agentmon.port: "8082"
event-processor:
build: .
container_name: agentmon-processor
command: event-processor
depends_on:
postgres:
condition: service_healthy
nats:
condition: service_started
environment:
DATABASE_URL: postgres://postgres:pass@postgres:5432/agentmon?sslmode=disable
NATS_URL: nats://nats:4222
NATS_TOPIC: agentmon.events.v1
labels:
agentmon.monitor: "true"
agentmon.group: agentmon
agentmon.role: worker
swarm-monitor:
build: .
container_name: agentmon-swarm-monitor
command: swarm-monitor
network_mode: host
depends_on:
nats:
condition: service_started
environment:
NATS_URL: nats://localhost:4222
NATS_TOPIC: agentmon.events.v1
POLL_INTERVAL: 30s
LITELLM_BASE_URL: http://localhost:18804
LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY:-}
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
labels:
agentmon.monitor: "true"
agentmon.group: agentmon
agentmon.role: worker
openclaw-monitor:
build: .
container_name: agentmon-openclaw-monitor
command: openclaw-monitor
network_mode: host
depends_on:
nats:
condition: service_started
environment:
NATS_URL: nats://localhost:4222
NATS_TOPIC: agentmon.events.v1
OPENCLAW_REGISTRY: /openclaw-registry/openclaw-instances.json
POLL_INTERVAL: 30s
volumes:
- /home/will/.claude/state/openclaw-instances.json:/openclaw-registry/openclaw-instances.json:ro
- /var/run/libvirt/libvirt-sock:/var/run/libvirt/libvirt-sock
- /home/will/.ssh/id_rsa:/root/.ssh/id_rsa:ro
- /home/will/.ssh/id_rsa.pub:/root/.ssh/id_rsa.pub:ro
- /home/will/.ssh/authorized_keys:/root/.ssh/authorized_keys:ro
- /var/lib/libvirt:/var/lib/libvirt:ro
labels:
agentmon.monitor: "true"
agentmon.group: agentmon
agentmon.role: worker
volumes:
postgres-data:
nats-data: