---

Alias: ["monit"]
Tag: ["Computer", "Server", "Monitoring"]
Date: 2021-09-14
DocType: "Personal"
Hierarchy: "NonRoot"
TimeStamp:
location: [51.514678599999996, -0.18378583926867909]
CollapseMetaTable: Yes

---

Parent:: [[Selfhosting]], [[Server Cloud]], [[Server Alias]], [[Server Tools]]

---

&emsp;

```button
name Save
type command
action Save current file
id Save
```
^button-monitSave

&emsp;

# Configuring monit

&emsp;

```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.
```

&emsp;

```toc
style: number
```

&emsp;

---

&emsp;

### Location

&emsp;

```ad-info
title: Alias server
http://emailalias.mfxm.fr:2812
```

```ad-info
title: Cloud server
http://cloud.mfxm.fr:2812
```

```ad-info
title: Tools server
http://monit-tools.mfxm.fr
```

&emsp;

---

&emsp;

### Installation

&emsp;

#### 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.

&emsp;

#### 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`

&emsp;

#### 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`

&emsp;

---

&emsp;

### Generic configuration

&emsp;

#### 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/`

&emsp;

#### 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/`

&emsp;

#### 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/`

&emsp;

#### 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`

&emsp;

---

&emsp;

### Basic commands

&emsp;

#### Print monit activity

`sudo monit summary`


&emsp;
&emsp;