Skip to main content

Run local Nagios-compatible checks; push results to Uptime Kuma

Project description

KumaCub

Run local checks; push results to Uptime Kuma.

KumaCub is a lightweight daemon that executes scheduled health checks and pushes the results to Uptime Kuma. It supports Nagios-compatible check scripts and provides flexible configuration via TOML files or environment variables.

Installation

Arch Linux (AUR)

For Arch Linux users, you can install KumaCub from the AUR. Installing this way will also install the systemd unit file and a sample config file.

# Install from AUR (we'll use `yay` for this example)
yay -S kumacub

Quick Setup with uv

  1. Install uv:
    curl -LsSf https://astral.sh/uv/install.sh | sudo sh
    
  2. Create a systemd unit file /etc/systemd/system/kumacubd.service:
    [Unit]
    Description=KumaCub - Run local checks and push results to Uptime Kuma
    Documentation=https://github.com/toadstule/kumacub
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    ExecStart=/root/.local/bin/uv run --isolated --no-progress --python=3.13 --with kumacub kumacubd
    ExecReload=/bin/kill -HUP $MAINPID
    
    [Install]
    WantedBy=multi-user.target   
    
  3. Create a config file /etc/kumacub/config.toml:
    sudo mkdir /etc/kumacub
    
    [log]
    level = "DEBUG"
    structured = false
    
    [[checks]]
    name = "sampe check"
    executor.command = "echo"
    executor.args = ["-n", "OK - sample check is working"]
    publisher.url = "https://uptime-kuma.example.com"
    publisher.push_token = "your-push-token-here"
    schedule.interval = 60
    
  4. Reload systemd daemon:
    sudo systemctl daemon-reload
    
  5. Start the service:
    sudo systemctl start kumacubd
    

Manual Installation (PIP)

We understand that this is a bit rough; it's a work in progress.

pip install kumacub
sudo mkdir /etc/kumacub
sudo mv /usr/local/config.toml /etc/kumacub/config.toml
sudo mv /usr/local/kumacubd.service /etc/systemd/system/
sudo sed -i 's|/usr/bin/kumacubd|/usr/local/bin/kumacubd|' /etc/systemd/system/kumacubd.service
sudo systemctl daemon-reload

Configuration

KumaCub uses a TOML configuration file. By default, it looks for /etc/kumacub/config.toml, but you can override this with the KUMACUB__CONFIG environment variable.

Example Configuration

# Logging configuration
[log]
level = "INFO"  # DEBUG, INFO, WARNING, ERROR, CRITICAL
structured = true  # Use JSON-formatted logs

# Define checks
[[checks]]
name = "disk usage"
executor.command = "/usr/lib/monitoring-plugins/check_disk"
executor.args = ["-c", "90"]
publisher.url = "https://uptime-kuma.example.com"
publisher.push_token = "your-push-token-here"
schedule.interval = 60  # Run every 60 seconds

[[checks]]
name = "system time (ntp)"
executor.command = "/usr/lib/monitoring-plugins/check_ntp_time"
executor.args = ["-H", "pool.ntp.org", "-c", "10"]
publisher.url = "https://uptime-kuma.example.com"
publisher.push_token = "your-push-token-here"
schedule.interval = 30

[[checks]]
name = "system load"
executor.command = "check_load"
executor.args = ["-c", "10", "-w", "10"]
executor.env = { "PATH" = "/usr/lib/monitoring-plugins" }
publisher.url = "https://uptime-kuma.example.com"
publisher.push_token = "your-push-token-here"
schedule.interval = 30

Configuration Fields

Check Configuration

Each [[checks]] entry supports:

  • name: Unique identifier for the check
  • executor.command: Command to execute
  • executor.args: Command arguments (optional, default: [])
  • executor.env: Environment variables (optional, default: {})
  • publisher.url: Uptime Kuma instance URL
  • publisher.push_token: Uptime Kuma push token
  • schedule.interval: Check interval in seconds (default: 60)

Environment Variables

You can override any configuration value using environment variables with the KUMACUB__ prefix:

# Override config file location
export KUMACUB__CONFIG=/path/to/config.toml

# Override log level
export KUMACUB__LOG__LEVEL=DEBUG

# Override log format
export KUMACUB__LOG__STRUCTURED=false

Usage

Managing the Systemd Service

# Start the service
sudo systemctl start kumacubd

# Stop the service
sudo systemctl stop kumacubd

# Restart the service
sudo systemctl restart kumacubd

# Reload configuration without restarting
sudo systemctl reload kumacubd

# Check service status
sudo systemctl status kumacubd

# View logs
sudo journalctl -u kumacubd -f

# Enable on boot
sudo systemctl enable kumacubd

# Disable on boot
sudo systemctl disable kumacubd

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kumacub-0.2.0.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kumacub-0.2.0-py3-none-any.whl (23.6 kB view details)

Uploaded Python 3

File details

Details for the file kumacub-0.2.0.tar.gz.

File metadata

  • Download URL: kumacub-0.2.0.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kumacub-0.2.0.tar.gz
Algorithm Hash digest
SHA256 669b26bd5f9e87e1d2165741c7e2a01ac04c2de5371d79ebf67d7e7244a11bbd
MD5 f1f9d5165da237c09f8d6178ba6bc440
BLAKE2b-256 1c7762d88290e01ee128e4ba87143e79b88bb2e64bcc290068de8e46bbc49533

See more details on using hashes here.

Provenance

The following attestation bundles were made for kumacub-0.2.0.tar.gz:

Publisher: main.yml on toadstule/kumacub

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kumacub-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: kumacub-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 23.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kumacub-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 91a8566e359b839e57e66f7e2dc9a1ea6204894e1175bd42b389245fba2d1791
MD5 755a9b285e50cce5d261031de146753f
BLAKE2b-256 37e2c20c26d6a1151b5b1d275483ea69d642542b50b08c7c25235b867f197021

See more details on using hashes here.

Provenance

The following attestation bundles were made for kumacub-0.2.0-py3-none-any.whl:

Publisher: main.yml on toadstule/kumacub

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page