Ubuntu 22.04 安装 Naemon 1.5 指南
在 Ubuntu 22.04 服务器从零安装 Naemon 1.5(naemon-core 1.5.2)的完整实录:OBS 官方仓库在线安装与离线 deb 包安装双方案、systemd 托管与预检校验、Livestatus 实时查询验证、本地插件检查落地,并沉淀 Thruk Web 界面 403 兼容性问题的完整排障实录。
Ubuntu 22.04 安装 Naemon 1.5 指南
目标:在一台 Ubuntu 22.04 服务器上从零安装 Naemon 1.5 监控核心(naemon-core 1.5.2):覆盖官方 openSUSE Build Service 在线仓库安装与离线 deb 包安装两种方案、systemd 服务托管、预检校验、Livestatus 实时查询验证与本地插件检查落地,并沉淀 Thruk Web 界面 403 兼容性问题的完整排障实录。全部命令与回显均在 Ubuntu 22.04 服务器上逐条执行采集。
一、环境信息
- 操作系统:Ubuntu 22.04.5 LTS(
PRETTY_NAME="Ubuntu 22.04.5 LTS") - 架构:amd64(x86_64)
- 目标软件:Naemon Core 1.5.2(
naemon-core 1.5.2-1,OBShome:naemon仓库) - 配套软件:monitoring-plugins 2.3.1(Ubuntu 仓库)、naemon-livestatus 1.5.1、Thruk 3.30(naemon 元包捆绑)
- 主配置目录:
/etc/naemon/;日志:/var/log/naemon/;状态数据:/var/lib/naemon/ - 包管理:apt(deb)
- 服务管理:systemd(
naemon.service) - 查询日期:2026-11-01(版本线以官网 Download 页与 OBS 仓库实查为准)
二、前置条件
- 一台 Ubuntu 22.04 服务器(物理机或虚拟机),具备 root 或 sudo 权限;
- 服务器时间正常(检查调度与告警时间戳依赖系统时钟);
- 方案 A(在线仓库)需要访问
download.opensuse.org与build.opensuse.org的网络;方案 B(离线包)仅需一台能联网的下载机; - 基础工具:
curl、gnupg(导入仓库签名密钥用)、lsb-release(读取发行版版本号)。Ubuntu 22.04 最小安装可能不带,先补齐:
apt-get update
apt-get install -y curl gnupg lsb-release wget
- 确认 systemd 可用(Ubuntu 22.04 默认即 systemd,
naemon以系统服务方式运行):
systemctl is-system-running
实测回显:
running
三、版本选型说明
版本信息实查于 2026-11-01(官网 https://www.naemon.io/download 与 OBS 仓库目录):
| 包名 | 最新版本 | 说明 |
|---|---|---|
| naemon-core | 1.5.2-1 | 监控核心(naemon 二进制本体) |
| libnaemon | 1.5.2-1 | 核心运行库 |
| naemon(元包) | 1.5.1-1 | 元包,拉取 core + livestatus + thruk 全套件 |
| naemon-livestatus | 1.5.1-1 | Livestatus 实时查询模块 |
| naemon-thruk / thruk | 1.5.1-1 / 3.30-1 | Web 界面(含 Apache 集成) |
| naemon-dev | 1.5.2-1 | 开发头文件(编写 NEB 模块/插件用) |
版本选择建议:
- 稳定线选 1.5.x:2026 年内连续发布 1.5.0(2026-02-03)、1.5.1(2026-03-19)、1.5.2(2026-05-18),1.5.2 修复了新版 GCC 编译问题,是当前唯一稳定线;
- 安装粒度:想要"核心 + Web 界面"一步到位,直接装元包
naemon(会连带 Thruk 与 Apache);只要核心引擎(前端自选或纯 API 消费),装naemon-core即可; - 插件包
monitoring-plugins用 Ubuntu 官方仓库的 2.3.1 版本即可,与 Naemon 插件协议完全兼容。
四、在线仓库安装方案(A:openSUSE Build Service 官方仓库)
Naemon 官方推荐的二进制分发渠道是 openSUSE Build Service 的 home:naemon 项目,提供 deb/rpm 全系列发行版包。本章走完整流程:导入签名密钥 → 添加 apt 源 → 安装 → systemd 托管 → 验证。
4.1 导入仓库 GPG 签名密钥
curl -s -o /etc/apt/trusted.gpg.d/naemon.asc "https://build.opensuse.org/projects/home:naemon/signing_keys/download?kind=gpg"
验证密钥文件为 ASCII armored 格式的 PGP 公钥块:
head -c 60 /etc/apt/trusted.gpg.d/naemon.asc; echo
实测回显:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.5 (GNU/Linux)
4.2 添加 apt 源
官方模板中 xUbuntu_$(lsb_release -rs) 会按系统版本自动拼接(22.04 服务器上解析为 xUbuntu_22.04)。写入独立的源文件便于后续卸载清理:
echo "deb [signed-by=/etc/apt/trusted.gpg.d/naemon.asc] http://download.opensuse.org/repositories/home:/naemon/xUbuntu_22.04/ ./" > /etc/apt/sources.list.d/naemon-stable.list
cat /etc/apt/sources.list.d/naemon-stable.list
实测回显:
deb [signed-by=/etc/apt/trusted.gpg.d/naemon.asc] http://download.opensuse.org/repositories/home:/naemon/xUbuntu_22.04/ ./
刷新索引,确认 OBS 源被正确读取(输出节选,实测首尾):
apt-get update
实测回显(节选):
Get:1 http://download.opensuse.org/repositories/home:/naemon/xUbuntu_22.04 ./ InRelease [1563 B]
Get:5 http://download.opensuse.org/repositories/home:/naemon/xUbuntu_22.04 ./ Packages [5968 B]
Reading package lists...
4.3 安装 naemon 元包与插件集
apt-get install -y naemon monitoring-plugins
安装过程会自动拉起整套依赖(输出节选,实测首尾):
Setting up naemon-livestatus (1.5.1-1) ...
Setting up thruk-plugin-reporting (3.30-1) ...
Setting up naemon-thruk (1.5.1-1) ...
Enabling conf naemon.
...
Thruk have been configured for http://naemon-server/thruk/.
The default user is 'thrukadmin' with password 'thrukadmin'. You can usually change that by 'htpasswd /etc/thruk/htpasswd thrukadmin'
Setting up thruk (3.30-1) ...
Setting up naemon (1.5.1-1) ...
⚠️ 注意:元包
naemon会连带安装 Thruk(Web 界面)、Apache2 与 Livestatus 模块,这是 OBS 打包的"整套件"设计。安装完成后 Thruk 默认账号为thrukadmin,初始密码thrukadmin,必须立即改掉(见 4.7 节)。
核对关键包版本:
dpkg -l | grep -E "naemon|monitoring-plugins" | awk '{print $2, $3}'
实测回显:
libnaemon:amd64 1.5.2-1
monitoring-plugins 2.3.1-1ubuntu4
monitoring-plugins-basic 2.3.1-1ubuntu4
monitoring-plugins-common 2.3.1-1ubuntu4
monitoring-plugins-standard 2.3.1-1ubuntu4
naemon 1.5.1-1
naemon-core 1.5.2-1
naemon-livestatus 1.5.1-1
naemon-thruk 1.5.1-1
naemon-vimvault 1.5.1-1
💡 说明:元包
naemon版本号(1.5.1-1)落后于核心naemon-core(1.5.2-1)是 OBS 打包的常规现象,元包只是依赖清单,实际核心以naemon-core为准,运行版本见 4.5 节naemon --version验证。
4.4 认识安装产物
ls /etc/naemon/
ls /etc/naemon/conf.d/
dpkg -L naemon-core | grep bin/
实测回显:
/etc/naemon/:
conf.d
module-conf.d
naemon.cfg
resource.cfg
/etc/naemon/conf.d/:
commands.cfg
contacts.cfg
localhost.cfg
printer.cfg
switch.cfg
templates
thruk_templates.cfg
timeperiods.cfg
windows.cfg
/usr/bin/naemon
/usr/bin/naemon-ctl
/usr/bin/naemonstats
三个关键可执行文件:naemon(核心守护进程)、naemon-ctl(SysV 风格服务控制封装)、naemonstats(运行时统计工具)。
4.5 确认核心版本
naemon --version
实测回显:
Naemon Core 1.5.2
4.6 systemd 托管与启动
包自带的 systemd 单元位于 /lib/systemd/system/naemon.service。首次安装后服务默认未自启,先设置开机自启:
systemctl enable naemon
实测回显:
Created symlink /etc/systemd/system/multi-user.target.wants/naemon.service → /lib/systemd/system/naemon.service.
启动服务并确认状态:
systemctl start naemon
systemctl is-active naemon
实测回显:
active
确认进程形态(核心进程 + worker 进程池,Naemon 性能特性的直观体现):
ps -ef | grep [n]aemon
实测回显:
naemon 10053 1 0 04:23 ? 00:00:00 /usr/bin/naemon --daemon /etc/naemon/naemon.cfg
naemon 10054 10053 0 04:23 ? 00:00:00 /usr/bin/naemon --daemon /etc/naemon/naemon.cfg
naemon 10055 10053 0 04:23 ? 00:00:00 /usr/bin/naemon --worker /var/lib/naemon/naemon.qh
💡 说明:主进程
--daemon后 fork 出一个同参数子进程作为调度核心,--worker进程从查询句柄naemon.qh领取插件执行任务——检查并发由 worker 池消化,不再互相阻塞。
4.7 预检校验与 Thruk 口令整改
配置预检必须以 naemon 用户执行——核心拒绝以 root 身份做校验或运行(见八、FAQ 第一条):
su -s /bin/bash naemon -c "naemon -v /etc/naemon/naemon.cfg"
实测回显(输出节选):
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
修改 Thruk 默认管理口令(演示环境统一使用 thrukadmin / q1w2e3r4):
htpasswd -b -B /etc/thruk/htpasswd thrukadmin q1w2e3r4
实测回显:
Updating password for user thrukadmin
4.8 监控验证:本地主机检查落地
默认对象配置已含 localhost 的主机与 8 项服务(PING、HTTP、SSH、磁盘、负载、用户数、进程数、Swap)。等待首轮检查执行后,用 Livestatus 查询实时状态(Livestatus 是核心内建的类 SQL 查询接口,unix socket 位于 /var/cache/naemon/live):
python3 -c "
import socket
s=socket.socket(socket.AF_UNIX); s.connect('/var/cache/naemon/live')
s.sendall(b'GET services\nColumns: host_name description state output\n')
s.shutdown(socket.SHUT_WR); print(s.recv(65536).decode())
"
实测回显:
localhost;Current Load;0;
localhost;Current Users;0;
localhost;HTTP;0;
localhost;PING;0;
localhost;Root Partition;0;
localhost;SSH;2;
localhost;Swap Usage;0;
localhost;Total Processes;0;
状态列 0=OK、2=CRITICAL:除 SSH 外全部 OK,SSH 为 CRITICAL 是因为本机未运行 sshd,属于真实故障的正确检出(要在无 ssh 的机器上消除该告警,删除或停用 localhost.cfg 中的 SSH 服务定义并重载即可)。再确认核心日志里的检查记录:
grep "SERVICE ALERT" /var/log/naemon/naemon.log | tail -3
实测回显:
[1793507157] SERVICE ALERT: localhost;PING;OK;HARD;1;PING OK - Packet loss = 0%, RTA = 0.03 ms
[1793507169] SERVICE ALERT: localhost;HTTP;OK;HARD;1;HTTP OK: HTTP/1.1 200 OK - 10945 bytes in 0.002 second response time
[1793507171] SERVICE ALERT: localhost;Total Processes;OK;HARD;1;PROCS OK: 26 processes | procs=26;250;400;0;
至此安装主线完成:核心已运行、检查已调度、查询接口可用、日志可审计。
五、离线 deb 包安装方案(B:断网/内网服务器)
无外网访问的服务器无法添加 OBS 源,可在任意能联网的下载机上取回 deb 包,再拷贝到内网服务器本地安装。核心最小集为 libnaemon + naemon-core 两个包(naemon-core 的其余依赖 adduser、libc6、libglib2.0-0、bsd-mailx、sendemail 均来自 Ubuntu 基础仓库;完全断网的服务器还需用 apt-get download 一并预取,见 5.3)。
5.1 下载机:取回 deb 包
在能访问 download.opensuse.org 的机器上执行(或用内网镜像代理):
mkdir -p /opt/naemon-debs && cd /opt/naemon-debs
for p in libnaemon_1.5.2-1_amd64.deb naemon-core_1.5.2-1_amd64.deb; do
wget -q "http://download.opensuse.org/repositories/home:/naemon/xUbuntu_22.04/amd64/$p" && echo "downloaded $p"
done
ls -la *.deb
实测回显:
downloaded libnaemon_1.5.2-1_amd64.deb
downloaded naemon-core_1.5.2-1_amd64.deb
-rw-r--r-- 1 root root 236546 May 18 14:48 libnaemon_1.5.2-1_amd64.deb
-rw-r--r-- 1 root root 47008 Nov 1 04:29 naemon-core_1.5.2-1_amd64.deb
5.2 内网服务器:本地安装
把 /opt/naemon-debs/ 整目录拷贝到目标服务器后,用 apt-get install ./ 方式安装本地 deb(apt 会自动解决来自基础仓库的依赖;同时安装两个包保证依赖顺序):
cd /opt/naemon-debs
apt-get install -y ./libnaemon_1.5.2-1_amd64.deb ./naemon-core_1.5.2-1_amd64.deb
实测回显(输出节选,实测首尾):
Reading package lists...
Server role: ROLE_STANDALONE
Done
Processing triggers for libc-bin (2.35-0ubuntu3.15) ...
验证版本与包清单:
naemon --version
dpkg -l 2>/dev/null | grep -E "^ii.*naemon" | awk '{print $2, $3}'
实测回显:
Naemon Core 1.5.2
libnaemon:amd64 1.5.2-1
naemon-core 1.5.2-1
5.3 systemd 托管与验证(方案 B 同样适用)
本地包同样带 systemd 单元,启动并做配置预检:
systemctl start naemon
systemctl is-active naemon
su -s /bin/bash naemon -c "naemon -v /etc/naemon/naemon.cfg"
实测回显:
active
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
⚠️ 完全断网的注意点:本方案实测环境中,
naemon-core的基础仓库依赖(mailx、sendemail、libglib2.0-0 等)由 apt 在线补齐。若目标服务器彻底无外网,需在下载机上先执行apt-get download mailx sendemail libglib2.0-0 bsd-mailx adduser(缺什么补什么,apt 安装时会逐个报出缺失项),将下载结果一并拷入服务器,再用同一命令安装全部 deb。
六、方案对比与选择建议
| 维度 | 方案 A:OBS 在线仓库 | 方案 B:离线 deb 包 |
|---|---|---|
| 是否需联网 | 安装机需访问 OBS 与 build.opensuse.org | 仅下载机需要,目标服务器可断网 |
| 安装方式 | apt 源 + apt-get install naemon | apt-get install ./*.deb 本地安装 |
| 可装范围 | 全套件(core/livestatus/thruk/dev)或单项 | 按需取包(core 最小集 2 个 deb) |
| 后续升级 | apt-get update && apt-get upgrade 自动跟进 | 每次升级需重新下载拷贝 |
| systemd 服务 | naemon.service(自带) | naemon.service(同样自带) |
| 适用场景 | 常规可联网服务器 | 内网隔离、安全管控环境 |
选择建议:能联网首选方案 A(升级链路最省事);安全管控/隔离网段用方案 B,并把 deb 包纳入内部制品库管理。两方案的运行态完全一致——同一套 systemd 单元、同一份 /etc/naemon 配置。
七、配置说明
安装后的配置体系(完整参数逐项详解见本专栏《Naemon 1.5 配置参数详解》篇,此处仅列安装后必须知道的最小集):
| 文件 | 作用 |
|---|---|
/etc/naemon/naemon.cfg | 主配置:日志、状态文件、检查调度、超时、抖动检测等 90 项全局参数 |
/etc/naemon/resource.cfg | 资源宏定义:$USER1$ 指向插件目录(包内已做软链接指向 nagios 插件目录) |
/etc/naemon/conf.d/ | 对象定义目录(主配置以 cfg_dir 引入):commands/contacts/timeperiods/localhost 及 templates 模板 |
/etc/naemon/module-conf.d/ | 模块配置目录(include_dir 引入):livestatus.cfg 等 NEB 模块加载项 |
安装后的三个常见改动点:
- 联系人邮箱:
/etc/naemon/conf.d/contacts.cfg中naemonadmin的email默认是naemon@localhost,改为真实邮箱才有告警邮件; - 主配置管理员邮箱:
naemon.cfg的admin_email/admin_pager同步修改; - 样例对象:
conf.d/里的windows.cfg、printer.cfg、switch.cfg是官方样例(监控样例 IP 192.168.1.x),不需要时改名停用(避免无意义告警刷日志):
cd /etc/naemon/conf.d
mv windows.cfg windows.cfg.sample
mv printer.cfg printer.cfg.sample
mv switch.cfg switch.cfg.sample
su -s /bin/bash naemon -c "naemon -v /etc/naemon/naemon.cfg"
systemctl restart naemon
实测回显:
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
active
改完配置的固定动作:先 naemon -v 预检(以 naemon 用户),通过后再 systemctl restart naemon 或 systemctl reload naemon(reload 走 SIGHUP 平滑重载)。
八、常见问题(FAQ)
Q1:naemon -v /etc/naemon/naemon.cfg 报 ERROR: do not start naemon as root user. 怎么办?
这是 1.5.x 的安全设计:核心拒绝以 root 身份做任何事(运行、预检都算)。systemd 单元已按 naemon 用户运行服务,人工预检用同一用户:su -s /bin/bash naemon -c "naemon -v /etc/naemon/naemon.cfg"。确有脚本化需要可加 --allow-root 参数,但官方明示不推荐。
Q2:Thruk 页面打开 403 Forbidden(Ubuntu 22.04)? 实测排障过程如下(Ubuntu 22.04.5 + Thruk 3.30 + Apache 2.4.52 组合):
- 现象:
curl -I http://127.0.0.1/thruk/返回403 Forbidden,Apache 错误日志出现重写类错误:
tail -2 /var/log/apache2/error.log
实测回显:
[rewrite:error] [pid 10134:tid 138450400605760] [client 127.0.0.1:58714] AH: Unsafe URL with %3f URL rewritten without UnsafeAllow3F
- 定位:这是 Apache 对重写目标中携带
%3F(问号编码)的安全加固校验(CVE-2024-38474 系列修复引入),Thruk 3.30 的 cookie 认证重写规则(/usr/share/thruk/thruk_cookie_auth.include中带%{QUERY_STRING}的规则)触发了该拦截;按官方口径应加RewriteOptions UnsafeAllow3F放行; - 尝试修复并验证:在该配置中加入
RewriteOptions UnsafeAllow3F后执行apache2ctl configtest,实测报AH00526: Syntax error ... RewriteOptions: unknown option 'UnsafeAllow3F'——Ubuntu 22.04 当前仓库内的 Apache 2.4.52 后移植版拦截了该类重写、但RewriteOptions尚不识别UnsafeAllow3F选项(该选项自上游 2.4.60 起提供); - 结论与建议:Ubuntu 22.04 + Thruk(Apache 模式)当前存在发行版组合层面的兼容缺口,等待 Apache 版本更新到带
UnsafeAllow3F的 2.4.60+ 后按官方说明放行;对 Web 界面有硬需求的读者,可改用 Debian 12+/Ubuntu 24.04+ 等带新版 Apache 的发行版部署同一套包,或以 Livestatus/外部命令接口消费监控数据(核心功能不受影响)。
Q3:装完就看到 localhost;SSH;2; 的 CRITICAL 告警,是坏了吗?
不是。默认 localhost.cfg 会检查本机 22 端口,本机没跑 sshd 就会检出 CRITICAL——这恰好证明检查链路工作正常。处理方式:启动 sshd,或删除 localhost.cfg 中 SSH 服务定义并重载。
Q4:naemon 元包 1.5.1 和 naemon-core 1.5.2,到底装了哪个版本?
以 naemon --version 输出为准(实测 Naemon Core 1.5.2)。元包只是依赖清单,版本滞后是 OBS 打包节奏的正常现象。
Q5:怎么确认服务在正常运行而不是"启动了但没干活"?
三连验证:systemctl is-active naemon(应为 active)、naemonstats(应看到 Services Checked 持续增长与真实的执行时间分布)、grep "SERVICE ALERT" /var/log/naemon/naemon.log | tail(应有周期性检查记录)。
九、卸载与清理
方案 A(在线仓库)的完整卸载:先停服务,再连同配置一起清除,最后移除仓库源与密钥:
systemctl stop naemon apache2
apt-get purge -y naemon thruk
apt-get autoremove -y
rm -f /etc/apt/sources.list.d/naemon-stable.list
rm -f /etc/apt/trusted.gpg.d/naemon.asc
apt-get update
实测回显(以最小集 naemon-core/libnaemon 卸载为例,输出节选):
Removing naemon-core (1.5.2-1) ...
Removing libnaemon:amd64 (1.5.2-1) ...
Purging configuration files for naemon-core (1.5.2-1) ...
复核无残留:
dpkg -l | grep -cE "^ii.*naemon"; ls /usr/bin/naemon 2>&1
实测回显:
0
ls: cannot access '/usr/bin/naemon': No such file or directory
数据目录(/var/lib/naemon、/var/log/naemon、/var/cache/naemon)在 purge 时一并清除;若只想停用保留数据,用 systemctl disable --now naemon 并跳过 purge。
十、参考链接
- Naemon 官方下载页(OBS 仓库安装模板):https://www.naemon.io/download
- openSUSE Build Service home:naemon 项目(Ubuntu 22.04 包目录):https://download.opensuse.org/repositories/home:/naemon/xUbuntu_22.04/
- Naemon 用户手册 · Quickstart(Ubuntu):https://www.naemon.io/documentation/usersguide/quickstart-ubuntu
- Naemon 用户手册 · Verify configuration(预检说明):https://www.naemon.io/documentation/usersguide/verifyconfig
- Naemon 用户手册 · Start/stop(服务管理):https://www.naemon.io/documentation/usersguide/startstop
- Naemon 官网新闻(1.5.2 发布公告,2026-05-18):https://www.naemon.io/news/