Skip to main content

Lightweight host monitoring agent — telemetry, alerting, and process watching

Project description

🐱 LurkKit

Lightweight host monitoring agent — silently watching, loudly alerting.

CI PyPI Python 3.8+ License: MIT

LurkKit is a zero-friction host monitoring agent. Drop it on any host, point it at a config file, and get system metrics, process health, HTTP probing, and log tail alerts forwarded to Slack, PagerDuty, Datadog, or OpsGenie.


Quick Start

pip install lurkkit
lurkkit --init      # generate config
lurkkit             # run

Commands

lurkkit --status                        # one-shot system snapshot
lurkkit --validate --config lurkkit.yaml  # validate config
lurkkit --config /etc/lurkkit/lurkkit.yaml
lurkkit --log-level DEBUG
lurkkit --version

Installation Options

User Install (no root)

pip install --user lurkkit
lurkkit --init

Config auto-detected from (first found wins):

  • $LURKKIT_CONFIG env var
  • ./lurkkit.yaml
  • ~/.config/lurkkit/lurkkit.yaml
  • /etc/lurkkit/lurkkit.yaml

systemd (root)

sudo bash scripts/install.sh
journalctl -u lurkkit -f

Docker

docker run -v $(pwd)/lurkkit.yaml:/etc/lurkkit/lurkkit.yaml ghcr.io/SREportal/lurkkit

Alert Routing

CRITICAL → PagerDuty + OpsGenie  (pages on-call)
WARNING  → Slack + Datadog        (no 3am calls)
INFO     → Slack + Datadog

Configurable via paging_severities and non_paging_severities in your config.


Monitors

Monitor What it watches
System CPU, memory, swap, disk, network, load average
Process Named process count, CPU %, memory — with critical: true flag
HTTP Status code, response time, body regex — per-check severity
Logs Regex pattern matching on any log file, handles rotation

Metrics Reference

Measurement Fields
system.cpu usage_percent, core_count
system.memory usage_percent, used_bytes, available_bytes
system.disk usage_percent, free_bytes (per mount)
system.network bytes_sent, bytes_recv, errin, errout
system.load load_1m, load_5m, load_15m
process.count count
process.stats cpu_percent, mem_mb
http.check status_code, response_ms, up
log.matches count

Extending LurkKit

Custom Collector

from lurkkit import LurkKitAgent
from lurkkit.collectors.base import BaseCollector
from lurkkit.models import Metric, Alert, Severity

class MyCollector(BaseCollector):
    def collect(self):
        return [Metric("myapp.value", {"count": 42}, self._base_tags())], []

agent = LurkKitAgent.from_config("lurkkit.yaml")
agent.register_collector("myapp", MyCollector({"interval": 15}, agent.hostname))
agent.start()

Development

git clone https://github.com/SREportal/lurkkit
cd lurkkit
pip install -e ".[dev]"
pytest tests/ -v

See CONTRIBUTING.md for the full guide.

License

MIT — see LICENSE.

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

lurkkit-1.0.0.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

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

lurkkit-1.0.0-py3-none-any.whl (23.1 kB view details)

Uploaded Python 3

File details

Details for the file lurkkit-1.0.0.tar.gz.

File metadata

  • Download URL: lurkkit-1.0.0.tar.gz
  • Upload date:
  • Size: 19.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for lurkkit-1.0.0.tar.gz
Algorithm Hash digest
SHA256 323b5f47b36ced252f24c801a8fbe13e1c58f1b3a0727ae2e9152f5512f6270a
MD5 7e7fea8e6424e778aa26feda4c7ac05b
BLAKE2b-256 c4f180ab839f6d707060d5859b28e4be7da0bdff6f4df976dae50db11bbc366e

See more details on using hashes here.

File details

Details for the file lurkkit-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: lurkkit-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 23.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for lurkkit-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2fe24d90d68347f900d343ba22eb3bf7e2f59aff5d98736307775448e204803d
MD5 46657a59d9954ad8c3efb58947fc6187
BLAKE2b-256 59401b85cc5fe7b91966e15e2a4421127737457e819126e839ba1ce87780dbda

See more details on using hashes here.

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