Docs / Monitoring & Logging / Checkmk: Comprehensive VPS Monitoring

Checkmk: Comprehensive VPS Monitoring

By Admin · Mar 15, 2026 · Updated Apr 24, 2026 · 382 views · 3 min read

Checkmk is a comprehensive IT monitoring platform that combines infrastructure monitoring, alerting, and visualization. Its agent-based approach provides deep visibility into server health, including CPU, memory, disk, network, services, and application-level metrics. This guide covers deploying Checkmk for VPS monitoring.

Installation (Checkmk Raw Edition)

# Download and install
wget https://download.checkmk.com/checkmk/2.3.0/check-mk-raw-2.3.0_0.jammy_amd64.deb
sudo apt install ./check-mk-raw-2.3.0_0.jammy_amd64.deb

# Create a monitoring site
sudo omd create monitoring
sudo omd start monitoring

# Access web interface
# https://your-server/monitoring
# Default credentials: cmkadmin / (shown during omd create)

Installing Agents on Monitored Hosts

# Download agent from Checkmk server
wget https://your-checkmk-server/monitoring/check_mk/agents/check-mk-agent_2.3.0-1_all.deb
sudo dpkg -i check-mk-agent_2.3.0-1_all.deb

# Agent listens on port 6556 by default
# Test agent output
check_mk_agent | head -20

# Register with server (agent bakery for TLS)
sudo cmk-agent-ctl register --hostname myserver --server checkmk-server --site monitoring --user cmkadmin

Adding Hosts

# Via web interface:
# 1. Setup → Hosts → Add host
# 2. Enter hostname and IP address
# 3. Save and run service discovery
# 4. Accept discovered services
# 5. Activate changes

# Via CLI
sudo -u monitoring cmk -N myserver     # Add host
sudo -u monitoring cmk -I myserver     # Discover services
sudo -u monitoring cmk -O              # Activate changes

Monitored Services (Auto-Discovered)

  • CPU utilization and load
  • Memory and swap usage
  • Disk space and I/O
  • Network interfaces and traffic
  • Running processes and services
  • System uptime
  • NTP synchronization
  • Docker containers (if Docker is installed)
  • MySQL, PostgreSQL, MongoDB (with plugins)
  • Nginx, Apache status

Custom Check Plugins

#!/bin/bash
# /usr/lib/check_mk_agent/local/check_disk_temperature
# Custom local check for disk temperature

TEMP=$(smartctl -A /dev/sda | grep Temperature_Celsius | awk '{print $10}')

if [ "$TEMP" -gt 50 ]; then
    echo "2 Disk_Temperature temp=$TEMP;45;50 CRITICAL - Disk temperature ${TEMP}C"
elif [ "$TEMP" -gt 45 ]; then
    echo "1 Disk_Temperature temp=$TEMP;45;50 WARNING - Disk temperature ${TEMP}C"
else
    echo "0 Disk_Temperature temp=$TEMP;45;50 OK - Disk temperature ${TEMP}C"
fi

# Make executable
chmod +x /usr/lib/check_mk_agent/local/check_disk_temperature

Alerting

# Checkmk supports multiple notification channels:
# - Email (built-in)
# - Slack (webhook)
# - PagerDuty
# - Microsoft Teams
# - Custom scripts

# Configure in: Setup → Events → Notification rules
# Define: who to notify, for which hosts/services, and how

Best Practices

  • Use agent bakery for automated agent deployment and updates
  • Organize hosts into folders by environment (production, staging, development)
  • Set up host and service groups for logical grouping
  • Configure business intelligence (BI) aggregations for service-level views
  • Use the REST API for automation and integration with CI/CD pipelines
  • Enable TLS encryption for agent communication in production

Was this article helpful?