Files
ai-ops-agent/stack.yml
2025-09-19 18:31:57 +00:00

120 lines
2.6 KiB
YAML

version: "3.9"
networks:
opsNet:
driver: overlay
attachable: true
configs:
prometheus.yml:
file: ./monitoring/prometheus.yml
alertmanager.yml:
file: ./monitoring/alertmanager.yml
rules.yaml:
file: ./agent/rules.safe.yaml
agent.py:
file: ./agent/agent-fixed.py
secrets:
openai_api_key:
external: true
services:
ai-agent:
image: hostlabs/ai-agent:latest
networks: [opsNet]
ports:
- "18080:8080" # expose only if you want host access; remove if internal-only
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager # must be on a manager to control Swarm via docker.sock
labels:
- "ai.agent=true"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
configs:
- source: rules.yaml
target: /app/rules.yaml
- source: agent.py
target: /app/agent.py
relay:
image: hostlabs/ai-relay:latest
networks: [opsNet]
depends_on: [ai-agent]
environment:
- OPENAI_MODEL=gpt-4o-mini
- AGENT_URL=http://ai-agent:8080 # DNS name on opsNet
- OPENAI_API_KEY_FILE=/run/secrets/openai_api_key
secrets:
- source: openai_api_key
target: openai_api_key
ports:
- "18090:8090"
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
prometheus:
image: prom/prometheus:v2.55.0
networks: [opsNet]
deploy:
mode: replicated
replicas: 1
command:
- "--config.file=/etc/prometheus/prometheus.yml"
configs:
- source: prometheus.yml
target: /etc/prometheus/prometheus.yml
ports:
- "19090:9090"
alertmanager:
image: prom/alertmanager:v0.27.0
networks: [opsNet]
deploy:
mode: replicated
replicas: 1
command:
- "--config.file=/etc/alertmanager/alertmanager.yml"
configs:
- source: alertmanager.yml
target: /etc/alertmanager/alertmanager.yml
ports:
- "19093:9093"
cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.49.1
networks: [opsNet]
deploy:
mode: global
placement:
constraints:
- node.platform.os == linux
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
ports:
- "18081:8080"
node-exporter:
image: prom/node-exporter:v1.8.2
networks: [opsNet]
deploy:
mode: global
placement:
constraints:
- node.platform.os == linux
command:
- --path.rootfs=/host
volumes:
- /:/host:ro,rslave