1. Zabbix 痛点和其他监控面板的选型
虽然已经搭建了 Zabbix 用以监控业务服务器的运行状况,不过其仍存在部分痛点:
- 繁琐的 agent 节点添加流程,注定了它不适用于生命周期较短的边缘服务器。
- 需要双向开放端口用以通信。国外不少小厂商的控制面板上并不支持安全组相关的操作,因此“允许某 IP 连接本服务器的某端口”只能通过 iptables 等进行实现,耗费时间。
于是乎重新挑选了一下轻量级的监控面板,发现全球主机交流论坛上比较火两款监控(探针面板)是 ServerStatus 和 nezha(哪吒),稍稍做了下对比:
项目 | ServerStatus | nezha(哪吒) |
---|---|---|
开源 | ✅ | ✅ |
语言 | Python2.7 | Go |
前端面板 | ✅ | ✅ |
无需 agent 端开放端口 | ✅ | ✅ |
agent 对 server 的注册方式 | agent 端执行安装脚本时手动填写 | 在前端面板上填写 agent 信息后,复制带参数的命令,去 agent 服务器上一键执行 |
前端面板主题切换 | 上传并替换 server 端文件 | 前端面板设置处切换 |
最终考虑哪吒监控面板添加 agent 节点更加简单,因此选用。
- 如果你想体验下 ServerStatus 的安装流程,可以看这篇文章:CentOS7 下搭建 ServerStatus 监控(ServerStatus-Hotaru 版且带客户端的安装),我做了单服务端和单客户端的最小部署。
- 面板搭建完成后的预览:ServerStatus | 哪吒
2. 哪吒监控面板的运作方式
不关注具体实现,简单来说哪吒监控主要做了 2 件事:
- agent 端将监控数据 Push 给 server 后端。
- server 后端处理和保存监控数据后,在前端需要时将其返回。

3. 安装部署
3.1 安装前的准备工作
在进行哪吒监控的安装部署之前,还需要准备些东西:
- 两个域名,都解析到 server 端服务器的 IP 地址上。其中一个给前端面板用,另一个给 agent 端推送监控数据时用。我的是 nezha.ceshiku.cn 和 nezha-api.ceshiku.cn。需要注意的是:nezha-api.ceshiku.cn 这种给 agent 端准备的域名,由于是用以解析 server 端服务器 IP 地址的,因此不能套 CDN!
- 在 GitHub 创建 OAuth App 后获取
Client ID
和Client secrets
,并填写 server 前端面板域名的回调地址。

关于如何创建 OAuth App 可以看官方的这篇文档:创建 OAuth 应用程序,记得在创建后保存
Client ID
和Client secrets
。
3.2 安装 server 端
官方文档:安装 Dashboard
-
在面板服务器中,运行安装脚本:
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
如果你的面板服务器位于中国大陆,可以使用镜像:
curl -L https://jihulab.com/nezha/nezha/-/raw/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh
-
选择安装面板端:
-
安装完成后输入 GitHub OAuth App 的相关信息:
-
配置成功后,前往你的地址查看,我这里端口用的默认,因此地址是:http://nezha.ceshiku.cn:8008
-
安装 Nginx、修改配置使其支持只用域名访问:
# 安装 Nginx 并设置为开启自启动 yum -y install epel-release yum -y install nginx systemctl enable nginx # 启动 Nginx service nginx start # 修改配置文件 vi /etc/nginx/nginx.conf
添加这么一段:
server { listen 80; server_name nezha.ceshiku.cn; location / { proxy_pass http://127.0.0.1:8008; proxy_set_header Host $http_host; proxy_set_header Upgrade $http_upgrade; } location ~ ^/(ws|terminal/.+)$ { proxy_pass http://127.0.0.1:8008; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $http_host; } }
之后重启 Nginx:
nginx -s reload service nginx restart
接着尝试用域名直接访问,可以发现成功了:
-
打开 Cloudflare 的 SSL/TLS 加密模式使支持 HTTPS 访问:
再访问以下发现有小锁了,成功:
至此哪吒监控的 server 端就安装完成了。
3.3 安装 agent 端
官方文档:安装 Agent
-
配置 agent 访问 server 后端用的域名:
-
登陆 server 面板并添加一台需要监控的主机:
-
复制 agent 一键安装命令并前往服务器执行:
之后回到面板,就能看到监控生效了:
-
修改 agent 监控端的配置来关闭远程 SSH 功能或增大信息上报的间隔。
找到并编辑配置文件:vi /etc/systemd/system/nezha-agent.service
找到下面这一行:
ExecStart=/opt/nezha/agent/nezha-agent -s nezha-api.ceshiku.cn:5555 -p 0bcxxxxxxxxxxxf39 --disable-auto-update
我关闭了远程 SSH 功能并将上报间隔改为了 2 秒,以下是配置行可供参考:
ExecStart=/opt/nezha/agent/nezha-agent -s nezha-api.ceshiku.cn:5555 -p 0bcxxxxxxxxxxxf39 --disable-auto-update --disable-command-execute --report-delay=2
重启 nezha-agent 后生效:
systemctl daemon-reload service nezha-agent start
完成的可配置项如下:
参数 解释 --report-delay 系统信息上报的间隔,默认为 1 秒,可以设置为 3 来进一步降低 agent 端系统资源占用(配置区间 1-4) --skip-conn 不监控连接数,机场/连接密集型机器推荐设置,不然比较占 CPU(shirou/gopsutil/issues#220) --skip-procs 不监控进程数,也可以降低 agent 占用 --disable-auto-update 禁止 Agent 自动更新(安全特性) --disable-command-execute 禁止在 Agent 机器上执行定时任务、打开在线终端(安全特性)
至此哪吒监控的 agent 端就安装完成了。
4. 后记
得益于开发者奶爸提供的一键脚本,哪吒监控的安装部署可以说是相当简单,其文档中记录的常见问题与解决方案更是全面,非常值得学习。