Docs / Monitoring & Logging / Building a Status Page with Cachet or Gatus

Building a Status Page with Cachet or Gatus

By Admin · Mar 10, 2026 · Updated Apr 25, 2026 · 4 views · 3 min read

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.

Was this article helpful?