--- Alias: ["monit"] Tag: ["💻", "🖥️", "🔎"] Date: 2021-09-14 DocType: "Personal" Hierarchy: "NonRoot" TimeStamp: location: [51.514678599999996, -0.18378583926867909] CollapseMetaTable: true --- Parent:: [[Selfhosting]], [[Server Cloud]], [[Server Alias]], [[Server Tools]], [[Server VPN]] --- ^Top   ```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 ```   ---   ### Location [[#^Top|TOP]]   ```ad-address title: Alias server http://emailalias.mfxm.fr:2812 ``` ```ad-address title: Cloud server http://cloud.mfxm.fr:2812 ``` ```ad-address title: Tools server http://monit-tools.mfxm.fr ``` ```ad-address title: Cloud server http://vpn.mfxm.fr:2812 ```   ---   ### Installation [[#^Top|TOP]]   #### Program installation The program is within the **apt** library: ```ad-command ~~~bash sudo apt-get install monit ~~~ ``` Once installed, it needs to be enabled: ```ad-command ~~~bash sudo systemctl enable --now monit ~~~ ``` Check that the service is running appropriately: ```ad-command ~~~bash sudo systemctl status monit ~~~ ``` Once set up, the next step is to enable the web interface.   #### Configuration of webportal [[#^Top|TOP]] The following configuration file need to be amended: ```ad-path /etc/monit/monitrc ``` By unchecking the following: ```ad-code ~~~bash set httpd port 2812 allow admin:monit ~~~ ``` After making the change, monit needs to be restarted: ```ad-command ~~~bash sudo systemctl restart monit ~~~ ``` And the corresponding port opened: ```ad-command ~~~bash sudo ufw allow 2812 ~~~ ```   #### Configuration of email alerts [[#^Top|TOP]] The following configuration file need to be amended: ```ad-path /etc/monit/monitrc ``` By unchecking the following: ```ad-code ~~~bash set mailserver localhost set mail-format { from: monit@(localhost) set alert (dest email address) ~~~ ``` After making the change, monit needs to be restarted: ```ad-command ~~~bash sudo systemctl restart monit ~~~ ```   ---   ### Generic configuration [[#^Top|TOP]]   #### Pre-loaded configurations Monit has a number of pre-loaded configurations that can be accessed here: ```ad-command ~~~bash ls -alh /etc/monit/conf-available ~~~ ``` To enable some of the pre-loaded confs, command below: ```ad-command ~~~bash sudo ln -s /etc/monit/conf-available/(process) /etc/monit/conf-enabled/ ~~~ ```   #### Creating custom configuration [[#^Top|TOP]] Create a conf document in the following folder: ```ad-command ~~~bash sudo touch /etc/monit/conf-available/(processname) ~~~ ``` Edit the document with at least the below declarations: ```ad-code ~~~bash check process (processname) matching "(processname)" start program = "(path to command)" stop program = "(path to command)" ~~~ ``` Once done, enable the config: ```ad-command ~~~bash sudo ln -s /etc/monit/conf-available/(process) /etc/monit/conf-enabled/ ~~~ ```   #### Docker container configuration [[#^Top|TOP]] Docker containers can be set up as programs with the use of a script. 1. Create a script for the docker container ```ad-command ~~~bash sudo mkdir /etc/monit/scripts/ sudo touch /etc/monit/scripts/check_container_(container name).sh sudo chmod 711 /etc/monit/scripts/check_container_(container name).sh ~~~ ``` 2. Edit the script ```ad-code ~~~bash #! /bin/bash docker top "(container name)" exit $? ~~~ ``` 3. Create the configuration file ```ad-command ~~~bash sudo touch/vi /etc/monit/conf-available/(container name) ~~~ ``` 4. Edit the config file ```ad-code ~~~bash 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 ```ad-command ~~~bash sudo ln -s /etc/monit/conf-available/(container name) /etc/monit/conf-enabled/ ~~~ ```   #### Validate configuration [[#^Top|TOP]] Once configuration is updated, monit provides a tool to check the script: ```ad-command ~~~bash sudo monit -t ~~~ ``` The program needs to be restarted: ```ad-command ~~~bash sudo monit reload ~~~ ```   ---   ### Basic commands   #### Print monit activity ```ad-command ~~~bash sudo monit summary ~~~ ``` [[#^Top|TOP]]