kontiki-monitor
Part of the Kontiki suite — a compact open-source stack for startups and small teams that need ops without the heavy stack.
Full suite overview → https://kontiki-org.github.io/
Try it locally → Sandbox below.
Kontiki-monitor is a small, practical ops suite for Kontiki platforms — complete enough to run, simple enough to own.
Boomerang is the Kontiki alerting engine:
YAML subscriptions match normalized alerts and route them to notifiers (email, Telegram, …).
This repository ships two Kontiki services that plug into it: they judge Registry fleet
state, registry lifecycle events (including recorded exceptions), and local disk
occupation, then publish alert.normalized for those subscriptions and notifiers.
| Service | CLI | Config | Role |
|---|---|---|---|
kontiki-monitor |
kontiki-monitor |
kontiki-monitor: in config/default.yaml (+ config/embedded.yaml) |
Fleet expectations, Registry state changes, and recorded exceptions → alerts |
host-check-service |
host-check-service |
host-check: in config/host-check.yaml |
Local disk occupation (warning/critical %, paths); one instance per host |
Install
kontiki-monitor publishes alert.normalized and relies on
Boomerang for subscriptions and
delivery (email / Telegram). Together with a Kontiki Registry and an AMQP
broker, that is the ops path — same pattern as any other Kontiki service
(systemd, Kubernetes, …).
pip install kontiki-monitor kontiki-boomerang
- kontiki-monitor (PyPI) —
kontiki-monitor,host-check-service - kontiki-boomerang (PyPI) —
boomerang-subscription,boomerang-alert-engine,boomerang-email-notifier,boomerang-telegram-notifier, …
kontiki-monitor only pulls boomerang-contracts for alert shapes; install
Boomerang explicitly as above. Pass one or more --config YAML files to each
process (Kontiki merges them). Monitor / host-check keys:
docs/configuration.md and
docs/kontiki-monitor-config.example.yaml.
Boomerang config: its own
docs/configuration.md.
Minimal sketch (same pattern on systemd, Kubernetes, …):
kontiki-monitor --config /path/to/common.yaml --config /path/to/monitor.yaml
host-check-service --config /path/to/common.yaml --config /path/to/host-check.yaml
boomerang-subscription --config /path/to/common.yaml --config /path/to/subscription.yaml
boomerang-alert-engine --config /path/to/common.yaml --config /path/to/alert_engine.yaml
boomerang-email-notifier --config /path/to/common.yaml --config /path/to/email.yaml
boomerang-telegram-notifier --config /path/to/common.yaml --config /path/to/telegram.yaml
To try everything without wiring your own platform, use the sandbox below (Compose installs Boomerang in the images for you).
Sandbox — demo-app → Telegram
Local trial stack via Docker Compose (not a production installer). It runs:
- a demo Kontiki service (
demo-app) as the business workload under watch - the ops stack that watches it: Registry, kontiki-monitor, Boomerang (subscription / alert-engine / notifiers), and MailHog (local SMTP sink so you can inspect email alerts without a real mailbox)
Degrade the demo app; ops get a Telegram (and email) alert.
1. Telegram bot token (optional but needed for Telegram) — see NB — Telegram bot token and chat id:
cp stack/telegram_notifier_bot_token.yaml.example \
stack/telegram_notifier_bot_token.yaml
# set app.telegram.bot_token from BotFather
2. Start the sandbox:
make stack-up
Optional — observe with kontiki-tui (dev dep via poetry install):
make tui
3. Target a chat — operator config already wired for registry degraded state changes:
# stack/subscription.yaml (excerpt)
app:
subscriptions:
platform-ops: # owner_id → recipient_id at dispatch
demo-app-degraded: # rule_name (subscription id under that owner)
status: active
subscription:
rule:
category: kontiki.registry
event_type: instance_state_changed
criteria:
all_of:
- key: new_state
operator: eq
value: degraded
endpoints:
- telegram.ops_alerts # <channel>.<endpoint_id> → telegram_notifier endpoints.ops_alerts
- email.oncall # <channel>.<endpoint_id> → email_notifier endpoints.oncall
# stack/telegram_notifier.yaml (excerpt)
app:
endpoints:
ops_alerts:
chat_id: "YOUR_CHAT_ID"
Fleet expectation for the demo (monitor opens/recovers insufficient / missing as well):
# config/embedded.yaml (excerpt)
kontiki-monitor:
expected_services:
demo-app-service:
min_active: 1
4. Trigger an alert:
make demo-app-degrade
# wait a few seconds (demo heartbeat is 5s)
Telegram looks like this:
Email lands in MailHog: http://127.0.0.1:8025.
Recover and stop:
make demo-app-recover
make stack-down
Integration tests
make run-amqp
make integration-test
NB — Telegram bot token and chat id
Needed only if you want Telegram in the sandbox (email via MailHog works without it).
Bot token
- Open Telegram and talk to @BotFather.
- Send
/newbotand follow the prompts (display name + username ending inbot). - BotFather replies with a token like
123456:ABC-DEF.... - Put it in
stack/telegram_notifier_bot_token.yaml(from the.examplefile):
app:
telegram:
bot_token: "YOUR_BOT_TOKEN"
Keep that file local (it is gitignored).
Chat id (where alerts are sent)
-
Start a chat with your new bot (press Start), or add it to a group.
-
Send any message in that chat.
-
Open in a browser (replace with your token):
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates -
In the JSON, find
"chat":{"id": ...}— that number is yourchat_id(for groups it is often negative). -
Set it in
stack/telegram_notifier.yaml:
app:
endpoints:
ops_alerts:
chat_id: "YOUR_CHAT_ID"
Use a string in YAML even though the value is numeric.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kontiki_monitor-0.3.0.tar.gz.
File metadata
- Download URL: kontiki_monitor-0.3.0.tar.gz
- Upload date:
- Size: 18.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
poetry/2.3.2 CPython/3.13.7 Linux/6.8.0-124-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd7c29aef7ec977617e9f37deeaf1245c76c16c698c01e6f49e51d9f3d12d3b7
|
|
| MD5 |
dc2740459f6b73f419fb61c88481ca9a
|
|
| BLAKE2b-256 |
5cf34f8f45701219dc90a1d8fe0fedbc0a2b59e32b1bd8edf583e3ea9cf0c84b
|
File details
Details for the file kontiki_monitor-0.3.0-py3-none-any.whl.
File metadata
- Download URL: kontiki_monitor-0.3.0-py3-none-any.whl
- Upload date:
- Size: 24.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
poetry/2.3.2 CPython/3.13.7 Linux/6.8.0-124-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70ea9495e90b61f9bbd73932b72dd74e1c00ab67e92d5ca04f2b5998ef97e676
|
|
| MD5 |
aafbe95f817027b26030ac38a5f25dd1
|
|
| BLAKE2b-256 |
6adf61f05877bef5c02c6abd0db4dee5202cf5b15d7760dd4b185a46996085dd
|