Skip to content

Overview


a monitoring bot for your servers

Current features:

  • 🤖 Bot: HTTP-server for on-demand checks
  • 🐶 Watchdog: Compact daemon for monitoring and alerting
  • 🔍 Checkers: Ping, Celery/Flower, Docker containers (through SSH)
  • 📢 Handlers: Slack, Webhook, Log, Console
  • 💬 Integrations: Slack
  • 🔥 Speed: Async requests, Python 3.11, uvloop and FastAPI ensure the max gauge of your Python speedometer
  • 🌺 Settings: Declarative YAML. Fine tune to your liking or fire-and-forget.
  • 🐋 Docker: Pull the latest image from podkosa/moni
  • 📓 Docs: Moni Handbook. Interactive docs at /docs

Bot

HTTP server, handling incoming requests (REST, slash commands, integrations, webhooks etc.). On-demand checks.

Watchdog

Periodically monitors servers with Checkers and alerts through Handlers. Can be run in two ways:

  1. Integrated (default). Launch inside the bot async event loop. Keep in mind that they both will share a single thread, therefore can impact performance and even block one another. More compact option, but not fit for scaling.
  2. Standalone. Run watchdog.py as a separate process/container, even without the bot.
  3. Disabled. You can turn off the watchdog completely and run checks from the bot at your own pace.

Settings

Define your servers, handlers, integrations and other settings declaratively in settings.yml. See example.settings.yml.

Integrations

  • Slack: alerts to channels and slash commands. Install Moni in your Workspace with ./integrations_docs/slack_app_manifest.yml.

TODO

  • Telegram integration
  • Email handler
  • Slack timeout for /commands is 3 seconds. Refactor to delay the response.
  • Slack button on an alert to open up related service
  • Web interface for settings and checks
  • Endpoint to show loaded checkers and handlers
  • Endpoint to add servers to monitoring, turn on/off already configured ones
  • More alert handlers
  • More server checkers
  • Proper loop exit
  • Optional multiprocessing, when there will be more checkers
  • Tests