--- Alias: ["monit"] Tag: ["Computer", "Server", "Monitoring"] Date: 2021-09-14 DocType: "Personal" Hierarchy: "NonRoot" TimeStamp: location: [51.514678599999996, -0.18378583926867909] CollapseMetaTable: Yes --- Parent:: [[Selfhosting]], [[Cloud Server]], [[Alias Server]], [[Tools Server]] ---   ```button name Save type command action Save current file id Save ``` ^button-monitSave   # Configuring monit   ```ad-abstract title: Summary collapse: open This note runs through [monit](https://mmonit.com), a free open-source tool to monitor running programs and deamons on a VPs. ```   ```toc style: number ```   ---   ### Installation   #### Program installation The program is within the **apt** library: `sudo apt-get install monit` Once installed, it needs to be enabled: `sudo systemctl enable --now monit` Check that the service is running appropriately: `sudo systemctl status monit` Once set up, the next step is to enable the web interface.   #### Configuration of webportal The following configuration file need to be amended: `/etc/monit/monitrc` By unchecking the following: >set httpd port 2812 > allow admin:monit After making the change, monit needs to be restarted: `sudo systemctl restart monit` And the corresponding port opened: ` sudo ufw allow 2812`   #### Configuration of email alerts The following configuration file need to be amended: `/etc/monit/monitrc` By unchecking the following: >set mailserver localhost >set mail-format { from: monit@(localhost) } >set alert (dest email address) After making the change, monit needs to be restarted: `sudo systemctl restart monit`   ---   ### Generic configuration   #### Pre-loaded configurations Monit has a number of pre-loaded configurations that can be accessed here: `ls -alh /etc/monit/conf-available` To enable some of the pre-loaded confs, command below: `sudo ln -s /etc/monit/conf-available/(process) /etc/monit/conf-enabled/`   #### Creating custom configuration Create a conf document in the following folder: `sudo touch /etc/monit/conf-available/(processname)` Edit the document with at least the below declarations: >check process (processname) >matching "(processname)" >start program = "(path to command)" >stop program = "(path to command)" Once done, enable the config: `sudo ln -s /etc/monit/conf-available/(process) /etc/monit/conf-enabled/`   #### Docker container configuration Docker containers can be set up as programs with the use of a script. 1. Create a script for the docker container ``` sudo mkdir /etc/monit/scripts/ sudo touch/vi /etc/monit/scripts/check_container_(container name).sh sudo chmod 711 /etc/monit/scripts/check_container_(container name).sh ``` 2. Edit the script >#! /bin/bash >docker top "(container name)" >exit $? 3. Create the configuration file `sudo touch/vi /etc/monit/conf-available/(container name)` 4. Edit the config file >CHECK PROGRAM (container name) WITH PATH /etc/monit/scripts/check_container_(container name).sh START PROGRAM = "/usr/bin/docker start (container name)" STOP PROGRAM = "/usr/bin/docker stop (container name)" IF status != 0 FOR 3 CYCLES THEN RESTART IF 2 RESTARTS WITHIN 5 CYCLES THEN UNMONITOR 5. Enable the config `sudo ln -s /etc/monit/conf-available/(container name) /etc/monit/conf-enabled/`   #### Validate configuration Once configuration is updated, monit provides a tool to check the script: `sudo monit -t` The program needs to be restarted: `sudo monit reload`   ---   ### Basic commands   #### Print monit activity `sudo monit summary`