Configuration
Complete reference for all configuration options.
Configuration Files
| File |
Purpose |
Override Method |
.env |
Global service configuration |
Copy from .env.example |
backend/.env |
API-specific (admin seed) |
Copy from backend/.env.example |
services/collectors/config/sources.yaml |
Collector polling intervals |
Edit directly |
services/vector/vector.yaml |
Vector HTTP→Kafka routing |
Edit directly |
docker-compose.yml |
Service definitions, resources |
Use docker-compose.override.yml |
Global Environment Variables (.env)
Database
| Variable |
Default |
Description |
POSTGRES_HOST |
postgres |
PostgreSQL hostname |
POSTGRES_PORT |
5432 |
PostgreSQL port |
POSTGRES_DB |
aiops |
Database name |
POSTGRES_USER |
aiops |
Database user |
POSTGRES_PASSWORD |
Required |
Database password |
Redis
| Variable |
Default |
Description |
REDIS_HOST |
redis |
Redis hostname |
REDIS_PORT |
6379 |
Redis port |
REDIS_DB |
0 |
Database index |
Kafka
| Variable |
Default |
Description |
KAFKA_BOOTSTRAP_SERVERS |
kafka-broker:19092 |
Internal broker address |
KAFKA_TOPIC_RAW_LOGS |
raw_logs |
Raw logs topic |
KAFKA_TOPIC_RAW_METRICS |
raw_metrics |
Raw metrics topic |
KAFKA_TOPIC_RAW_TRACES |
raw_traces |
Raw traces topic |
KAFKA_TOPIC_RAW_EVENTS |
raw_events |
Raw events topic |
KAFKA_TOPIC_CANONICAL |
canonical-events |
Normalized events topic |
KAFKA_TOPIC_DLQ |
dlq |
Dead letter queue |
Service Ports
| Variable |
Default |
Service |
API_PORT |
8000 |
FastAPI REST API |
COLLECTORS_PORT |
8080 |
Webhook receiver |
ML_SERVICE_PORT |
8001 |
RoBERTa inference |
VECTOR_HTTP_PORT |
8686 |
Ephemeral upload |
VECTOR_WEBHOOK_PORT |
8687 |
Webhook ingestion |
Authentication & Security
| Variable |
Default |
Description |
JWT_SECRET_KEY |
Required |
HS256 signing key (32+ chars) |
JWT_ALGORITHM |
HS256 |
Signing algorithm |
ACCESS_TOKEN_EXPIRE_MINUTES |
60 |
Access token lifetime |
REFRESH_TOKEN_EXPIRE_DAYS |
7 |
Refresh token lifetime |
COOKIE_SECURE |
true |
HTTPS-only cookies (prod) |
COOKIE_SAMESITE |
strict |
CSRF protection |
API_CORS_ORIGINS |
http://localhost:5173 |
Allowed origins (comma-separated) |
Admin Seed
| Variable |
Default |
Description |
SEED_ADMIN_EMAIL |
admin@alertops.com |
Initial admin email |
SEED_ADMIN_PASSWORD |
Required |
Initial admin password |
ML & Labeling
| Variable |
Default |
Description |
NVIDIA_API_KEY |
— |
NVIDIA API key for LLM labeling |
LLM_MODEL |
nvidia/llama-3.3-nemotron-super-49b-v1 |
Model for auto-labeling |
Environment
| Variable |
Default |
Description |
ENV |
development |
development or production |
Collector Configuration (services/collectors/config/sources.yaml)
sources:
jira:
poll_interval_seconds: 600 # 10 minutes
jql: "project = MYPROJECT" # Optional custom JQL
prometheus:
poll_interval_seconds: 300 # 5 minutes
query: "up" # PromQL query
azuredevops:
poll_interval_seconds: 600 # 10 minutes
wiql: "SELECT * FROM WorkItems" # Optional custom WIQL
gitlab_webhook: {} # Event-driven, no polling
Collector Auth (set in .env)
| Collector |
Variables |
| Jira |
JIRA_BASE_URL, JIRA_EMAIL, JIRA_API_TOKEN |
| Prometheus |
PROMETHEUS_URL, PROMETHEUS_QUERY |
| Azure DevOps |
AZURE_DEVOPS_ORG, AZURE_DEVOPS_PROJECT, AZURE_DEVOPS_PAT |
| GitLab |
GITLAB_WEBHOOK_SECRET (HMAC verification) |
Pipeline Configuration (services/libs/common/config.py)
| Parameter |
Default |
Description |
dedup_window_seconds |
300 |
Deduplication sliding window |
drain3_max_clusters |
100000 |
Max Drain3 template clusters |
drain3_state_path |
/app/state/drain3_state.json |
Drain3 persistence file |
pipeline_batch_size |
5000 (100 in .env) |
Messages per Kafka poll |
pipeline_batch_timeout_seconds |
0.5 |
Max wait for batch |
kafka_consumer_group |
aiops-pipeline |
Consumer group ID |
ml_min_confidence |
0.80 |
Min confidence to cache prediction |
Vector Configuration (services/vector/vector.yaml)
sources:
ephemeral_http:
type: http
address: "0.0.0.0:8686"
webhook_http:
type: http
address: "0.0.0.0:8687"
sinks:
kafka:
type: kafka
inputs: [ephemeral_http, webhook_http]
bootstrap_servers: ${KAFKA_BROKERS:-kafka-broker:19092}
topic: canonical-events
encoding: json
Development Override (docker-compose.override.yml)
Enables hot-reload for API and collectors:
services:
api:
command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
volumes:
- ./backend:/app
- ./services/libs/common:/app/libs/common
collectors:
volumes:
- ./services/collectors:/app
- ./services/libs/common:/app/libs/common
Production Checklist
Validation
# Validate docker-compose config
docker compose config
# Check for missing required vars
docker compose config 2>&1 | grep -i "unset\|empty\|required"
# Dry-run compose
docker compose up --dry-run