In this article, we'll walk through the complete process of working with status-page in a server environment. Understanding cachet is essential for maintaining a reliable and performant infrastructure.
Prerequisites
- Basic familiarity with the Linux command line
- A VPS running Ubuntu 22.04 or later (2GB+ RAM recommended)
- Root or sudo access to the server
- A registered domain name (for public-facing services)
- Open ports: 3000 (Grafana), 9090 (Prometheus)
Stack Installation
Regular maintenance is essential for keeping your status-page installation running smoothly. Schedule periodic reviews of log files, disk usage, and security updates to prevent issues before they occur.
# docker-compose.yml for monitoring stack
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
ports:
- "9090:9090"
restart: unless-stopped
grafana:
image: grafana/grafana:latest
volumes:
- grafana_data:/var/lib/grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=changeme
restart: unless-stopped
volumes:
prometheus_data:
grafana_data:
Make sure to restart the service after applying these changes. Some settings require a full restart rather than a reload to take effect.
Dashboard Configuration
The cachet component plays a crucial role in the overall architecture. Understanding how it interacts with status-page will help you make better configuration decisions.
# prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
- job_name: 'status-page'
static_configs:
- targets: ['localhost:9090']
Each line in the configuration serves a specific purpose. The comments explain the reasoning behind each setting, making it easier to customize for your specific use case.
Alert Rule Setup
The status-page configuration requires careful attention to resource limits and security settings. On a VPS with limited resources, it's important to tune these parameters according to your available RAM and CPU cores.
# docker-compose.yml for monitoring stack
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
ports:
- "9090:9090"
restart: unless-stopped
grafana:
image: grafana/grafana:latest
volumes:
- grafana_data:/var/lib/grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=changeme
restart: unless-stopped
volumes:
prometheus_data:
grafana_data:
This configuration provides a good balance between performance and resource usage. For high-traffic scenarios, you may need to increase the limits further.
Important Notes
For production deployments, consider implementing high availability by running multiple instances behind a load balancer. This approach provides both redundancy and improved performance under heavy load.
Data Retention
It's recommended to test this configuration in a staging environment before deploying to production. This helps identify potential compatibility issues and allows you to benchmark performance differences.
# prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
- job_name: 'status-page'
static_configs:
- targets: ['localhost:9090']
The configuration above sets the recommended values for a VPS with 2-4GB of RAM. Adjust the memory-related settings proportionally if your server has different specifications.
Next Steps
With status-page now set up and running, consider implementing monitoring to track performance metrics over time. Regularly review your configuration as your workload changes and scale resources accordingly.