137 lines
38 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>一键安装 Agent | 哪吒监控</title>
<meta name="description" content="哪吒监控是一个轻量化的运维工具">
<link rel="stylesheet" href="/assets/style.0b9f658b.css">
<link rel="modulepreload" href="/assets/chunks/AlgoliaSearchBox.98396bc7.js">
<link rel="modulepreload" href="/assets/app.3817bf4e.js">
<link rel="modulepreload" href="/assets/guide_agent.md.d63b5c68.lean.js">
<meta name="twitter:title" content="一键安装 Agent | 哪吒监控">
<meta property="og:title" content="一键安装 Agent | 哪吒监控">
</head>
<body>
<div id="app"><!--[--><div class="theme"><header class="nav-bar" data-v-675d8756><div class="sidebar-button" data-v-675d8756><svg class="icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z" class></path></svg></div><a class="nav-bar-title" href="/" aria-label="哪吒监控, back to home" data-v-675d8756 data-v-cc01ef16><!----> 哪吒监控</a><div class="flex-grow" data-v-675d8756></div><div class="nav" data-v-675d8756><nav class="nav-links" data-v-675d8756 data-v-eab3edfe><!--[--><div class="item" data-v-eab3edfe><div class="nav-link" data-v-eab3edfe data-v-b8818f8c><a class="item active" href="/" data-v-b8818f8c>使用指南 <!----></a></div></div><div class="item" data-v-eab3edfe><div class="nav-link" data-v-eab3edfe data-v-b8818f8c><a class="item" href="/case/index" data-v-b8818f8c>社区项目 <!----></a></div></div><div class="item" data-v-eab3edfe><div class="nav-link" data-v-eab3edfe data-v-b8818f8c><a class="item" href="/developer/index" data-v-b8818f8c>开发手册 <!----></a></div></div><!--]--><div class="item" data-v-eab3edfe><div class="nav-dropdown-link" data-v-eab3edfe data-v-56bf3a3f><button class="button" data-v-56bf3a3f><span class="button-text" data-v-56bf3a3f>Languages</span><span class="right button-arrow" data-v-56bf3a3f></span></button><ul class="dialog" data-v-56bf3a3f><!--[--><li class="dialog-item" data-v-56bf3a3f><div class="nav-dropdown-link-item" data-v-56bf3a3f data-v-bbc27490><a class="item active" href="/guide/agent.html" data-v-bbc27490><span class="arrow" data-v-bbc27490></span><span class="text" data-v-bbc27490>简体中文</span><span class="icon" data-v-bbc27490><!----></span></a></div></li><li class="dialog-item" data-v-56bf3a3f><div class="nav-dropdown-link-item" data-v-56bf3a3f data-v-bbc27490><a class="item" href="/en_US/guide/agent.html" data-v-bbc27490><span class="arrow" data-v-bbc27490></span><span class="text" data-v-bbc27490>English</span><span class="icon" data-v-bbc27490><!----></span></a></div></li><!--]--></ul></div></div><div class="item" data-v-eab3edfe><div class="nav-link" data-v-eab3edfe data-v-b8818f8c><a class="item isExternal" href="https://github.com/nezhahq/nezhahq.github.io" target="_blank" rel="noopener noreferrer" data-v-b8818f8c>GitHub <svg class="icon outbound" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15" data-v-b8818f8c><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div></div></nav></div><!--[--><!--[--><div class="algolia-search-box" id="docsearch"></div><!--]--><!--]--></header><aside class="sidebar" data-v-83e92a68><nav class="nav-links nav" data-v-83e92a68 data-v-eab3edfe><!--[--><div class="item" data-v-eab3edfe><div class="nav-link" data-v-eab3edfe data-v-b8818f8c><a class="item active" href="/" data-v-b8818f8c>使用指南 <!----></a></div></div><div class="item" data-v-eab3edfe><div class="nav-link" data-v-eab3edfe data-v-b8818f8c><a class="item" href="/case/index" data-v-b8818f8c>社区项目 <!----></a></div></div><div class="item" data-v-eab3edfe><div class="nav-link" data-v-eab3edfe data-v-b8818f8c><a class="item" href="/developer/index" data-v-b8818f8c>开发手册 <!----></a></div></div><!--]--><div class="item" data-v-eab3edfe><div class="nav-dropdown-link" data-v-eab3edfe data-v-56bf3a3f><button class="button" data-v-56bf3a3f><span class="button-text" data-v-56bf3a3f>Languages</span><span class="right button-arrow" data-v-56bf3a3f></span></button><ul class="dialog" data-v-56bf3a3f><!--[--><li class="dialog-item" data-v-56bf3a3f><div class="nav-dropdown-link-item" data-v-56bf3a3f data-v-bbc27490><a class="item active" href="/guide/agent.html" data-v-bbc27490><span class="arrow" data-v-bbc27490></span><span class="text" data-v-bbc27490>简体中文</span><span class="icon" data-v-bbc27490><!----></span></a></div></li><li class="dialog-item" data-v-56bf3a3f><div class="nav-dropdown-link-item" data-v-56bf3a3f data-v-bbc27490><a class="item" href="/en_US/guide/agent.html" data-v-bbc27490><span class="arrow" data-v-bbc27490></span><span class="text" data-v-bbc27490>English</span><span class="icon" data-v-bbc27490><!----></span></a></div></li><!--]--></ul></div></div><div class="item" data-v-eab3edfe><div class="nav-link" data-v-eab3edfe data-v-b8818f8c><a class="item isExternal" href="https://github.com/nezhahq/nezhahq.github.io" target="_blank" rel="noopener noreferrer" data-v-b8818f8c>GitHub <svg class="icon outbound" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15" data-v-b8818f8c><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div></div></nav><!--[--><!--]--><ul class="sidebar-links" data-v-83e92a68><!--[--><li class="sidebar-link"><p class="sidebar-link-item">安装手册</p><ul class="sidebar-links"><li class="sidebar-link"><a class="sidebar-link-item" href="/guide/dashboard">安装 Dashboard</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item active" href="/guide/agent">安装 Agent</a><ul class="sidebar-links"><li class="sidebar-link"><a class="sidebar-link-item" href="#一键安装-agent">一键安装 Agent</a><ul class="sidebar-links"><li class="sidebar-link"><a class="sidebar-link-item" href="#准备工作">准备工作</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="#在-linux-中一键安装-ubuntu、debian、centos">在 Linux 中一键安装 (Ubuntu、Debian、CentOS)</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="#在-windows-中一键安装">在 Windows 中一键安装</a><!----></li></ul></li><li class="sidebar-link"><a class="sidebar-link-item" href="#其他方式安装-agent">其他方式安装 Agent</a><ul class="sidebar-links"><li class="sidebar-link"><a class="sidebar-link-item" href="#在-linux-中安装agent-ubuntu、debian、centos">在 Linux 中安装Agent (Ubuntu、Debian、CentOS)</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="#在-其他-linux-如-alpine-使用-openrc-的发行版-安装-agent">在 其他 Linux 如 Alpine 使用 Openrc 的发行版 安装 Agent</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="#在-windows-中安装agent">在 Windows 中安装Agent</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="#在-macos-中安装agent">在 MacOS 中安装Agent</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="#在-openwrt-中安装-agent">在 OpenWRT 中安装 Agent</a><!----></li></ul></li><li class="sidebar-link"><a class="sidebar-link-item" href="#faq">FAQ</a><ul class="sidebar-links"><li class="sidebar-link"><a class="sidebar-link-item" href="#agent-有-docker-镜像吗?">Agent 有 Docker 镜像吗?</a><!----></li></ul></li></ul></li></ul></li><li class="sidebar-link"><p class="sidebar-link-item">管理面板配置</p><ul class="sidebar-links"><li class="sidebar-link"><a class="sidebar-link-item" href="/guide/servers">主机</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="/guide/services">服务</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="/guide/tasks">定时任务</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="/guide/notifications">报警通知</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="/guide/settings">设置</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="/guide/api">API</a><!----></li></ul></li><li class="sidebar-link"><p class="sidebar-link-item">常见问题</p><ul class="sidebar-links"><li class="sidebar-link"><a class="sidebar-link-item" href="/guide/q1">TG api 被墙</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="/guide/q2">Agent 无法启动/上线 查看日志并进行排错的步骤</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="/guide/q3">反向代理 gRPC 端口的步骤</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="/guide/q4">实时通道断开/在线终端连接失败</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="/guide/q5">进行数据迁移、备份和恢复的步骤</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="/guide/q6">设置每月重置流量统计的步骤</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="/guide/q7">自定义 Agent 监控项目的步骤</a><!----></li></ul></li><li class="sidebar-link"><p class="sidebar-link-item">排障指南</p><ul class="sidebar-links"><li class="sidebar-link"><a class="sidebar-link-item" href="/guide/dashboardq">Dashboard 相关</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="/guide/agentq">Agent 相关</a><!----></li><li class="sidebar-link"><a class="sidebar-link-item" href="/guide/loginq">登录相关</a><!----></li></ul></li><!--]--></ul><!--[--><!--]--></aside><div class="sidebar-mask"></div><main class="page" data-v-7eddb2c4><div class="container" data-v-7eddb2c4><!--[--><!--]--><div style="position:relative;" class="content" data-v-7eddb2c4><div><p><strong>哪吒监控的被控端服务被称为 Agent本文档将介绍如何在被控端服务器上安装 Agent并与 Dashboard 连接</strong><br><br></p><h2 id="一键安装-agent" tabindex="-1">一键安装 Agent <a class="header-anchor" href="#一键安装-agent" aria-hidden="true">#</a></h2><p>目前哪吒监控已支持在 Windows 和 Linux上一键安装 Agent遵循本文档的步骤你可以很轻松的在服务器上部署它<br><br></p><h3 id="准备工作" tabindex="-1">准备工作 <a class="header-anchor" href="#准备工作" aria-hidden="true">#</a></h3><p>你需要提前在管理面板中设置好通信域名此域名不可以接入CDN这里以前面提到过的示例通信域名 “<a href="http://data.example.com" target="_blank" rel="noopener noreferrer">data.example.com</a>” 来做演示<br> 进入后台管理面板,转到“设置”页,在“未接入 CDN 的面板服务器域名/IP”项中填入通信域名然后点击&quot;保存&quot;<br><br></p><h3 id="在-linux-中一键安装-ubuntu、debian、centos" tabindex="-1">在 Linux 中一键安装 (Ubuntu、Debian、CentOS) <a class="header-anchor" href="#在-linux-中一键安装-ubuntu、debian、centos" aria-hidden="true">#</a></h3><ul><li>首先在管理面板中添加一台服务器</li><li>点击新添加的服务器旁,绿色的 Linux 图标按钮,复制一键安装命令</li><li>在被控端服务器中运行复制的一键安装命令,等待安装完成后返回到 Dashboard 主页查看服务器是否上线<br><br></li></ul><h3 id="在-windows-中一键安装" tabindex="-1">在 Windows 中一键安装 <a class="header-anchor" href="#在-windows-中一键安装" aria-hidden="true">#</a></h3><ul><li>首先在管理面板中添加一台服务器</li><li>点击新添加的服务器旁,绿色的 Windows 图标按钮,复制一键安装命令</li><li>进入 Windows 服务器,运行 PowerShell在 PowerShell 中运行复制的安装命令</li><li>如遇到确认「执行策略变更」请选择 Y</li><li>等待安装完成后返回 Dashboard 主页查看服务器是否上线<br><br><br><br></li></ul><h2 id="其他方式安装-agent" tabindex="-1">其他方式安装 Agent <a class="header-anchor" href="#其他方式安装-agent" aria-hidden="true">#</a></h2><h3 id="在-linux-中安装agent-ubuntu、debian、centos" tabindex="-1">在 Linux 中安装Agent (Ubuntu、Debian、CentOS) <a class="header-anchor" href="#在-linux-中安装agent-ubuntu、debian、centos" aria-hidden="true">#</a></h3><ul><li>首先在管理面板中添加一台服务器</li><li>在被控服务器中,运行脚本(位于中国大陆的服务器请使用镜像):</li></ul><div class="language-bash"><pre><code><span class="token function">curl</span> -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh -o nezha.sh <span class="token operator">&amp;&amp;</span> <span class="token function">chmod</span> +x nezha.sh <span class="token operator">&amp;&amp;</span> <span class="token function">sudo</span> ./nezha.sh
</code></pre></div><p>如果你的被控服务器位于中国大陆,可以使用镜像:</p><div class="language-bash"><pre><code><span class="token function">curl</span> -L https://jihulab.com/nezha/nezha/-/raw/master/script/install.sh -o nezha.sh <span class="token operator">&amp;&amp;</span> <span class="token function">chmod</span> +x nezha.sh <span class="token operator">&amp;&amp;</span> <span class="token function">sudo</span> <span class="token assign-left variable">CN</span><span class="token operator">=</span>true ./nezha.sh
</code></pre></div><ul><li>选择“安装监控 Agent”</li><li>输入通信域名,如:”<a href="http://data.example.com" target="_blank" rel="noopener noreferrer">data.example.com</a></li><li>输入面板通信端口RPC端口默认为 5555</li><li>输入 Agent 密钥Agent 密钥在管理面板中添加服务器时生成,可以在管理面板中的“主机”页中找到</li><li>等待安装完成后返回 Dashboard 主页查看服务器是否上线<br><br></li></ul><h3 id="在-其他-linux-如-alpine-使用-openrc-的发行版-安装-agent" tabindex="-1">在 其他 Linux 如 Alpine 使用 Openrc 的发行版 安装 Agent <a class="header-anchor" href="#在-其他-linux-如-alpine-使用-openrc-的发行版-安装-agent" aria-hidden="true">#</a></h3><p>本节内容由 <a href="https://github.com/unknwon0054" target="_blank" rel="noopener noreferrer">unknown0054</a> 贡献</p><ul><li>修改 SERVER、SECRET、TLS 然后在 shell 中执行</li></ul><div class="language-shell"><pre><code><span class="token function">cat</span> <span class="token operator">&gt;</span>/etc/init.d/nezha-agent<span class="token operator">&lt;&lt;</span> <span class="token string">EOF
#!/sbin/openrc-run
SERVER=&quot;&quot; #Dashboard 地址 ip:port
SECRET=&quot;&quot; #SECRET
TLS=&quot;&quot; # 是否启用 tls 是 &quot;--tls&quot; 否留空
NZ_BASE_PATH=&quot;/opt/nezha&quot;
NZ_AGENT_PATH=&quot;<span class="token variable">${NZ_BASE_PATH}</span>/agent&quot;
pidfile=&quot;/run/<span class="token variable">${RC_SVCNAME}</span>.pid&quot;
command=&quot;/opt/nezha/agent/nezha-agent&quot;
command_args=&quot;-s <span class="token variable">${SERVER}</span> -p <span class="token variable">${SECRET}</span> <span class="token variable">${TLS}</span>&quot;
command_background=true
depend() {
need net
}
checkconfig() {
GITHUB_URL=&quot;github.com&quot;
if [ ! -f &quot;<span class="token variable">${NZ_AGENT_PATH}</span>/nezha-agent&quot; ]; then
if [[ <span class="token variable"><span class="token variable">$(</span><span class="token function">uname</span> -m <span class="token operator">|</span> <span class="token function">grep</span> <span class="token string">&#39;x86_64&#39;</span><span class="token variable">)</span></span> != &quot;&quot; ]]; then
os_arch=&quot;amd64&quot;
elif [[ <span class="token variable"><span class="token variable">$(</span><span class="token function">uname</span> -m <span class="token operator">|</span> <span class="token function">grep</span> <span class="token string">&#39;i386\|i686&#39;</span><span class="token variable">)</span></span> != &quot;&quot; ]]; then
os_arch=&quot;386&quot;
elif [[ <span class="token variable"><span class="token variable">$(</span><span class="token function">uname</span> -m <span class="token operator">|</span> <span class="token function">grep</span> <span class="token string">&#39;aarch64\|armv8b\|armv8l&#39;</span><span class="token variable">)</span></span> != &quot;&quot; ]]; then
os_arch=&quot;arm64&quot;
elif [[ <span class="token variable"><span class="token variable">$(</span><span class="token function">uname</span> -m <span class="token operator">|</span> <span class="token function">grep</span> <span class="token string">&#39;arm&#39;</span><span class="token variable">)</span></span> != &quot;&quot; ]]; then
os_arch=&quot;arm&quot;
elif [[ <span class="token variable"><span class="token variable">$(</span><span class="token function">uname</span> -m <span class="token operator">|</span> <span class="token function">grep</span> <span class="token string">&#39;s390x&#39;</span><span class="token variable">)</span></span> != &quot;&quot; ]]; then
os_arch=&quot;s390x&quot;
elif [[ <span class="token variable"><span class="token variable">$(</span><span class="token function">uname</span> -m <span class="token operator">|</span> <span class="token function">grep</span> <span class="token string">&#39;riscv64&#39;</span><span class="token variable">)</span></span> != &quot;&quot; ]]; then
os_arch=&quot;riscv64&quot;
fi
local version=<span class="token variable"><span class="token variable">$(</span><span class="token function">curl</span> -m <span class="token number">10</span> -sL <span class="token string">&quot;https://api.github.com/repos/naiba/nezha/releases/latest&quot;</span> <span class="token operator">|</span> <span class="token function">grep</span> <span class="token string">&quot;tag_name&quot;</span> <span class="token operator">|</span> <span class="token function">head</span> -n <span class="token number">1</span> <span class="token operator">|</span> <span class="token function">awk</span> -F <span class="token string">&quot;:&quot;</span> <span class="token string">&#39;{print $2}&#39;</span> <span class="token operator">|</span> <span class="token function">sed</span> <span class="token string">&#39;s/\&quot;//g;s/,//g;s/ //g&#39;</span><span class="token variable">)</span></span>
if [ ! -n &quot;<span class="token variable">$version</span>&quot; ]; then
version=<span class="token variable"><span class="token variable">$(</span><span class="token function">curl</span> -m <span class="token number">10</span> -sL <span class="token string">&quot;https://fastly.jsdelivr.net/gh/naiba/nezha/&quot;</span> <span class="token operator">|</span> <span class="token function">grep</span> <span class="token string">&quot;option\.value&quot;</span> <span class="token operator">|</span> <span class="token function">awk</span> -F <span class="token string">&quot;&#39;&quot;</span> <span class="token string">&#39;{print $2}&#39;</span> <span class="token operator">|</span> <span class="token function">sed</span> <span class="token string">&#39;s/naiba\/nezha@/v/g&#39;</span><span class="token variable">)</span></span>
fi
if [ ! -n &quot;<span class="token variable">$version</span>&quot; ]; then
version=<span class="token variable"><span class="token variable">$(</span><span class="token function">curl</span> -m <span class="token number">10</span> -sL <span class="token string">&quot;https://gcore.jsdelivr.net/gh/naiba/nezha/&quot;</span> <span class="token operator">|</span> <span class="token function">grep</span> <span class="token string">&quot;option\.value&quot;</span> <span class="token operator">|</span> <span class="token function">awk</span> -F <span class="token string">&quot;&#39;&quot;</span> <span class="token string">&#39;{print $2}&#39;</span> <span class="token operator">|</span> <span class="token function">sed</span> <span class="token string">&#39;s/naiba\/nezha@/v/g&#39;</span><span class="token variable">)</span></span>
fi
if [ ! -n &quot;<span class="token variable">$version</span>&quot; ]; then
echo -e &quot;获取版本号失败,请检查本机能否链接 https://api.github.com/repos/naiba/nezha/releases/latest&quot;
return 0
else
echo -e &quot;当前最新版本为: <span class="token variable">${version}</span>&quot;
fi
wget -t 2 -T 10 -O nezha-agent_linux_<span class="token variable">${os_arch}</span>.zip https://<span class="token variable">${GITHUB_URL}</span>/naiba/nezha/releases/download/<span class="token variable">${version}</span>/nezha-agent_linux_<span class="token variable">${os_arch}</span>.zip &gt;/dev/null 2&gt;&amp;1
if [[ <span class="token variable">$?</span> != 0 ]]; then
echo -e &quot;Release 下载失败,请检查本机能否连接 <span class="token variable">${GITHUB_URL}</span><span class="token variable">${plain}</span>&quot;
return 0
fi
mkdir -p <span class="token variable">$NZ_AGENT_PATH</span>
chmod 755 -R <span class="token variable">$NZ_AGENT_PATH</span>
unzip -qo nezha-agent_linux_<span class="token variable">${os_arch}</span>.zip &amp;&amp; mv nezha-agent <span class="token variable">$NZ_AGENT_PATH</span> &amp;&amp; rm -rf nezha-agent_linux_<span class="token variable">${os_arch}</span>.zip README.md
fi
if [ ! -x &quot;<span class="token variable">${NZ_AGENT_PATH}</span>/nezha-agent&quot; ]; then
chmod +x <span class="token variable">${NZ_AGENT_PATH}</span>/nezha-agent
fi
}
start_pre() {
if [ &quot;<span class="token variable">${RC_CMD}</span>&quot; != &quot;restart&quot; ]; then
checkconfig || return <span class="token variable">$?</span>
fi
}
EOF</span>
</code></pre></div><ul><li><p>增加运行权限</p><div class="language-shell"><pre><code><span class="token function">chmod</span> +x /etc/init.d/nezha-agent
</code></pre></div></li><li><p>运行 Nezha-Agent</p><div class="language-shell"><pre><code>rc-service nezha-agent start
</code></pre></div></li><li><p>添加开机自启动</p><div class="language-shell"><pre><code>rc-update <span class="token function">add</span> nezha-agent
</code></pre></div></li></ul><h3 id="在-windows-中安装agent" tabindex="-1">在 Windows 中安装Agent <a class="header-anchor" href="#在-windows-中安装agent" aria-hidden="true">#</a></h3><ul><li>请参考社区文章:<br><a href="https://nyko.me/2020/12/13/nezha-windows-client.html" target="_blank" rel="noopener noreferrer">哪吒探针 - Windows 客户端安装</a><br><br></li></ul><h3 id="在-macos-中安装agent" tabindex="-1">在 MacOS 中安装Agent <a class="header-anchor" href="#在-macos-中安装agent" aria-hidden="true">#</a></h3><p><em><strong>本节内容改编自<a href="https://blog.mitsea.com/e796f93db38d49e4b18df234c6ee75f5" target="_blank" rel="noopener noreferrer">Mitsea Blog</a>,改编已获得原作者授权</strong></em><br><br></p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>安装过程中如提示“macOS 无法验证此 app“请前往系统设置手动允许程序运行</p></div><ul><li>首先在管理面板中添加一台服务器</li><li>前往 <a href="https://github.com/naiba/nezha/releases" target="_blank" rel="noopener noreferrer">Release</a> 页下载 Agent 二进制文件,根据 CPU 架构选择下载 darwin amd64 还是 arm64 的 Agent<br> 如 Intel CPU 下载 amd64Apple Silicon 下载 arm64 版本。下载完成后解压 Agent 二进制文件,如解压到下载文件夹</li><li>新建一个名为 <code>nezha_agent.plist</code> 的文件并保存,修改文件内容如下:</li></ul><div class="language-xml"><pre><code><span class="token prolog">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>
<span class="token doctype"><span class="token punctuation">&lt;!</span><span class="token doctype-tag">DOCTYPE</span> <span class="token name">plist</span> <span class="token name">PUBLIC</span> <span class="token string">&quot;-//Apple//DTD PLIST 1.0//EN&quot;</span> <span class="token string">&quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>plist</span> <span class="token attr-name">version</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">&quot;</span>1.0<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>dict</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>key</span><span class="token punctuation">&gt;</span></span>KeepAlive<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>key</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>true</span><span class="token punctuation">/&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>key</span><span class="token punctuation">&gt;</span></span>Label<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>key</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>string</span><span class="token punctuation">&gt;</span></span>nezha_agent<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>string</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>key</span><span class="token punctuation">&gt;</span></span>Program<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>key</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>string</span><span class="token punctuation">&gt;</span></span>在这里修改 Agent 二进制文件的的路径,如:/Users/123/Downloads/nezha-agent<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>string</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>key</span><span class="token punctuation">&gt;</span></span>ProgramArguments<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>key</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>array</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>string</span><span class="token punctuation">&gt;</span></span>在这里修改 Agent 二进制文件的的路径,同上<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>string</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>string</span><span class="token punctuation">&gt;</span></span>--password<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>string</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>string</span><span class="token punctuation">&gt;</span></span>通信密钥529664783eeb23cc25<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>string</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>string</span><span class="token punctuation">&gt;</span></span>--server<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>string</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>string</span><span class="token punctuation">&gt;</span></span>通信网址和RPC端口如:data.example.com:5555<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>string</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>array</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>key</span><span class="token punctuation">&gt;</span></span>RunAtLoad<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>key</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>true</span><span class="token punctuation">/&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>dict</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>plist</span><span class="token punctuation">&gt;</span></span>
</code></pre></div><ul><li>在 Terminal 中使用下面的命令加载 plist 文件到 launchd 里,<strong>注意替换文件路径</strong></li></ul><div class="language-shell"><pre><code>launchctl load /Users/123/Desktop/nezha_agent.plist
</code></pre></div><ul><li>启动进程</li></ul><div class="language-shell"><pre><code>launchctl start nezha_agent
</code></pre></div><ul><li>检查进程是否运行</li></ul><div class="language-shell"><pre><code>launchctl list <span class="token operator">|</span> <span class="token function">grep</span> nezha_agent
</code></pre></div><ul><li>停止进程并移除</li></ul><div class="language-shell"><pre><code>launchctl stop nezha_agent
</code></pre></div><div class="language-shell"><pre><code>launchctl remove nezha_agent
</code></pre></div><br><h3 id="在-openwrt-中安装-agent" tabindex="-1">在 OpenWRT 中安装 Agent <a class="header-anchor" href="#在-openwrt-中安装-agent" aria-hidden="true">#</a></h3><p><strong>如何 一步到位,解决安装过程疑难杂症</strong></p><ul><li>请参考项目:<br><a href="https://github.com/dysf888/NZ-OpenWrt" target="_blank" rel="noopener noreferrer">NZ-OpenWrt</a><br><br></li></ul><p><strong>如何使 旧版 OpenWRT/LEDE 自启动</strong></p><ul><li>请参考项目:<br><a href="https://github.com/Erope/openwrt_nezha" target="_blank" rel="noopener noreferrer">哪吒监控 For OpenWRT</a><br><br></li></ul><p><strong>如何使 新版 OpenWRT 自启动?来自 @艾斯德斯</strong></p><ul><li>首先在 release 下载对应的二进制解压 zip 包后放置到 <code>/root</code></li><li>运行 <code>chmod +x /root/nezha-agent</code> 赋予执行权限,然后创建 <code>/etc/init.d/nezha-service</code></li></ul><div class="language-shell"><pre><code><span class="token shebang important">#!/bin/sh /etc/rc.common</span>
<span class="token assign-left variable">START</span><span class="token operator">=</span><span class="token number">99</span>
<span class="token assign-left variable">USE_PROCD</span><span class="token operator">=</span><span class="token number">1</span>
<span class="token function-name function">start_service</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
procd_open_instance
procd_set_param <span class="token builtin class-name">command</span> /root/nezha-agent -s 面板通信地址:端口 -p 秘钥 -d
procd_set_param respawn
procd_close_instance
<span class="token punctuation">}</span>
<span class="token function-name function">stop_service</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token function">killall</span> nezha-agent
<span class="token punctuation">}</span>
<span class="token function-name function">restart</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
stop
<span class="token function">sleep</span> <span class="token number">2</span>
start
<span class="token punctuation">}</span>
</code></pre></div><ul><li>运行 <code>chmod +x /etc/init.d/nezha-service</code> 赋予执行权限</li><li>启动服务: <code>/etc/init.d/nezha-service enable &amp;&amp; /etc/init.d/nezha-service start</code><br><br><br><br></li></ul><h2 id="faq" tabindex="-1">FAQ <a class="header-anchor" href="#faq" aria-hidden="true">#</a></h2><h3 id="agent-有-docker-镜像吗?" tabindex="-1">Agent 有 Docker 镜像吗? <a class="header-anchor" href="#agent-有-docker-镜像吗?" aria-hidden="true">#</a></h3><p><strong>Agent 目前没有推出 Docker 镜像。</strong><br> Agent 的设计思路和 Dashboard 相反Dashboard 要尽可能不影响宿主机工作,但 Agent 则需要在宿主机中执行监控服务和运行命令。<br> 将 Agent 放入容器中确实可以继续执行监控任务,但 WebShell 等功能无法正常运行,因此不提供 Docker 镜像。</p></div></div><footer class="page-footer" data-v-7eddb2c4 data-v-07c132fc><div class="edit" data-v-07c132fc><div class="edit-link" data-v-07c132fc data-v-1ed99556><a class="link" href="https://github.com/nezhahq/nezhahq.github.io/edit/main/docs/guide/agent.md" target="_blank" rel="noopener noreferrer" data-v-1ed99556>在GitHub中编辑 <svg class="icon outbound icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15" data-v-1ed99556><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div></div><div class="updated" data-v-07c132fc><p class="last-updated" data-v-07c132fc data-v-abce3432><span class="prefix" data-v-abce3432>上次更新:</span><span class="datetime" data-v-abce3432></span></p></div></footer><div class="next-and-prev-link" data-v-7eddb2c4 data-v-38ede35f><div class="container" data-v-38ede35f><div class="prev" data-v-38ede35f><a class="link" href="/guide/dashboard" data-v-38ede35f><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="icon icon-prev" data-v-38ede35f><path d="M19,11H7.4l5.3-5.3c0.4-0.4,0.4-1,0-1.4s-1-0.4-1.4,0l-7,7c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.2-0.1,0.5,0,0.8c0.1,0.1,0.1,0.2,0.2,0.3l7,7c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3c0.4-0.4,0.4-1,0-1.4L7.4,13H19c0.6,0,1-0.4,1-1S19.6,11,19,11z"></path></svg><span class="text" data-v-38ede35f>安装 Dashboard</span></a></div><div class="next" data-v-38ede35f><a class="link" href="/guide/servers" data-v-38ede35f><span class="text" data-v-38ede35f>主机</span><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="icon icon-next" data-v-38ede35f><path d="M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"></path></svg></a></div></div></div><!--[--><!--]--></div></main></div><!----><!--]--></div>
<script>__VP_HASH_MAP__ = JSON.parse("{\"case_case1.md\":\"1e23811b\",\"case_case2.md\":\"26feef00\",\"case_case3.md\":\"867f5aea\",\"case_case4.md\":\"507956de\",\"case_index.md\":\"586ef1e5\",\"developer_index.md\":\"7d58e91a\",\"developer_l10n.md\":\"2ecd4271\",\"developer_theme.md\":\"6422a97c\",\"en_us_case_case1.md\":\"3ec9133d\",\"en_us_case_case2.md\":\"62382f74\",\"en_us_case_case3.md\":\"b825ce92\",\"en_us_case_case4.md\":\"c511860d\",\"en_us_case_index.md\":\"78b4778c\",\"en_us_developer_index.md\":\"4bf9788e\",\"en_us_developer_l10n.md\":\"c9f29000\",\"en_us_developer_theme.md\":\"4a534d77\",\"en_us_guide_agent.md\":\"bd84560c\",\"en_us_guide_agentq.md\":\"d6d516d5\",\"en_us_guide_api.md\":\"51042421\",\"en_us_guide_dashboard.md\":\"2e8bbde9\",\"en_us_guide_dashboardq.md\":\"15aeb22f\",\"en_us_guide_loginq.md\":\"cf68efdc\",\"en_us_guide_notifications.md\":\"257eabd4\",\"en_us_guide_q2.md\":\"0af394a5\",\"en_us_guide_q3.md\":\"fd0c509d\",\"en_us_guide_q4.md\":\"1f876fb8\",\"en_us_guide_q5.md\":\"256721b5\",\"en_us_guide_q6.md\":\"2566ab55\",\"en_us_guide_q7.md\":\"143a055c\",\"en_us_guide_servers.md\":\"8b7fa250\",\"en_us_guide_services.md\":\"5c26c6fe\",\"en_us_guide_settings.md\":\"821bfd88\",\"en_us_guide_tasks.md\":\"04f2d8a8\",\"en_us_index.md\":\"2c52635b\",\"guide_agent.md\":\"d63b5c68\",\"guide_agentq.md\":\"e4b7a905\",\"guide_api.md\":\"f1247c62\",\"guide_dashboard.md\":\"99368545\",\"guide_dashboardq.md\":\"23a01fff\",\"guide_loginq.md\":\"6e62eb50\",\"guide_notifications.md\":\"ab5fcfbe\",\"guide_q1.md\":\"f57259d1\",\"guide_q2.md\":\"da3e96e8\",\"guide_q3.md\":\"7690724f\",\"guide_q4.md\":\"b8c44693\",\"guide_q5.md\":\"d3d003ef\",\"guide_q6.md\":\"5b9401d2\",\"guide_q7.md\":\"8ab0d28c\",\"guide_servers.md\":\"3ebbe4be\",\"guide_services.md\":\"3c7b8dc9\",\"guide_settings.md\":\"ae220f0c\",\"guide_tasks.md\":\"d7b4e29f\",\"index.md\":\"dd47ea90\"}")</script>
<script type="module" async src="/assets/app.3817bf4e.js"></script>
</body>
</html>