Skip to content
Light supervisor on Go (with optional Consul autoregistration)
Go Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github
cmd/monexec
docs
monexec
plugins
pool
sample
ui @ 2d19ff6
.gitignore
.gitmodules
.goreleaser.yml
CONTRIBUTING.md
LICENSE
README.md
go.mod
go.sum
release.sh
snapcraft.yaml
swagger.yaml

README.md

Monexec

Mx

MONitoring EXEcutables

GitHub release license Snap Status paypal

It’s tool for controlling processes like a supervisord but with some important features:

  • Easy to use - no dependencies. Just a single binary file pre-compilled for most major platforms
  • Easy to hack - monexec can be used as a Golang library with clean and simple architecture
  • Integrated with Consul - optionally, monexec can register all running processes as services and deregister on fail
  • Optional notification to Telegram
  • Supports gracefull and fast shutdown by signals
  • Developed for used inside Docker containers
  • Different strategies for processes
  • Support additional environment files
  • Support template-based email notification
  • Support HTTP notification
  • REST API (see swagger.yaml)
  • Web UI (if REST API enabled)

Buy me a coffe on Patreon

screen1 screen2

Installing

Get it from the Snap Store

go get -v -u github.com/reddec/monexec/...

recommended way is snap

Documentation

Usage: https://reddec.github.io/monexec/

API: Godoc

Examples

See documentation for details https://reddec.github.io/monexec/

Run from cmd

monexec run -l srv1 --consul -- nc -l 9000

Run from config

monexec start ./myservice.yaml

Notifications

Add notification to Telegram

telegram:
  # BOT token
  token: "123456789:AAAAAAAAAAAAAAAAAAAAAA_BBBBBBBBBBBB"
  services:
      # services that will be monitored
      - "listener2"
  recipients:
      # List of telegrams chat id
      - 123456789
  template: |
    *{{.label}}*
    Service {{.label}} {{.action}}
    {{if .error}}⚠️ *Error:*  {{.error}}{{end}}
    _time: {{.time}}_
    _host: {{.hostname}}_

Email

Add email notification

email:
  services:
    - myservice
  smtp: "smtp.gmail.com:587"
  from: "example-monitor@gmail.com"
  password: "xyzzzyyyzyyzyz"
  to:
    - "admin1@example.com"
  template: |
    Subject: {{.label}}

    Service {{.label}} {{.action}}

HTTP

Add HTTP request as notification

http:
  services:
    - myservice
  url: "http://example.com/{{.label}}/{{.action}}"
  templateFile: "./body.txt"
You can’t perform that action at this time.