mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-06-04 04:22:57 +00:00
5.7 KiB
5.7 KiB
Uptime Kuma Monitoring Template
Overview
Uptime Kuma is a fancy self-hosted monitoring tool that helps you track your websites, APIs, and services.
Quick Start
# Create docker-compose.yml with the content below
docker-compose up -d
Docker Compose
version: '3.8'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: always
ports:
- "3001:3001"
volumes:
- uptime-kuma-data:/app/data
environment:
- NODE_ENV=production
networks:
- uptime-kuma-network
volumes:
uptime-kuma-data:
networks:
uptime-kuma-network:
driver: bridge
Environment Variables
NODE_ENV=production: Run in production mode
Setup Guide
-
Deploy:
docker-compose up -d -
Access: Open http://localhost:3001
-
Initial Setup:
- Create admin account
- Set administrator password
- Choose language preference
-
Add First Monitor:
- Click "Add New Monitor"
- Enter URL/IP to monitor
- Set check interval
- Configure notifications
Monitor Types
HTTP(s) Monitor
# Example configuration
Monitor Type: HTTP(s)
Friendly Name: My Website
URL: https://example.com
Interval: 60 seconds
Timeout: 30 seconds
Retries: 3
TCP Port Monitor
# Example configuration
Monitor Type: TCP
Friendly Name: SSH Server
Hostname: server.example.com
Port: 22
Interval: 60 seconds
Timeout: 10 seconds
Ping Monitor
# Example configuration
Monitor Type: Ping
Friendly Name: Router
Hostname: 192.168.1.1
Interval: 30 seconds
Packet Size: 56
DNS Monitor
# Example configuration
Monitor Type: DNS
Friendly Name: Domain Resolution
Hostname: example.com
DNS Server: 8.8.8.8
Resolve Type: A
Interval: 300 seconds
Notification Channels
Email Notifications
# Setup in Uptime Kuma UI
Notification Type: Email
SMTP Host: smtp.gmail.com
SMTP Port: 587
Username: your-email@gmail.com
Password: your-app-password
From Email: monitor@example.com
To Emails: admin@example.com
Discord Notifications
# Setup in Uptime Kuma UI
Notification Type: Discord
Webhook URL: https://discord.com/api/webhooks/YOUR_WEBHOOK_URL
Telegram Notifications
# Setup in Uptime Kuma UI
Notification Type: Telegram
Bot Token: YOUR_BOT_TOKEN
Chat ID: YOUR_CHAT_ID
Slack Notifications
# Setup in Uptime Kuma UI
Notification Type: Slack
Webhook URL: https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK
Reverse Proxy (Traefik)
labels:
- "traefik.enable=true"
- "traefik.http.routers.uptime-kuma.rule=Host(`status.yourdomain.com`)"
- "traefik.http.routers.uptime-kuma.tls=true"
- "traefik.http.routers.uptime-kuma.tls.certresolver=letsencrypt"
- "traefik.http.services.uptime-kuma.loadbalancer.server.port=3001"
Backup Strategy
# Backup Uptime Kuma data
docker run --rm -v uptime-kuma-data:/data -v $(pwd):/backup alpine tar czf /backup/uptime-kuma-backup.tar.gz -C /data .
# Restore Uptime Kuma data
docker run --rm -v uptime-kuma-data:/data -v $(pwd):/backup alpine tar xzf /backup/uptime-kuma-backup.tar.gz -C /data
# Restart after restore
docker-compose restart uptime-kuma
Performance Optimization
# For high-volume monitoring
environment:
- UPTIME_KUMA_MAX_MONITORS_PER_PAGE=100
- UPTIME_KUMA_HEARTBEAT_INTERVAL=20
# Resource limits
deploy:
resources:
limits:
memory: 512M
cpus: '0.5'
reservations:
memory: 256M
cpus: '0.2'
Advanced Configuration
Custom HTTP Headers
# In monitor configuration
HTTP Headers:
User-Agent: Uptime-Kuma/1.0.0
Authorization: Bearer YOUR_TOKEN
HTTP POST Body
# For API monitoring
Method: POST
Body: '{"key": "value"}'
Headers:
Content-Type: application/json
Expected Status Codes
# Custom status codes
Accepted Status Codes: 200,201,202,204
Security
- Change default admin password
- Use HTTPS in production
- Network access control
- Regular backups
- Monitor access logs
API Usage
# Get all monitors
curl -H "Authorization: Bearer YOUR_TOKEN" \
http://localhost:3001/api/monitors
# Get monitor status
curl -H "Authorization: Bearer YOUR_TOKEN" \
http://localhost:3001/api/monitors/1/status
# Add monitor via API
curl -X POST -H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"type":"http","name":"Test","url":"https://example.com"}' \
http://localhost:3001/api/monitors
Monitoring Best Practices
- Set appropriate intervals: Don't check too frequently
- Use retries: Handle temporary network issues
- Configure timeouts: Prevent hanging checks
- Set up notifications: Get alerts for issues
- Group monitors: Organize by service/environment
- Use tags: Filter and categorize monitors
Troubleshooting
- Monitor failures: Check network connectivity
- Notification issues: Verify webhook/API keys
- Performance problems: Reduce check frequency
- Database errors: Check disk space and permissions
- Access problems: Verify firewall settings
Integration Examples
Docker Container Monitoring
Monitor Type: HTTP
URL: http://container-ip:port/health
Interval: 30 seconds
Expected Status Code: 200
Database Monitoring
Monitor Type: TCP
Hostname: postgres-server
Port: 5432
Interval: 60 seconds
SSL Certificate Monitoring
Monitor Type: HTTP(s)
URL: https://example.com
Check Certificate: true
Days Before Expiry: 30
Maintenance
# Check logs
docker-compose logs -f uptime-kuma
# Restart service
docker-compose restart uptime-kuma
# Update image
docker-compose pull && docker-compose up -d
# Clean up old data
docker exec uptime-kuma npm run prune