Documentation Index Fetch the complete documentation index at: https://mintlify.com/bidewio/better-openclaw/llms.txt
Use this file to discover all available pages before exploring further.
The DevOps skill pack provides comprehensive infrastructure monitoring, automation, and observability tools for production deployments.
Included Services
n8n Workflow automation and orchestration
Redis Caching and session storage
Uptime Kuma Service uptime monitoring
Grafana Metrics visualization and dashboards
Prometheus Time-series metrics collection
PostgreSQL Relational database (dependency of n8n)
Skills Provided
n8n Trigger
Capabilities:
Trigger workflows via webhooks
Orchestrate multi-step automation
Integrate with 300+ services
Schedule recurring tasks
Handle event-driven workflows
Example Usage:
# Trigger a webhook workflow
curl -X POST "http://n8n:5678/webhook/deploy-notification" \
-H "Content-Type: application/json" \
-d '{
"event": "deployment_complete",
"service": "api-server",
"version": "v1.2.3",
"timestamp": "2025-01-15T10:30:00Z"
}'
# List workflows
curl -H "X-N8N-API-KEY: $N8N_API_KEY " \
"http://n8n:5678/api/v1/workflows"
# Get workflow execution status
curl -H "X-N8N-API-KEY: $N8N_API_KEY " \
"http://n8n:5678/api/v1/executions?workflowId=1&limit=10"
Redis Cache
Capabilities:
High-speed caching
Session storage
Rate limiting
Pub/Sub messaging
Distributed locking
Example Usage:
# Cache API responses
redis-cli -h redis SET "api:users:123" '{"id":123,"name":"John"}' EX 3600
# Get cached data
redis-cli -h redis GET "api:users:123"
# Increment counter (rate limiting)
redis-cli -h redis INCR "rate_limit:api:192.168.1.1" EX 60
# Pub/Sub for real-time events
redis-cli -h redis PUBLISH "deployments" '{"status":"complete"}'
Uptime Kuma Monitor
Capabilities:
HTTP/HTTPS monitoring
TCP/UDP port checks
Ping monitoring
Certificate expiration tracking
Status page generation
Multi-channel alerting
Example Usage:
# Add a monitor via API
curl -X POST "http://uptime-kuma:3001/api/monitor" \
-H "Authorization: Bearer $UPTIME_KUMA_TOKEN " \
-H "Content-Type: application/json" \
-d '{
"name": "API Server",
"type": "http",
"url": "https://api.example.com/health",
"interval": 60,
"retryInterval": 60,
"maxretries": 3
}'
# Get monitor status
curl "http://uptime-kuma:3001/api/monitor/1" \
-H "Authorization: Bearer $UPTIME_KUMA_TOKEN "
Grafana Dashboard
Capabilities:
Create custom dashboards
Visualize Prometheus metrics
Set up alerts
Share dashboards
Build panels and graphs
Example Usage:
# Create a dashboard via API
curl -X POST "http://grafana:3000/api/dashboards/db" \
-H "Authorization: Bearer $GRAFANA_API_KEY " \
-H "Content-Type: application/json" \
-d '{
"dashboard": {
"title": "Service Metrics",
"panels": [
{
"title": "CPU Usage",
"type": "graph",
"targets": [{
"expr": "rate(process_cpu_seconds_total[5m])"
}]
}
]
}
}'
Prometheus Query
Capabilities:
Scrape metrics from services
Time-series data storage
PromQL queries
Alerting rules
Service discovery
Example Usage:
# Query current CPU usage
curl 'http://prometheus:9090/api/v1/query?query=rate(process_cpu_seconds_total[5m])'
# Query memory usage over time
curl 'http://prometheus:9090/api/v1/query_range?query=process_resident_memory_bytes&start=2025-01-15T00:00:00Z&end=2025-01-15T23:59:59Z&step=15m'
# Get all targets
curl 'http://prometheus:9090/api/v1/targets'
Use Cases
Automated Deployments
Trigger deployment workflows:
Code pushed to GitHub
Webhook triggers n8n workflow
n8n builds Docker image
Deploys to production
Updates Uptime Kuma monitor
Sends Slack notification
Infrastructure Monitoring
Monitor all services:
# Prometheus scrape config
scrape_configs :
- job_name : 'openclaw-services'
static_configs :
- targets :
- 'api:3000'
- 'web:3654'
- 'redis:6379'
# Query service health in Grafana
up {job= "openclaw-services" }
Incident Response
Automate incident handling:
Uptime Kuma detects service down
Webhook triggers n8n workflow
n8n checks Prometheus metrics
Creates incident ticket
Alerts on-call engineer
Logs to PostgreSQL
Use Redis for caching:
// Check cache first
const cached = await redis . get ( `data: ${ id } ` );
if ( cached ) return JSON . parse ( cached );
// Fetch from database
const data = await db . query ( ... );
// Cache for 1 hour
await redis . set ( `data: ${ id } ` , JSON . stringify ( data ), 'EX' , 3600 );
return data ;
Example Monitoring Workflow
n8n Workflow: Deploy & Notify
{
"nodes" : [
{
"type" : "n8n-nodes-base.webhook" ,
"name" : "Deploy Trigger" ,
"parameters" : {
"path" : "deploy" ,
"httpMethod" : "POST"
}
},
{
"type" : "n8n-nodes-base.httpRequest" ,
"name" : "Deploy Service" ,
"parameters" : {
"url" : "http://dokploy:3000/api/deploy" ,
"method" : "POST"
}
},
{
"type" : "n8n-nodes-base.httpRequest" ,
"name" : "Update Monitor" ,
"parameters" : {
"url" : "http://uptime-kuma:3001/api/monitor/resume/1" ,
"method" : "POST"
}
},
{
"type" : "n8n-nodes-base.slack" ,
"name" : "Notify Team" ,
"parameters" : {
"channel" : "#deployments" ,
"text" : "Deployment complete: {{$json.service}} v{{$json.version}}"
}
}
]
}
Grafana Dashboard JSON
{
"dashboard" : {
"title" : "OpenClaw Services" ,
"panels" : [
{
"title" : "Request Rate" ,
"type" : "graph" ,
"targets" : [{
"expr" : "rate(http_requests_total[5m])"
}]
},
{
"title" : "Error Rate" ,
"type" : "graph" ,
"targets" : [{
"expr" : "rate(http_requests_total{status=~ \" 5.. \" }[5m])"
}]
},
{
"title" : "Response Time (p95)" ,
"type" : "graph" ,
"targets" : [{
"expr" : "histogram_quantile(0.95, http_request_duration_seconds_bucket)"
}]
}
]
}
}
Configuration
Environment Variables
# n8n
N8N_HOST = n8n
N8N_PORT = 5678
N8N_API_KEY =< generated >
N8N_ENCRYPTION_KEY =< generated >
# Redis
REDIS_HOST = redis
REDIS_PORT = 6379
REDIS_PASSWORD =< generated >
# Uptime Kuma
UPTIME_KUMA_HOST = uptime-kuma
UPTIME_KUMA_PORT = 3001
# Grafana
GRAFANA_HOST = grafana
GRAFANA_PORT = 3000
GRAFANA_ADMIN_PASSWORD =< generated >
# Prometheus
PROMETHEUS_HOST = prometheus
PROMETHEUS_PORT = 9090
# PostgreSQL (n8n dependency)
POSTGRES_HOST = postgresql
POSTGRES_PORT = 5432
POSTGRES_DB = n8n
POSTGRES_USER = n8n
POSTGRES_PASSWORD =< generated >
Prometheus Configuration
Example prometheus.yml:
global :
scrape_interval : 15s
evaluation_interval : 15s
scrape_configs :
- job_name : 'prometheus'
static_configs :
- targets : [ 'localhost:9090' ]
- job_name : 'openclaw-api'
static_configs :
- targets : [ 'api:3456' ]
- job_name : 'redis'
static_configs :
- targets : [ 'redis:6379' ]
metrics_path : '/metrics'
Memory Requirements
n8n : ~512 MB
PostgreSQL : ~256 MB
Redis : ~128 MB
Uptime Kuma : ~256 MB
Grafana : ~512 MB
Prometheus : ~1 GB (depends on retention)
Total : ~3 GB minimum
n8n
Use webhooks instead of polling for real-time events
Enable workflow caching for repeated executions
Set execution timeout limits
Redis
Set appropriate TTLs on all cached data
Use connection pooling in applications
Enable persistence if data durability is needed
Prometheus
Adjust scrape_interval based on needs (15s default)
Set retention period: --storage.tsdb.retention.time=30d
Use recording rules for expensive queries
Grafana
Use dashboard variables for reusable queries
Set reasonable refresh intervals (1m-5m)
Cache query results when possible
Next Steps
Video Creator Pack Add video processing capabilities
Services Explore all available services