monito
A monitoring microservice that checks HTTP addresses, Docker containers and server resources every minute, opens and closes incidents, counts uptime with maintenance windows and sends alerts to Discord without flooding the channel. It also tracks content changes on chosen pages, manages domains and mailboxes in Mailcow, and posts every new message from the team's mailboxes to a channel as a preview with link buttons and attachments.
Overview
monito is a TypeScript microservice that watches a small infrastructure and ties the team's mail into it. Instead of setting up a full monitoring system for a few addresses, containers and one server, a single process checks everything every minute and reports on Discord.
A loop every minute
CPU, memory, disk and network traffic, with a warning when thresholds are crossed.
the response code and time for every target.
the state of every watched container.
content changes with the share of change and a summary of the differences.
Incidents and notifications
A target's state change opens or closes an incident, and uptime is counted with maintenance windows taken into account. Alerts go to Discord with repeat limits, so a long outage does not flood the channel with the same message. Every notification goes to the team's private channel, and whatever the client should see goes to a public channel as well. Targets, maintenance windows, webhooks and incident resolution are set through the API.
Mail in Mailcow
The same API manages mail in Mailcow: domains, DKIM records and mailboxes, and it also sends messages over SMTP and reads a mailbox over IMAP. A new domain and its mailboxes are created with one call from a panel or a script, without signing in to Mailcow.
New mail in a channel
Every new message from the team's mailboxes lands in a Discord channel as a preview rendered to an image. Under the preview are buttons with the most important links from the message, and attachments follow in further messages within the server's file size limit. Remote images in the content are downloaded and attached to the preview, and mailing lists the team only subscribes to for form's sake do not clutter the channel.
Questions about monito
More projects
More work from the same category - see how we tackle similar challenges.
Have a similar project?
Get in touch - a quote is free and comes back within an hour.



