120 lines
2.6 KiB
YAML
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
|