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:
- 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.
- Standalone.
Run
watchdog.py
as a separate process/container, even without the bot. - 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