Ubuntu 22.04 安装 Naemon 1.5 指南

在 Ubuntu 22.04 服务器从零安装 Naemon 1.5(naemon-core 1.5.2)的完整实录:OBS 官方仓库在线安装与离线 deb 包安装双方案、systemd 托管与预检校验、Livestatus 实时查询验证、本地插件检查落地,并沉淀 Thruk Web 界面 403 兼容性问题的完整排障实录。

NaemonNaemonLinux自托管2026/11/01

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,OBS home: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 仓库实查为准)

二、前置条件

  1. 一台 Ubuntu 22.04 服务器(物理机或虚拟机),具备 root 或 sudo 权限;
  2. 服务器时间正常(检查调度与告警时间戳依赖系统时钟);
  3. 方案 A(在线仓库)需要访问 download.opensuse.org 与 build.opensuse.org 的网络;方案 B(离线包)仅需一台能联网的下载机;
  4. 基础工具:curl、gnupg(导入仓库签名密钥用)、lsb-release(读取发行版版本号)。Ubuntu 22.04 最小安装可能不带,先补齐:
apt-get update
apt-get install -y curl gnupg lsb-release wget
  1. 确认 systemd 可用(Ubuntu 22.04 默认即 systemd,naemon 以系统服务方式运行):
systemctl is-system-running

实测回显:

running

三、版本选型说明

版本信息实查于 2026-11-01(官网 https://www.naemon.io/download 与 OBS 仓库目录):

包名最新版本说明
naemon-core1.5.2-1监控核心(naemon 二进制本体)
libnaemon1.5.2-1核心运行库
naemon(元包)1.5.1-1元包,拉取 core + livestatus + thruk 全套件
naemon-livestatus1.5.1-1Livestatus 实时查询模块
naemon-thruk / thruk1.5.1-1 / 3.30-1Web 界面(含 Apache 集成)
naemon-dev1.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 naemonapt-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 模块加载项

安装后的三个常见改动点:

  1. 联系人邮箱:/etc/naemon/conf.d/contacts.cfg 中 naemonadmin 的 email 默认是 naemon@localhost,改为真实邮箱才有告警邮件;
  2. 主配置管理员邮箱:naemon.cfg 的 admin_email/admin_pager 同步修改;
  3. 样例对象: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 组合):

  1. 现象: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
  1. 定位:这是 Apache 对重写目标中携带 %3F(问号编码)的安全加固校验(CVE-2024-38474 系列修复引入),Thruk 3.30 的 cookie 认证重写规则(/usr/share/thruk/thruk_cookie_auth.include 中带 %{QUERY_STRING} 的规则)触发了该拦截;按官方口径应加 RewriteOptions UnsafeAllow3F 放行;
  2. 尝试修复并验证:在该配置中加入 RewriteOptions UnsafeAllow3F 后执行 apache2ctl configtest,实测报 AH00526: Syntax error ... RewriteOptions: unknown option 'UnsafeAllow3F'——Ubuntu 22.04 当前仓库内的 Apache 2.4.52 后移植版拦截了该类重写、但 RewriteOptions 尚不识别 UnsafeAllow3F 选项(该选项自上游 2.4.60 起提供);
  3. 结论与建议: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。

十、参考链接

  1. Naemon 官方下载页(OBS 仓库安装模板):https://www.naemon.io/download
  2. openSUSE Build Service home:naemon 项目(Ubuntu 22.04 包目录):https://download.opensuse.org/repositories/home:/naemon/xUbuntu_22.04/
  3. Naemon 用户手册 · Quickstart(Ubuntu):https://www.naemon.io/documentation/usersguide/quickstart-ubuntu
  4. Naemon 用户手册 · Verify configuration(预检说明):https://www.naemon.io/documentation/usersguide/verifyconfig
  5. Naemon 用户手册 · Start/stop(服务管理):https://www.naemon.io/documentation/usersguide/startstop
  6. Naemon 官网新闻(1.5.2 发布公告,2026-05-18):https://www.naemon.io/news/