Skip to main content

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:

Telegram notification when demo-app-service goes degraded

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

  1. Open Telegram and talk to @BotFather.
  2. Send /newbot and follow the prompts (display name + username ending in bot).
  3. BotFather replies with a token like 123456:ABC-DEF....
  4. Put it in stack/telegram_notifier_bot_token.yaml (from the .example file):
app:
  telegram:
    bot_token: "YOUR_BOT_TOKEN"

Keep that file local (it is gitignored).

Chat id (where alerts are sent)

  1. Start a chat with your new bot (press Start), or add it to a group.

  2. Send any message in that chat.

  3. Open in a browser (replace with your token):

    https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates

  4. In the JSON, find "chat":{"id": ...} — that number is your chat_id (for groups it is often negative).

  5. 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

kontiki_monitor-0.3.0.tar.gz (18.8 kB view details)

Uploaded Source

Built Distribution

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

kontiki_monitor-0.3.0-py3-none-any.whl (24.0 kB view details)

Uploaded Python 3

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

Hashes for kontiki_monitor-0.3.0.tar.gz
Algorithm Hash digest
SHA256 cd7c29aef7ec977617e9f37deeaf1245c76c16c698c01e6f49e51d9f3d12d3b7
MD5 dc2740459f6b73f419fb61c88481ca9a
BLAKE2b-256 5cf34f8f45701219dc90a1d8fe0fedbc0a2b59e32b1bd8edf583e3ea9cf0c84b

See more details on using hashes here.

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

Hashes for kontiki_monitor-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 70ea9495e90b61f9bbd73932b72dd74e1c00ab67e92d5ca04f2b5998ef97e676
MD5 aafbe95f817027b26030ac38a5f25dd1
BLAKE2b-256 6adf61f05877bef5c02c6abd0db4dee5202cf5b15d7760dd4b185a46996085dd

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page