Ubuntu 22.04 安装 Monit 6.0.0 指南
Ubuntu 22.04 安装 Monit 6.0.0 指南:仓库 apt 安装(5.31.0)、官方预编译二进制安装(6.0.0)与源码编译安装三条路线全流程实测,含版本选型对照、monitrc 基础配置、systemd 托管、验证回显、常见问题排障、升级与卸载清理。
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。
二、前置条件
安装前确认以下事项,逐条给出验证命令与预期:
- root 或 sudo 权限:Monit 守护进程需要 root 运行(监控进程句柄、系统资源需要特权):
whoami
实测输出(root 登录):
root
- 网络可达:方案 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
- 2812 端口未被占用(Monit 控制台默认端口):
ss -ltn | grep 2812 || echo "2812 端口空闲"
实测输出:
2812 端口空闲
- 时间同步正常(告警邮件与日志时间戳依赖):
timedatectl确认 NTP 为 active 即可。
三、版本选型说明
Monit 的版本来源有三条线,选型前先弄清差异:
| 来源 | 版本 | 获取方式 | 特点 |
|---|---|---|---|
| Ubuntu 22.04 仓库(jammy/universe) | 1:5.31.0-1 | apt install monit | 最省事、跟随 apt 升级;版本落后上游(5.31.0 为 2022 年版本) |
| 官方预编译二进制 | 6.0.0 | mmonit.com/dist/binary/ tar.gz | 最新版、OpenSSL 3.5.7 静态链接零依赖、解压即用;升级=换包 |
| 官方源码编译 | 6.0.0 | mmonit.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 单元。
十二、参考链接
- Monit 官网下载页(源码与预编译二进制):https://mmonit.com/monit/
- Monit 6.0.0 Release Notes:https://mmonit.com/monit/changes/
- 官方文档站:https://mmonit.com/monit/documentation/
- 本专栏实战篇:《Monit 6.0.0 部署指南》《Monit 6.0.0 常用 CLI 命令与工具详解》