|
|
|
---
|
|
|
|
|
|
|
|
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]]
|
|
|
|
|
|
|
|
 
|
|
|
|
 
|