Ubuntu 22.04 安装 Monit 6.0.0 指南

Ubuntu 22.04 安装 Monit 6.0.0 指南:仓库 apt 安装(5.31.0)、官方预编译二进制安装(6.0.0)与源码编译安装三条路线全流程实测,含版本选型对照、monitrc 基础配置、systemd 托管、验证回显、常见问题排障、升级与卸载清理。

MonitMonit监控2026/10/20

Ubuntu 22.04 安装 Monit 6.0.0 指南

‍‍​​‌​> 目标:在 Ubuntu 22.04 服务器上从零装好 Monit 并完成 systemd 托管与可用性验证。本篇给出三条安装路线——Ubuntu 仓库 apt 安装(5.31.0)、官方预编译二进制安装(6.0.0)、源码编译安装(6.0.0),全部命令与回显均在 Ubuntu 22.04.5 LTS(x86_64)上实测通过;配置语法与规则实战见《Monit 6.0.0 部署指南》。

一、环境信息

实测环境与关键路径如下:

项目值
操作系统Ubuntu 22.04.5 LTS(jammy)
架构x86_64
内核6.8.0-138-generic
上游最新稳定版Monit 6.0.0(2026-06-15 发布,mmonit.com 实查,查询日期 2026-10-20)
Ubuntu 22.04 仓库版本5.31.0(jammy/universe,apt-cache policy monit 实查)
方案 A 安装路径/usr/bin/monit,配置 /etc/monit/monitrc
方案 B/C 安装路径/usr/local/monit/monit(B)、/opt/monit-src/bin/monit(C),配置 /etc/monit/monitrc
守护进程monit(systemd 服务,监听 2812/TCP 控制台)
实测主机名monit-server(方案 A 环境与 app-server(方案 B 环境)

三条路线在两台全新的 Ubuntu 22.04.5 服务器上分别完成:方案 A 与方案 C 在同一台执行(方案 C 编译产物独立安装到 /opt/monit-src,不与 apt 包冲突),方案 B 在另一台执行,环境干净、无预装 Monit。

二、前置条件

安装前确认以下事项,逐条给出验证命令与预期:

  1. root 或 sudo 权限:Monit 守护进程需要 root 运行(监控进程句柄、系统资源需要特权):
whoami

实测输出(root 登录):

root
  1. 网络可达:方案 A 需要 archive.ubuntu.com,方案 B/C 需要 mmonit.com。用 curl 验证官网可达(若提示 curl 未安装,先 apt install -y curl):
curl -sI https://mmonit.com/monit/ | head -3

实测输出:

HTTP/1.1 200 OK
Date: Mon, 19 Oct 2026 23:34:53 GMT
Server: Apache
  1. 2812 端口未被占用(Monit 控制台默认端口):
ss -ltn | grep 2812 || echo "2812 端口空闲"

实测输出:

2812 端口空闲
  1. 时间同步正常(告警邮件与日志时间戳依赖):timedatectl 确认 NTP 为 active 即可。

三、版本选型说明

Monit 的版本来源有三条线,选型前先弄清差异:

来源版本获取方式特点
Ubuntu 22.04 仓库(jammy/universe)1:5.31.0-1apt install monit最省事、跟随 apt 升级;版本落后上游(5.31.0 为 2022 年版本)
官方预编译二进制6.0.0mmonit.com/dist/binary/ tar.gz最新版、OpenSSL 3.5.7 静态链接零依赖、解压即用;升级=换包
官方源码编译6.0.0mmonit.com/dist/ monit-6.0.0.tar.gz最新版、可定制 --prefix 与编译特性;需要 gcc/make 等构建链

查询仓库当前提供的版本:

apt-cache policy monit

实测输出:

monit:
  Installed: (none)
  Candidate: 1:5.31.0-1
  Version table:
     1:5.31.0-1 500
        500 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages

选型结论:仅求"装上能用、随系统升级"选方案 A(接受 5.31.0 的功能代差,如无 cron 精度 every、无 SHA256 默认校验);要使用 6.0.0 新特性(抗量子 TLS、swap 换页监控、PSS 内存计量等)选方案 B 或 C。三方案可在同一台机器共存(二进制路径不同),但守护进程只能运行一份,切换时先停旧再启新。

四、方案 A:Ubuntu 仓库 apt 安装(Monit 5.31.0)

本方案用 Ubuntu 官方仓库直接安装,两分钟内完成,适合把 Monit 当作系统基础组件随 apt 统一升级的场景。

4.1 安装软件包

apt update
apt install -y monit

实测输出:

Get:1 http://archive.ubuntu.com/ubuntu jammy/universe monit amd64 1:5.31.0-1 [399 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 399 kB in 3s (157 kB/s)
Selecting previously unselected package monit.
(Reading database ... 6535 files and directories currently installed.)
Preparing to unpack .../monit_1%3a5.31.0-1_amd64.deb ...
Unpacking monit (1:5.31.0-1) ...
Setting up monit (1:5.31.0-1) ...
invoke-rc.d: policy-rc.d denied execution of start.

⚠️ 注意:若安装末尾出现 invoke-rc.d: policy-rc.d denied execution of start,说明本机的安装后自动启动策略拦截了服务自启(常见于受限环境),手动执行 systemctl enable --now monit 补启即可,不影响安装结果。

4.2 查看包内容与服务注册方式

apt 包把文件布局在 Debian 风格的目录结构里:

dpkg -L monit | grep -E "^/etc|^/usr/bin" | head -24

实测输出(输出节选,/usr/bin 项在列表后段):

/etc
/etc/default
/etc/default/monit
/etc/init.d
/etc/init.d/monit
/etc/logrotate.d
/etc/logrotate.d/monit
/etc/monit
/etc/monit/conf-available
/etc/monit/conf-available/acpid
/etc/monit/conf-available/apache2
/etc/monit/conf-available/at
/etc/monit/conf-available/cron
/etc/monit/conf-available/mdadm
/etc/monit/conf-available/memcached
/etc/monit/conf-available/mysql
/etc/monit/conf-available/nginx
/etc/monit/conf-available/openntpd
/etc/monit/conf-available/openssh-server
/etc/monit/conf-available/pdns-recursor
/etc/monit/conf-available/postfix
/etc/monit/conf-available/rsyslog
/etc/monit/conf-available/smartmontools
/etc/monit/conf-available/snmpd
dpkg -L monit | grep "^/usr/bin"

实测输出:

/usr/bin
/usr/bin/monit

布局说明:主配置 /etc/monit/monitrc;conf-available/ 内置 16 个常见服务(nginx、mysql、memcached 等)的现成规则模板,软链到 conf-enabled/ 即启用(monitrc 默认已 include 这两个目录);/etc/init.d/monit 是 SysV 脚本,systemd 通过 sysv-generator 自动生成同名 monit.service 单元(systemctl status monit 可见 Loaded: loaded (/etc/init.d/monit; generated))。

查看版本:

monit -V

实测输出:

This is Monit version 5.31.0
Built with ssl, with ipv6, with compression, with pam and with large files
Copyright (C) 2001-2022 Tildeslash Ltd. All Rights Reserved.

4.3 启用并验证 systemd 服务

systemctl enable monit
systemctl restart monit
systemctl is-active monit

实测输出:

monit.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable monit
active

验证监听(先在配置中开启 Web 控制台,见第八节,再执行;监听地址由 monitrc 的 use address 决定——本节实测环境绑定的是 0.0.0.0 全地址,若按第八节最小配置绑定 localhost 则显示 127.0.0.1:2812):

ss -ltn | grep 2812

实测输出:

LISTEN 0      1024         0.0.0.0:2812       0.0.0.0:*

五、方案 B:官方预编译二进制安装(Monit 6.0.0)

本方案从官网下载 linux-x64 预编译包(OpenSSL 3.5.7 已静态链接,PAM 动态链接),解压安装到 /usr/local/monit,手工编写 systemd 单元,是获取最新稳定版最快的方式。

5.1 下载与校验

mkdir -p /opt/share && cd /opt/share
curl -sO https://mmonit.com/monit/dist/binary/6.0.0/monit-6.0.0-linux-x64.tar.gz
sha256sum monit-6.0.0-linux-x64.tar.gz

实测输出:

8bb719137c41a161e4a84366228ab5022b7cef8c010c3e673dee2d0111aff60b  monit-6.0.0-linux-x64.tar.gz

💡 官方下载页(mmonit.com/monit/#download)同时提供 linux-x64(标准 glibc 版)与 linux-x64 (Alpine)(musl 版)两种二进制,Ubuntu 22.04 用标准 glibc 版。

5.2 解压安装

tar xzf monit-6.0.0-linux-x64.tar.gz
mkdir -p /usr/local/monit
cp -a monit-6.0.0/bin/monit /usr/local/monit/
cp -a monit-6.0.0/conf/monitrc /usr/local/monit/
cp -a monit-6.0.0/man/man1/monit.1 /usr/local/monit/
ln -sf /usr/local/monit/monit /usr/local/bin/monit
mkdir -p /usr/local/share/man/man1
cp /usr/local/monit/monit.1 /usr/local/share/man/man1/
monit -V

实测输出:

This is Monit version 6.0.0
Built with ssl, with ipv6, with compression, with pam and with large files
Copyright (C) 2001-2026 Tildeslash. All Rights Reserved.

5.3 建立控制文件

官方二进制按固定顺序查找控制文件:~/.monitrc → /etc/monitrc → /usr/local/etc/monitrc → ./monitrc,不包含 /etc/monit/monitrc。推荐把配置放在 /etc/monit/monitrc 并建立 /etc/monitrc 软链,兼顾 Debian 目录习惯与免 -c 参数:

mkdir -p /etc/monit /var/lib/monit/events
cp /usr/local/monit/monitrc /etc/monit/monitrc
ln -s /etc/monit/monitrc /etc/monitrc
chmod 700 /etc/monit/monitrc

先看一次不建软链/不放配置路径时的真实报错(排障实录):

monit summary

实测输出:

Cannot find the Monit control file at ~/.monitrc, /etc/monitrc, /usr/local/etc/monitrc, /usr/local/etc/monitrc or at ./monitrc

建好 /etc/monitrc 软链后该报错消失,monit 不带参数即可使用。

5.4 编写 systemd 单元并托管

cat > /etc/systemd/system/monit.service <<'EOF'
[Unit]
Description=Pro-active monitoring utility for unix systems
Documentation=man:monit(1)
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/monit -I -c /etc/monit/monitrc
ExecStop=/usr/local/bin/monit -c /etc/monit/monitrc quit
ExecReload=/usr/local/bin/monit -c /etc/monit/monitrc reload
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now monit
systemctl status monit --no-pager -l | head -8

实测输出:

Created symlink /etc/systemd/system/multi-user.target.wants/monit.service → /etc/systemd/system/monit.service.
● monit.service - Pro-active monitoring utility for unix systems
     Loaded: loaded (/etc/systemd/system/monit.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2026-10-19 23:12:06 UTC; 20s ago
       Docs: man:monit(1)
   Main PID: 2825 (monit)
      Tasks: 2 (limit: 5753)
     Memory: 944.0K
        CPU: 9ms

单元说明:-I 表示前台运行(systemd 托管必须);Restart=always 让守护进程意外退出后 5 秒自动拉起;Memory: 944.0K 可见其内存占用为 KB 级。ExecStop 用 monit quit 优雅停机——由于 Restart=always 的存在,直接执行 monit quit 也会被 systemd 视为退出并重启守护进程,因此停服务的规范操作是 systemctl stop monit(实测部署篇有回显)。

5.5 验证运行

等过 with start delay 延迟后验证:

monit -t && monit summary

实测输出(本节实测环境按 5.3 节放入 sshd 规则后):

Control file syntax OK
Monit 6.0.0 uptime: 0m
 Service Name                     Status                      Type
 app-server                       OK                          System
 sshd                             OK                          Process

六、方案 C:源码编译安装(Monit 6.0.0)

本方案适合需要自定义安装前缀、在无预编译包的架构上构建、或希望审计/魔改源码的场景。实测在 Ubuntu 22.04.5(12 核)上完成全流程。

6.1 安装构建依赖

apt install -y gcc make libssl-dev libpam0g-dev zlib1g-dev bison flex

实测输出(节选,全新服务器首次安装时完整拉取依赖链):

Selecting previously unselected package libfl-dev:amd64.
Preparing to unpack .../libfl-dev_2.6.4-8build2_amd64.deb ...
Unpacking libfl-dev:amd64 (2.6.4-8build2) ...
Setting up flex (2.6.4-8build2) ...
Setting up libfl-dev:amd64 (2.6.4-8build2) ...
Setting up bison (2:3.8.2+dfsg-1ubuntu0.22.04.1) ...
update-alternatives: using /usr/bin/bison.yacc to provide /usr/bin/yacc (yacc) in auto mode

6.2 下载源码并校验

mkdir -p /opt/share && cd /opt/share
curl -sO https://mmonit.com/monit/dist/monit-6.0.0.tar.gz
sha256sum monit-6.0.0.tar.gz
tar xzf monit-6.0.0.tar.gz && cd monit-6.0.0

实测输出:

ddacd2a8120aeb2351e4486ee04a17782b5004aee99f2041d829bc4dcf2a5b3b  monit-6.0.0.tar.gz

6.3 configure 配置与编译

./configure --prefix=/opt/monit-src
make -j4

configure 关键检查项实测输出(节选):

checking for security/pam_appl.h... yes
checking for large files support... enabled
checking for zlibVersion in -lz... yes
checking for pam_start in -lpam... yes
checking for static SSL support... disabled
checking for SSL_new in -lssl... yes

make 编译实测输出末尾(输出节选,最后两行):

make[2]: Leaving directory '/opt/share/monit-6.0.0'
make[1]: Leaving directory '/opt/share/monit-6.0.0'

💡 说明:--prefix=/opt/monit-src 指定安装前缀,可按需改为 /usr/local;configure 摘要中的 Linker flags 显示链接了 -lcrypto -lssl -lpam -lz -lpthread,即 SSL/PAM/zlib 能力全部启用;bison/flex 负责生成配置语言解析器(src/y.tab.o、src/lex.yy.o)。

6.4 安装并验证

make install
/opt/monit-src/bin/monit -V

make install 实测输出(输出节选,安装动作段):

 /usr/bin/mkdir -p '/opt/monit-src/bin'
  /bin/bash ./libtool   --mode=install /usr/bin/install -c monit '/opt/monit-src/bin'
libtool: install: /usr/bin/install -c monit /opt/monit-src/bin/monit
 /usr/bin/mkdir -p '/opt/monit-src/share/man/man1'
 /usr/bin/install -c -m 644 monit.1 '/opt/monit-src/share/man/man1'

版本验证实测输出:

This is Monit version 6.0.0
Built with ssl, with ipv6, with compression, with pam and with large files
Copyright (C) 2001-2026 Tildeslash. All Rights Reserved.

安装产物布局:/opt/monit-src/bin/monit(二进制)与 /opt/monit-src/share/man/man1/monit.1(手册)。源码方式不含现成 systemd 单元与 /etc 目录布局,按方案 B 第 5.3/5.4 节同样方法建立控制文件与 systemd 单元即可(把 ExecStart 路径换成 /opt/monit-src/bin/monit)。

七、方案对比与选择建议

维度A:apt 仓库B:官方二进制C:源码编译
版本5.31.0(落后上游)6.0.0 最新稳定6.0.0 最新稳定
需联网是(archive.ubuntu.com)是(mmonit.com,一次性)是(mmonit.com + 构建链)
安装方式apt 全托管tar.gz 解压 + 手工 systemd 单元configure/make/install + 手工单元
依赖apt 自动解决无(SSL 静态链接)gcc/make/libssl-dev 等
升级apt upgrade(跟随仓库)换 tar 包重链重新下载编译
systemd 单元自动(init.d 生成)手工(本篇模板)手工(本篇模板)
适用场景求稳、随系统升级要 6.0.0 新特性、快速上线定制前缀/架构/审计源码

选择建议:能接受 5.31.0 功能集选 A;要 6.0.0 且不想装构建链选 B;内网隔离环境把 tar.gz 离线拷入服务器走 B 的离线形态;对架构/路径有定制诉求才选 C。

八、基础配置说明

无论哪种方案,Monit 的运行都由控制文件 monitrc 驱动。这里给出三方案共用的最小可运行基础配置(规则语法与自愈实战见《Monit 6.0.0 部署指南》):

cat > /etc/monit/monitrc <<'EOF'
## 轮询周期:每 30 秒一轮,开机后延迟 15 秒开始
set daemon  30
    with start delay 15

## 日志
set log /var/log/monit.log

## 实例 ID 与状态持久化
set idfile /var/lib/monit/id
set statefile /var/lib/monit/state

## 事件队列:告警发送失败时本地缓存
set eventqueue
    basedir /var/lib/monit/events
    slots 100

## Web 控制台 + CLI 通信接口(2812)
set httpd port 2812 and
    use address localhost
    allow localhost
    allow admin:q1w2e3r4

## 规则目录
include /etc/monit.d/*.conf
EOF
chmod 700 /etc/monit/monitrc
mkdir -p /etc/monit.d

逐项说明:set daemon 30 是校验周期(官方不建议低于 15 秒);set log 指定本地日志文件(不配则写 syslog);set idfile 指定实例 ID 文件,首次语法检查时自动生成并写入(实测输出 New Monit id: 加 32 位十六进制值,用于 M/Monit 识别主机);set eventqueue 把发送失败的事件落盘重投;set httpd 开启控制接口——CLI 的 monit status/monit restart 等命令全部经此端口与守护进程通信,allow admin:q1w2e3r4 是控制台与 CLI 共用的账号(演示口令,生产请改强密码);include 加载 /etc/monit.d 下的规则文件。

配置生效与验证三步(所有方案通用):

monit -t                # 语法检查
systemctl restart monit # 应用配置
monit summary           # 查看监控对象列表

实测输出(方案 B 环境已加入规则后):

Control file syntax OK
Monit 6.0.0 uptime: 1m
 Service Name                     Status                      Type
 app-server                       OK                          System
 sshd                             OK                          Process
 passwd_file                      OK                          File
 rootfs                           OK                          Filesystem
 demo_probe                       OK                          Program

九、升级与多版本管理

  • 方案 A:apt update && apt upgrade monit 随仓库升级;回滚用 apt install monit=<旧版本号>(apt-cache madison monit 查可用版本);
  • 方案 B:下载新版 tar 包,systemctl stop monit → 覆盖 /usr/local/monit/monit → systemctl start monit,配置文件不受影响;保留旧目录即可多版本并存(切换软链 /usr/local/bin/monit);
  • 方案 C:解压新源码目录重新 configure/make/install(--prefix 相同则覆盖升级,建议新前缀并行安装后切软链);
  • 兼容性提示:6.0.0 对 every N cycles 旧语法给出废弃告警(不影响运行),升级后用 monit -t 过一遍配置确认无报错;5.x 升 6.0.0 配置语法总体向后兼容。

十、常见问题(FAQ)

Q1:报错 The control file '/etc/monit/monitrc' permission 0644 is wrong, maximum 0700 allowed

Monit 要求控制文件权限不宽于 0700(文件内含 Web 控制台口令)。修复:

chmod 700 /etc/monit/monitrc

实测修复后 monit -t 输出 Control file syntax OK。

Q2:报错 Include failed -- No such file or directory '/etc/monit/conf.d/*.conf'

include 的通配没有任何匹配文件时启动失败。两个办法:往目录里至少放一个 .conf 规则文件,或注释掉该 include 行。实测确认:目录存在但为空同样报错,必须至少有一个匹配文件。

Q3:monit status 报 Cannot connect to [10.89.58.3]:2812 -- Connection refused(方括号内为 use address 绑定的控制台地址)

CLI 是通过 2812 端口与守护进程通信的,此报错说明守护进程未监听。排查顺序:systemctl is-active monit 确认服务 active;确认 monitrc 中已配置 set httpd;注意 with start delay 与首次启动延迟——实测服务刚启动的 15 秒内执行 CLI 命令会 Connection refused,稍候重试即可;use address 绑定的地址要与 CLI 访问地址一致(CLI 默认连控制文件里 httpd 的地址)。

Q4:二进制版报 Cannot find the Monit control file at ...(完整报错见 5.3 节排障实录)

官方二进制不认 /etc/monit/monitrc,按 5.3 节建立软链 ln -s /etc/monit/monitrc /etc/monitrc,或每次用 monit -c /etc/monit/monitrc。

Q5:日志出现 every N cycles 废弃告警

6.0.0 起旧写法 every 2 cycles 改为 cron 风格:每分钟一次用 every "* * * * *"、每 2 分钟一次用 every "*/2 * * * *"。实测加载时告警原文:

warning  : /etc/monit.d/demo_probe.conf:2: The 'every N cycles' syntax is deprecated, use cron-style 'every "*/N * * * *"' for periodic N minutes or 'every "* * * * *"' for once per minute instead

Q6:Web 控制台 401 打不开

set httpd 必须配 allow 行,格式为 allow 用户:密码 或 allow 网段;实测未带认证访问返回 401(部署篇有 curl 回显)。另注意 use address 只监听指定地址,远程访问需绑定本机局域网地址并放行来源网段。

十一、卸载与清理

方案 A 卸载:

systemctl stop monit
apt purge -y monit

方案 B 卸载:

systemctl stop monit
systemctl disable monit
rm /etc/systemd/system/monit.service
systemctl daemon-reload
rm -rf /usr/local/monit /usr/local/bin/monit /usr/local/share/man/man1/monit.1
rm /etc/monitrc
rm -rf /etc/monit /etc/monit.d /var/lib/monit /var/log/monit.log

方案 C 卸载:在源码目录执行 make uninstall(或直接删除 --prefix 目录 rm -rf /opt/monit-src),再按方案 B 清单删除控制文件与 systemd 单元。

十二、参考链接

  1. Monit 官网下载页(源码与预编译二进制):https://mmonit.com/monit/
  2. Monit 6.0.0 Release Notes:https://mmonit.com/monit/changes/
  3. 官方文档站:https://mmonit.com/monit/documentation/
  4. 本专栏实战篇:《Monit 6.0.0 部署指南》《Monit 6.0.0 常用 CLI 命令与工具详解》