import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BmdFiWrL.js";const F=JSON.parse('{"title":"安装 Agent","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"guide/agent.md","filePath":"guide/agent.md","lastUpdated":1725160726000}'),e={name:"guide/agent.md"},t=n(`
哪吒监控的被控端服务被称为 Agent,本文档将介绍如何在被控端服务器上安装 Agent,并与 Dashboard 连接。
TIP
Agent 二进制文件仓库地址为:https://github.com/nezhahq/agent/releases
哪吒监控支持在 Windows 和 Linux 上一键安装 Agent。遵循本文档的步骤,你可以很轻松地在服务器上部署它。
你需要提前在管理面板中设置好通信域名,此域名不可以接入 CDN。本文档以示例通信域名 “data.example.com” 为例。
进入后台管理面板,转到“设置”页,在“未接入 CDN 的面板服务器域名/IP”项中填入通信域名,然后点击"保存"。
WARNING
如果在 PowerShell 中运行一键安装命令时遇到错误,请尝试下方的在 Windows 中手动安装 Agent。
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://gitee.com/naibahq/nezha/raw/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh
首先获取 Agent 的二进制文件:https://github.com/nezhahq/agent/releases
解压后输入以下命令安装服务(可能需要 root 权限):
./nezha-agent service install -s server_name:port -p password
除了服务器地址和密码,还可以添加其它支持的参数。具体参考自定义 Agent 监控项目
卸载服务:
./nezha-agent service uninstall
启动服务:
./nezha-agent service start
停止服务:
./nezha-agent service stop
重启服务:
./nezha-agent service restart
目前 Agent 内置的服务功能已经支持了绝大部分 init 系统,包括 FreeBSD rc.d 和 openrc。尽管如此还是有一些漏网之鱼。
这里使用 Void Linux 的 runit 作为示例:
/etc/sv/nezha-agent
目录:mkdir /etc/sv/nezha-agent
/etc/sv/nezha-agent/run
服务文件,写入以下内容:#!/bin/sh
exec 2>&1
exec /opt/nezha/agent/nezha-agent -s server_name:port -p password 2>&1
这里同样可以添加其它参数。
/etc/sv/nezha-agent/log/run
:#!/bin/sh
exec vlogger -t nezha-agent -p daemon
sudo ln -s /etc/sv/nezha-agent/ /var/service
之后可以通过 sv
命令来操作服务。
如何查看日志:
socklog
,并启用:sudo xbps-install -S socklog-void
sudo ln -s /etc/sv/socklog-unix /var/service
svlogtail
查看日志:sudo svlogtail | grep nezha-agent
Systemd 实现 仅适用于 DSM7:
# Agent 路径
EXEC="/PATH/TO/nezha-agent"
# 日志路径地址
LOG="\${EXEC}.log"
# 额外执行参数, 可留空
ARGS=""
# 哪吒服务端 gRPC 地址
SERVER="HOST_OR_IP:gRPC_PORT"
# 上一步获取的主机密钥
SECRET="APP_SECRET"
# 运行服务的用户名, *强烈建议使用非root用户执行*
RUN_USER="nezha"
# 写入到 systemd 服务文件
cat << EOF > /usr/lib/systemd/system/nezha.service
[Unit]
Description=Nezha Agent Service
After=network.target
[Service]
Type=simple
ExecStart=/bin/nohup \${EXEC} \${ARGS} -s \${SERVER} -p \${SECRET} &>> \${LOG} &
ExecStop=ps -fe |grep nezha-agent|awk '{print \\$2}'|xargs kill
User=\${RUN_USER
}
Restart=on-abort
[Install]
WantedBy=multi-user.target
EOF
# 重载服务
systemctl daemon-reload
# 启动服务
systemctl start nezha
# 服务自启动
systemctl enable nezha
‼️修改对应信息后‼️
使用 root
账号执行上述命令即可安装完成。
本节内容改编自 🐿️松鼠收集🌰,改编已获得原作者授权
WARNING
请务必先添加环境变量,再通过 Homebrew 安装 nezha-agent! 因 Homebrew 在软件安装时创建服务所需 plist 文件,若先安装再添加环境变量,会因缺少参数而启动失败。
echo 'export HOMEBREW_NEZHA_AGENT_PASSWORD="通信密钥,在服务页面获取"' >> ~/.zshrc
echo 'export HOMEBREW_NEZHA_AGENT_SERVER="你的服务器和端口,格式 your.domain:5555 "' >> ~/.zshrc
source ~/.zshrc
DANGER
请注意,此 Homebrew 仓库由第三方维护,与哪吒监控无关。 Nezha 项目组不对该仓库的可用性和安全性等方面作出背书。在使用前,请自行评估风险!
由于暂未提交到 Homebrew Core 官方库,暂时放在上述博客作者参与维护的 第三方 Homebrew 仓库 中:
brew install brewforge/chinese/nezha-agent
brew services start nezha-agent
brew services info nezha-agent
brew services stop nezha-agent
brew rm nezha-agent
echo $HOMEBREW_NEZHA_AGENT_PASSWORD
echo $HOMEBREW_NEZHA_AGENT_SERVER
brew services stop nezha-agent
brew reinstall nezha-agent
brew services start nezha-agent
如何一步到位,解决安装过程中的疑难杂症?
如何使旧版 OpenWRT/LEDE 自启动?
如何使新版 OpenWRT 自启动? 贡献者:@艾斯德斯
/root
。chmod +x /root/nezha-agent
赋予执行权限,然后创建 /etc/init.d/nezha-service
:#!/bin/sh /etc/rc.common
START=99
USE_PROCD=1
start_service() {
procd_open_instance
procd_set_param command /root/nezha-agent -s 面板通信地址:端口 -p 秘钥 -d
procd_set_param respawn
procd_close_instance
}
stop_service() {
killall nezha-agent
}
restart() {
stop
sleep 2
start
}
chmod +x /etc/init.d/nezha-service
赋予执行权限。/etc/init.d/nezha-service enable && /etc/init.d/nezha-service start
Agent 目前没有推出 Docker 镜像。
Agent 的设计思路和 Dashboard 相反,Dashboard 要尽可能不影响宿主机工作,但 Agent 则需要在宿主机中执行监控服务和运行命令。
将 Agent 放入容器中确实可以继续执行监控任务,但 WebShell 等功能无法正常运行,因此不提供 Docker 镜像。