🐱 LurkKit
Lightweight host monitoring agent — silently watching, loudly alerting.
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_CONFIGenv 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.
Metadata
Release files for lurkkit 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| lurkkit-1.0.0.tar.gz | 19.4 kB | Without provenance | Details for lurkkit-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| lurkkit-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for lurkkit-1.0.0-py3-none-any.whl |
Total release size: 42.5 kB
Release files / lurkkit-1.0.0.tar.gz
| Download URL | lurkkit-1.0.0.tar.gz |
|---|---|
| Size | 19.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
323b5f47b36ced252f24c801a8fbe13e1c58f1b3a0727ae2e9152f5512f6270a
|
|
BLAKE2b-256 checksum How to use checksums |
c4f180ab839f6d707060d5859b28e4be7da0bdff6f4df976dae50db11bbc366e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.4
|
Release files / lurkkit-1.0.0-py3-none-any.whl
| Download URL | lurkkit-1.0.0-py3-none-any.whl |
|---|---|
| Size | 23.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2fe24d90d68347f900d343ba22eb3bf7e2f59aff5d98736307775448e204803d
|
|
BLAKE2b-256 checksum How to use checksums |
59401b85cc5fe7b91966e15e2a4421127737457e819126e839ba1ce87780dbda
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.4
|
Security for lurkkit 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.