This commit is contained in:
naiba committed 2023-06-19 15:56:49 +00:00
1 parent 34598694c7
commit de82899984
296 files changed
+2466 -2578

No files matched your search

+145 -158
View File
@@ -1,168 +1,155 @@
<!DOCTYPE html>
<html lang="en-US">
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Install Agent using one-click script | Nezha Monitoring</title>
<title>Nezha Monitoring | Nezha Monitoring</title>
<meta name="description" content="Nezha Monitoring is a lightweight O&M tool">
<link rel="stylesheet" href="/assets/style.0b9f658b.css">
<link rel="modulepreload" href="/assets/chunks/AlgoliaSearchBox.5f34673f.js">
<link rel="modulepreload" href="/assets/app.38e99b9a.js">
<link rel="modulepreload" href="/assets/en_US_guide_agent.md.40cde11a.lean.js">
<meta name="twitter:title" content="Install Agent using one-click script | Nezha Monitoring">
<meta property="og:title" content="Install Agent using one-click script | Nezha Monitoring">
<link rel="preload stylesheet" href="/assets/style.ac216bba.css" as="style">
<script type="module" src="/assets/app.52883806.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/framework.1625126e.js">
<link rel="modulepreload" href="/assets/chunks/theme.776be62d.js">
<link rel="modulepreload" href="/assets/en_US_guide_agent.md.ec3cceee.lean.js">
<script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
</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="/en_US/" aria-label="Nezha Monitoring, back to home" data-v-675d8756 data-v-cc01ef16><!----> Nezha Monitoring</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="/en_US/" data-v-b8818f8c>User Guide <!----></a></div></div><div class="item" data-v-eab3edfe><div class="nav-link" data-v-eab3edfe data-v-b8818f8c><a class="item" href="/en_US/case/index" data-v-b8818f8c>Community Projects <!----></a></div></div><div class="item" data-v-eab3edfe><div class="nav-link" data-v-eab3edfe data-v-b8818f8c><a class="item" href="/en_US/developer/index" data-v-b8818f8c>Development Manual <!----></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" 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 active" 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="/en_US/" data-v-b8818f8c>User Guide <!----></a></div></div><div class="item" data-v-eab3edfe><div class="nav-link" data-v-eab3edfe data-v-b8818f8c><a class="item" href="/en_US/case/index" data-v-b8818f8c>Community Projects <!----></a></div></div><div class="item" data-v-eab3edfe><div class="nav-link" data-v-eab3edfe data-v-b8818f8c><a class="item" href="/en_US/developer/index" data-v-b8818f8c>Development Manual <!----></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" 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 active" 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-eaLine truncated
</code></pre></div><ul><li><p>Select “Install_agent”</p></li><li><p>Input the communication domain name, e.g. &quot;<a href="http://data.example.com" target="_blank" rel="noopener noreferrer">data.example.com</a>&quot;</p></li><li><p>Input RPC port, default is 5555</p></li><li><p>Input the Agent Secret, which is generated when adding a server in the administration panel and can be found in the &quot; Servers &quot; page of the administration panel</p></li><li><p>Wait for the installation to complete and return to the Dashboard home page to see if the server is online<br><br></p></li></ul><h3 id="installing-agent-on-other-linux-such-as-alpine-use-oprec-not-systemd" tabindex="-1">Installing Agent on other Linux (such as alpine use oprec not systemd) <a class="header-anchor" href="#installing-agent-on-other-linux-such-as-alpine-use-oprec-not-systemd" aria-hidden="true">#</a></h3><p>Contributed by <a href="https://github.com/unknwon0054" target="_blank" rel="noopener noreferrer">unknown0054</a></p><ul><li>Edit SERVER,SECRET,TLS then run it in 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 address ip:port
SECRET=&quot;&quot; #SECRET
TLS=&quot;&quot; # Enable tls? yes:&quot;--tls&quot; no:&quot;&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;Failed to get the version number, please check if the network can connect to https://api.github.com/repos/naiba/nezha/releases/latest&quot;
return 0
else
echo -e &quot;The current latest version is: <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 download failed, please check if the network can connect to <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>Add execute permission</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>Run Nezha-Agent</p><div class="language-shell"><pre><code>rc-service nezha-agent-hy start
</code></pre></div></li><li><p>Set self-start after boot</p><div class="language-shell"><pre><code>rc-update <span class="token function">add</span> nezha-agent
</code></pre></div></li></ul><h3 id="installing-agent-on-windows" tabindex="-1">Installing Agent on Windows <a class="header-anchor" href="#installing-agent-on-windows" aria-hidden="true">#</a></h3><ul><li>Please refer to the community article:<br><a href="https://nyko.me/2020/12/13/nezha-windows-client.html" target="_blank" rel="noopener noreferrer">哪吒探针 - Windows 客户端安装</a> (Chinese)<br><br></li></ul><h3 id="installing-agent-on-synology-dsm" tabindex="-1">Installing Agent on Synology DSM <a class="header-anchor" href="#installing-agent-on-synology-dsm" aria-hidden="true">#</a></h3><ul><li><p>Please refer to the community article:<br><a href="https://blog.mitsea.com/3929551d08bd4bb0a8baa453e2d92b0c/" target="_blank" rel="noopener noreferrer">群晖 DSM 7.x 安装 哪吒监控 Agent</a> (Chinese)<br><a href="https://wl.gta5pdx.cn/archives/546/" target="_blank" rel="noopener noreferrer">哪吒探针——群晖客户端(被控端)安装教程</a> (Chinese)</p></li><li><p>Using Systemd <em>Only available on DSM7</em>:</p><div class="language-sh"><pre><code># Path of the agent binary file.
EXEC=&quot;/PATH/TO/nezha-agent&quot;
# Path of the agent&#39;s log.
LOG=&quot;${EXEC}.log&quot;
# Extend arguments, can be blank.
ARGS=&quot;--disable-command-execute&quot;
# The address of nezha server&#39;s GRPC.
SERVER=&quot;HOST_OR_IP:GRPC_PORT&quot;
# The token of host.
SECRET=&quot;APP_SECRET&quot;
# Specify `run_as` user. * Strongly suggest NOT use `root`! *
RUN_USER=&quot;nezha&quot;
# Create the service file.
cat &lt;&lt; EOF &gt; /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} &amp;&gt;&gt; ${LOG} &amp;
ExecStop=ps -fe |grep nezha-agent|awk &#39;{print \$2}&#39;|xargs kill
User=${RUN_USER}
Restart=on-abort
[Install]
WantedBy=multi-user.target
EOF
# Reload services
systemctl daemon-reload
# Start the agent service
systemctl start nezha
# Enable auto-start
systemctl enable nezha
</code></pre></div><p>‼️DO IT WHEN YOU HAVE MODIFIED THE ENVS‼️</p><p>Using <code>root</code> to execute command above, that&#39;s all.</p></li></ul><br><h3 id="installing-agent-on-macos" tabindex="-1">Installing Agent on MacOS <a class="header-anchor" href="#installing-agent-on-macos" aria-hidden="true">#</a></h3><p><em><strong>This section is adapted from <a href="https://blog.mitsea.com/e796f93db38d49e4b18df234c6ee75f5" target="_blank" rel="noopener noreferrer">Mitsea Blog</a>, with permission from the original author</strong></em><br><br></p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>If you are prompted with &quot;macOS cannot verify this app&quot; during installation, please go to system settings to allow the app to run.</p></div><ul><li>First add a server in the admin panel</li><li>Go to the <a href="https://github.com/naiba/nezha/releases" target="_blank" rel="noopener noreferrer">Release</a> page to download the Agent binary and choose whether to download the darwin amd64 or arm64 Agent depending on the CPU architecture<br> For example, download the amd64 version for Intel CPU and the arm64 version for Apple Silicon. After downloading, extract the Agent binary file, e.g. to the Download folder</li><li>Create a new file named <code>nezha_agent.plist</code> and save it, edit the contents of the file:</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>Change the path of the Agent binary here, e.g. /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>Change the path of the Agent binary here, e.g. /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>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>Communication Secret, eg: 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>Communication URL and RPC port, eg: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>Use the following command in Terminal to load the plist file into launchd<br><strong>Be sure to change the file path</strong></li></ul><div class="language-shell"><pre><code>launchctl load /Users/123/Desktop/nezha_agent.plist
</code></pre></div><ul><li>Start Service</li></ul><div class="language-shell"><pre><code>launchctl start nezha_agent
</code></pre></div><ul><li>Check if the service is running</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>Stop service and remove</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="installing-agent-on-openwrt" tabindex="-1">Installing Agent on OpenWRT <a class="header-anchor" href="#installing-agent-on-openwrt" aria-hidden="true">#</a></h3><p><strong>How to solve various problems during the installation process in one step</strong></p><ul><li>Please refer to the project:<br><a href="https://github.com/dysf888/NZ-OpenWrt" target="_blank" rel="noopener noreferrer">NZ-OpenWrt</a> (Chinese) <br></li></ul><p><strong>How to make the old version of OpenWRT/LEDE self-boot?</strong></p><ul><li>Please refer to the project:<br><a href="https://github.com/Erope/openwrt_nezha" target="_blank" rel="noopener noreferrer">哪吒监控 For OpenWRT</a> (Chinese) <br></li></ul><p><strong>How to make the new version of OpenWRT self-boot? By @艾斯德斯</strong></p><ul><li>First download the corresponding binary from the release, unzip the zip package and place it in <code>/root</code></li><li>Then run <code>chmod +x /root/nezha-agent</code> to give it execute access, create file <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 data.example.com:5555 -p secreat -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>Give it permission to execute: <code>chmod +x /etc/init.d/nezha-service</code></li><li>Start the service <code>/etc/init.d/nezha-service enable &amp;&amp; /etc/init.d/nezha-service start</code><br><br></li></ul><h2 id="faq" tabindex="-1">FAQ <a class="header-anchor" href="#faq" aria-hidden="true">#</a></h2><h3 id="is-there-a-docker-image-for-agent" tabindex="-1">Is there a Docker image for Agent? <a class="header-anchor" href="#is-there-a-docker-image-for-agent" aria-hidden="true">#</a></h3><p><strong>There is currently no Docker image for Agent.</strong><br> The Agent is designed to be the opposite of the Dashboard, in that the Dashboard is designed to work without affecting the server as much as possible, while the Agent needs to execute monitoring services and run commands in the server.<br> Putting the Agent in a container does continue to execute monitoring services, but features such as WebShell do not work, so we do not provide Docker image of the Agent.</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/en_US/guide/agent.md" target="_blank" rel="noopener noreferrer" data-v-1ed99556>Edit this page on 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>Last Updated:</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="/en_US/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>Install Dashboard</span></a></div><div class="next" data-v-38ede35f><a class="link" href="/en_US/guide/servers" data-v-38ede35f><span class="text" data-v-38ede35f>Servers</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\":\"956a40f8\",\"case_case2.md\":\"4d834a0c\",\"case_case3.md\":\"85d1e1c0\",\"case_case4.md\":\"a5fb1d3d\",\"case_case5.md\":\"1d848f08\",\"case_index.md\":\"f4b9e618\",\"developer_index.md\":\"1d920d5e\",\"developer_l10n.md\":\"d42f1824\",\"developer_theme.md\":\"32336d93\",\"en_us_case_case1.md\":\"b1099816\",\"en_us_case_case2.md\":\"33204eeb\",\"en_us_case_case3.md\":\"1efbaa2b\",\"en_us_case_case4.md\":\"4f2828a8\",\"en_us_case_index.md\":\"6aa40f9f\",\"en_us_developer_index.md\":\"5a95ac08\",\"en_us_developer_l10n.md\":\"845f37b9\",\"en_us_developer_theme.md\":\"4d44f242\",\"en_us_guide_agent.md\":\"40cde11a\",\"en_us_guide_agentq.md\":\"8375be03\",\"en_us_guide_api.md\":\"2c0446dc\",\"en_us_guide_dashboard.md\":\"be69dfc3\",\"en_us_guide_dashboardq.md\":\"efd84150\",\"en_us_guide_loginq.md\":\"9b35f520\",\"en_us_guide_notifications.md\":\"d8574f81\",\"en_us_guide_q2.md\":\"3e6e1cdd\",\"en_us_guide_q3.md\":\"0f9a8389\",\"en_us_guide_q4.md\":\"3be05c03\",\"en_us_guide_q5.md\":\"37848528\",\"en_us_guide_q6.md\":\"a9435239\",\"en_us_guide_q7.md\":\"6accd74b\",\"en_us_guide_servers.md\":\"735e9397\",\"en_us_guide_services.md\":\"be09692c\",\"en_us_guide_settings.md\":\"4066d609\",\"en_us_guide_tasks.md\":\"f66d7e8d\",\"en_us_index.md\":\"43b5665f\",\"guide_agent.md\":\"4e71a28f\",\"guide_agentq.md\":\"0c0df351\",\"guide_api.md\":\"068d6940\",\"guide_dashboard.md\":\"6e93d7e8\",\"guide_dashboardq.md\":\"f24ebc9d\",\"guide_loginq.md\":\"bcca00e1\",\"guide_notifications.md\":\"cd6f64ca\",\"guide_q1.md\":\"54c60c52\",\"guide_q2.md\":\"b9912dcd\",\"guide_q3.md\":\"62b46b60\",\"guide_q4.md\":\"6aaac407\",\"guide_q5.md\":\"d30a059b\",\"guide_q6.md\":\"074f1740\",\"guide_q7.md\":\"92ad8104\",\"guide_servers.md\":\"20577d5f\",\"guide_services.md\":\"81eefc44\",\"guide_settings.md\":\"b4021a97\",\"guide_tasks.md\":\"d014d940\",\"index.md\":\"6967ecd8\"}")</script>
<script type="module" async src="/assets/app.38e99b9a.js"></script>
<div id="app"><div class="Layout" data-v-b2cf3e0b><!--[--><!--]--><!--[--><span tabindex="-1" data-v-b8b11faa></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-b8b11faa> Skip to content </a><!--]--><!----><header class="VPNav" data-v-b2cf3e0b data-v-7e5bc4a5><div class="VPNavBar has-sidebar" data-v-7e5bc4a5 data-v-7683ced7><div class="container" data-v-7683ced7><div class="title" data-v-7683ced7><div class="VPNavBarTitle has-sidebar" data-v-7683ced7 data-v-4d981103><a class="title" href="/en_US/" data-v-4d981103><!--[--><!--]--><!----><!--[-->Nezha Monitoring<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-7683ced7><div class="curtain" data-v-7683ced7></div><div class="content-body" data-v-7683ced7><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:&#39;Meta&#39;;" data-v-7683ced7><!--[--><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-7683ced7 data-v-7f418b0f><span id="main-nav-aria-label" class="visually-hidden" data-v-7f418b0f>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/en_US/" tabindex="0" data-v-7f418b0f data-v-5e623618 data-v-8f4dc553><!--[-->User Guide<!--]--><!----></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/en_US/case/index.html" tabindex="0" data-v-7f418b0f data-v-5e623618 data-v-8f4dc553><!--[-->Community Projects<!--]--><!----></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/en_US/developer/index.html" tabindex="0" data-v-7f418b0f data-v-5e623618 data-v-8f4dc553><!--[-->Development Manual<!--]--><!----></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-7683ced7 data-v-74abcbb9 data-v-764effdf><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-764effdf><span class="text" data-v-764effdf><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="option-icon" data-v-764effdf><path d="M0 0h24v24H0z" fill="none"></path><path d=" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z " class="css-c4d79v"></path></svg> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-764effdf><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-764effdf><div class="VPMenu" data-v-764effdf data-v-e7ea1737><!----><!--[--><!--[--><div class="items" data-v-74abcbb9><p class="title" data-v-74abcbb9>English</p><!--[--><div class="VPMenuLink" data-v-74abcbb9 data-v-2f2cfafc><a class="VPLink link" href="/guide/agent.html" data-v-2f2cfafc data-v-8f4dc553><!--[-->简体中文<!--]--><!----></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-7683ced7 data-v-f6a63727><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-f6a63727 data-v-82b282f1 data-v-f3c41672><span class="check" data-v-f3c41672><span class="icon" data-v-f3c41672><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-82b282f1><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.Line truncated
<span class="line"><span style="color:#C3E88D;">#!/sbin/openrc-run</span></span>
<span class="line"><span style="color:#C3E88D;">SERVER=&quot;&quot; #Dashboard address ip:port</span></span>
<span class="line"><span style="color:#C3E88D;">SECRET=&quot;&quot; #SECRET</span></span>
<span class="line"><span style="color:#C3E88D;">TLS=&quot;&quot; # Enable tls? yes:&quot;--tls&quot; no:&quot;&quot;</span></span>
<span class="line"><span style="color:#C3E88D;">NZ_BASE_PATH=&quot;/opt/nezha&quot;</span></span>
<span class="line"><span style="color:#C3E88D;">NZ_AGENT_PATH=&quot;</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">NZ_BASE_PATH</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">/agent&quot;</span></span>
<span class="line"><span style="color:#C3E88D;">pidfile=&quot;/run/</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">RC_SVCNAME</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">.pid&quot;</span></span>
<span class="line"><span style="color:#C3E88D;">command=&quot;/opt/nezha/agent/nezha-agent&quot;</span></span>
<span class="line"><span style="color:#C3E88D;">command_args=&quot;-s </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">SERVER</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;"> -p </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">SECRET</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">TLS</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">&quot;</span></span>
<span class="line"><span style="color:#C3E88D;">command_background=true</span></span>
<span class="line"><span style="color:#C3E88D;">depend() {</span></span>
<span class="line"><span style="color:#C3E88D;"> need net</span></span>
<span class="line"><span style="color:#C3E88D;">}</span></span>
<span class="line"><span style="color:#C3E88D;">checkconfig() {</span></span>
<span class="line"><span style="color:#C3E88D;"> GITHUB_URL=&quot;github.com&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ ! -f &quot;</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">NZ_AGENT_PATH</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">/nezha-agent&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> if [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">x86_64</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;amd64&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> elif [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">i386\|i686</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;386&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> elif [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">aarch64\|armv8b\|armv8l</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;arm64&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> elif [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">arm</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;arm&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> elif [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">s390x</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;s390x&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> elif [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">riscv64</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;riscv64&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> local version=</span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">curl</span><span style="color:#C3E88D;"> -m </span><span style="color:#F78C6C;">10</span><span style="color:#C3E88D;"> -sL </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">https://api.github.com/repos/naiba/nezha/releases/latest</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">tag_name</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">head</span><span style="color:#C3E88D;"> -n </span><span style="color:#F78C6C;">1</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">awk</span><span style="color:#C3E88D;"> -F </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">:</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">{print $2}</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">sed</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">s/\&quot;//g;s/,//g;s/ //g</span><span style="color:#89DDFF;">&#39;)</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ ! -n &quot;</span><span style="color:#A6ACCD;">$version</span><span style="color:#C3E88D;">&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> version=</span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">curl</span><span style="color:#C3E88D;"> -m </span><span style="color:#F78C6C;">10</span><span style="color:#C3E88D;"> -sL </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">https://fastly.jsdelivr.net/gh/naiba/nezha/</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">option\.value</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">awk</span><span style="color:#C3E88D;"> -F </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">&#39;</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">{print $2}</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">sed</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">s/naiba\/nezha@/v/g</span><span style="color:#89DDFF;">&#39;)</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ ! -n &quot;</span><span style="color:#A6ACCD;">$version</span><span style="color:#C3E88D;">&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> version=</span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">curl</span><span style="color:#C3E88D;"> -m </span><span style="color:#F78C6C;">10</span><span style="color:#C3E88D;"> -sL </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">https://gcore.jsdelivr.net/gh/naiba/nezha/</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">option\.value</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">awk</span><span style="color:#C3E88D;"> -F </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">&#39;</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">{print $2}</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">sed</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">s/naiba\/nezha@/v/g</span><span style="color:#89DDFF;">&#39;)</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ ! -n &quot;</span><span style="color:#A6ACCD;">$version</span><span style="color:#C3E88D;">&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> echo -e &quot;Failed to get the version number, please check if the network can connect to https://api.github.com/repos/naiba/nezha/releases/latest&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> return 0</span></span>
<span class="line"><span style="color:#C3E88D;"> else</span></span>
<span class="line"><span style="color:#C3E88D;"> echo -e &quot;The current latest version is: </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">version</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> wget -t 2 -T 10 -O nezha-agent_linux_</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">os_arch</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">.zip https://</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">GITHUB_URL</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">/naiba/nezha/releases/download/</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">version</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">/nezha-agent_linux_</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">os_arch</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">.zip &gt;/dev/null 2&gt;&amp;1</span></span>
<span class="line"><span style="color:#C3E88D;"> if [[ </span><span style="color:#A6ACCD;">$?</span><span style="color:#C3E88D;"> != 0 ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> echo -e &quot;Release download failed, please check if the network can connect to </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">GITHUB_URL</span><span style="color:#89DDFF;">}${</span><span style="color:#A6ACCD;">plain</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> return 0</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> mkdir -p </span><span style="color:#A6ACCD;">$NZ_AGENT_PATH</span></span>
<span class="line"><span style="color:#C3E88D;"> chmod 755 -R </span><span style="color:#A6ACCD;">$NZ_AGENT_PATH</span></span>
<span class="line"><span style="color:#C3E88D;"> unzip -qo nezha-agent_linux_</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">os_arch</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">.zip &amp;&amp; mv nezha-agent </span><span style="color:#A6ACCD;">$NZ_AGENT_PATH</span><span style="color:#C3E88D;"> &amp;&amp; rm -rf nezha-agent_linux_</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">os_arch</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">.zip README.md</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ ! -x &quot;</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">NZ_AGENT_PATH</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">/nezha-agent&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> chmod +x </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">NZ_AGENT_PATH</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">/nezha-agent</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;">}</span></span>
<span class="line"><span style="color:#C3E88D;">start_pre() {</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ &quot;</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">RC_CMD</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">&quot; != &quot;restart&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> checkconfig || return </span><span style="color:#A6ACCD;">$?</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;">}</span></span>
<span class="line"><span style="color:#89DDFF;">EOF</span></span></code></pre></div><ul><li><p>Add execute permission</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/init.d/nezha-agent</span></span></code></pre></div></li><li><p>Run Nezha-Agent</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">rc-service</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent-hy</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span></span></code></pre></div></li><li><p>Set self-start after boot</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">rc-update</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">add</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span></code></pre></div></li></ul><h3 id="installing-agent-on-windows" tabindex="-1">Installing Agent on Windows <a class="header-anchor" href="#installing-agent-on-windows" aria-label="Permalink to &quot;Installing Agent on Windows&quot;">​</a></h3><ul><li>Please refer to the community article:<br><a href="https://nyko.me/2020/12/13/nezha-windows-client.html" target="_blank" rel="noreferrer">哪吒探针 - Windows 客户端安装</a> (Chinese)<br><br></li></ul><h3 id="installing-agent-on-synology-dsm" tabindex="-1">Installing Agent on Synology DSM <a class="header-anchor" href="#installing-agent-on-synology-dsm" aria-label="Permalink to &quot;Installing Agent on Synology DSM&quot;">​</a></h3><ul><li><p>Please refer to the community article:<br><a href="https://blog.mitsea.com/3929551d08bd4bb0a8baa453e2d92b0c/" target="_blank" rel="noreferrer">群晖 DSM 7.x 安装 哪吒监控 Agent</a> (Chinese)<br><a href="https://wl.gta5pdx.cn/archives/546/" target="_blank" rel="noreferrer">哪吒探针——群晖客户端(被控端)安装教程</a> (Chinese)</p></li><li><p>Using Systemd <em>Only available on DSM7</em>:</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># Path of the agent binary file.</span></span>
<span class="line"><span style="color:#A6ACCD;">EXEC</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">/PATH/TO/nezha-agent</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Path of the agent&#39;s log.</span></span>
<span class="line"><span style="color:#A6ACCD;">LOG</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;${</span><span style="color:#A6ACCD;">EXEC</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">.log</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Extend arguments, can be blank.</span></span>
<span class="line"><span style="color:#A6ACCD;">ARGS</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">--disable-command-execute</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># The address of nezha server&#39;s GRPC.</span></span>
<span class="line"><span style="color:#A6ACCD;">SERVER</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">HOST_OR_IP:GRPC_PORT</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># The token of host.</span></span>
<span class="line"><span style="color:#A6ACCD;">SECRET</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">APP_SECRET</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Specify `run_as` user. * Strongly suggest NOT use `root`! *</span></span>
<span class="line"><span style="color:#A6ACCD;">RUN_USER</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">nezha</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Create the service file.</span></span>
<span class="line"><span style="color:#FFCB6B;">cat</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;&lt;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">EOF</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;"> /usr/lib/systemd/system/nezha.service</span></span>
<span class="line"><span style="color:#C3E88D;">[Unit]</span></span>
<span class="line"><span style="color:#C3E88D;">Description=Nezha Agent Service</span></span>
<span class="line"><span style="color:#C3E88D;">After=network.target</span></span>
<span class="line"><span style="color:#C3E88D;">[Service]</span></span>
<span class="line"><span style="color:#C3E88D;">Type=simple</span></span>
<span class="line"><span style="color:#C3E88D;">ExecStart=/bin/nohup </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">EXEC</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">ARGS</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;"> -s </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">SERVER</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;"> -p </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">SECRET</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;"> &amp;&gt;&gt; </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">LOG</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;"> &amp;</span></span>
<span class="line"><span style="color:#C3E88D;">ExecStop=ps -fe |grep nezha-agent|awk &#39;{print </span><span style="color:#A6ACCD;">\$</span><span style="color:#C3E88D;">2}&#39;|xargs kill</span></span>
<span class="line"><span style="color:#C3E88D;">User=</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">RUN_USER</span><span style="color:#89DDFF;">}</span></span>
<span class="line"><span style="color:#C3E88D;">Restart=on-abort</span></span>
<span class="line"><span style="color:#C3E88D;">[Install]</span></span>
<span class="line"><span style="color:#C3E88D;">WantedBy=multi-user.target</span></span>
<span class="line"><span style="color:#89DDFF;">EOF</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Reload services</span></span>
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">daemon-reload</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Start the agent service</span></span>
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Enable auto-start</span></span>
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">enable</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha</span></span></code></pre></div><p>‼️DO IT WHEN YOU HAVE MODIFIED THE ENVS‼️</p><p>Using <code>root</code> to execute command above, that&#39;s all.</p></li></ul><br><h3 id="installing-agent-on-macos" tabindex="-1">Installing Agent on MacOS <a class="header-anchor" href="#installing-agent-on-macos" aria-label="Permalink to &quot;Installing Agent on MacOS&quot;">​</a></h3><p><em><strong>This section is adapted from <a href="https://blog.mitsea.com/e796f93db38d49e4b18df234c6ee75f5" target="_blank" rel="noreferrer">Mitsea Blog</a>, with permission from the original author</strong></em><br><br></p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>If you are prompted with &quot;macOS cannot verify this app&quot; during installation, please go to system settings to allow the app to run.</p></div><ul><li>First add a server in the admin panel</li><li>Go to the <a href="https://github.com/naiba/nezha/releases" target="_blank" rel="noreferrer">Release</a> page to download the Agent binary and choose whether to download the darwin amd64 or arm64 Agent depending on the CPU architecture<br> For example, download the amd64 version for Intel CPU and the arm64 version for Apple Silicon. After downloading, extract the Agent binary file, e.g. to the Download folder</li><li>Create a new file named <code>nezha_agent.plist</code> and save it, edit the contents of the file:</li></ul><div class="language-xml"><button title="Copy Code" class="copy"></button><span class="lang">xml</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">&lt;?</span><span style="color:#F07178;">xml</span><span style="color:#C792EA;"> version</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">1.0</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C792EA;"> encoding</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">UTF-8</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">?&gt;</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;!</span><span style="color:#F78C6C;">DOCTYPE</span><span style="color:#89DDFF;"> </span><span style="color:#A6ACCD;">plist</span><span style="color:#89DDFF;"> PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot; &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&gt;</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">plist</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">version</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">1.0</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">dict</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">KeepAlive</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">true</span><span style="color:#89DDFF;">/&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">Label</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">nezha_agent</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">Program</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">Change the path of the Agent binary here, e.g. /Users/123/Downloads/nezha-agent</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">ProgramArguments</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">array</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">Change the path of the Agent binary here, e.g. /Users/123/Downloads/nezha-agent</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">--password</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">Communication Secret, eg: 529664783eeb23cc25</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">--server</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">Communication URL and RPC port, eg:data.example.com:5555</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">array</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">RunAtLoad</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">true</span><span style="color:#89DDFF;">/&gt;</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">dict</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">plist</span><span style="color:#89DDFF;">&gt;</span></span></code></pre></div><ul><li>Use the following command in Terminal to load the plist file into launchd<br><strong>Be sure to change the file path</strong></li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">launchctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">load</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/Users/123/Desktop/nezha_agent.plist</span></span></code></pre></div><ul><li>Start Service</li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">launchctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha_agent</span></span></code></pre></div><ul><li>Check if the service is running</li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">launchctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">list</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha_agent</span></span></code></pre></div><ul><li>Stop service and remove</li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">launchctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">stop</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha_agent</span></span></code></pre></div><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">launchctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">remove</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha_agent</span></span></code></pre></div><br><h3 id="installing-agent-on-openwrt" tabindex="-1">Installing Agent on OpenWRT <a class="header-anchor" href="#installing-agent-on-openwrt" aria-label="Permalink to &quot;Installing Agent on OpenWRT&quot;">​</a></h3><p><strong>How to solve various problems during the installation process in one step</strong></p><ul><li>Please refer to the project:<br><a href="https://github.com/dysf888/NZ-OpenWrt" target="_blank" rel="noreferrer">NZ-OpenWrt</a> (Chinese) <br></li></ul><p><strong>How to make the old version of OpenWRT/LEDE self-boot?</strong></p><ul><li>Please refer to the project:<br><a href="https://github.com/Erope/openwrt_nezha" target="_blank" rel="noreferrer">哪吒监控 For OpenWRT</a> (Chinese) <br></li></ul><p><strong>How to make the new version of OpenWRT self-boot? By @艾斯德斯</strong></p><ul><li>First download the corresponding binary from the release, unzip the zip package and place it in <code>/root</code></li><li>Then run <code>chmod +x /root/nezha-agent</code> to give it execute access, create file <code>/etc/init.d/nezha-service</code>:</li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;">#!/bin/sh /etc/rc.common</span></span>
<span class="line"></span>
<span class="line"><span style="color:#A6ACCD;">START</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">99</span></span>
<span class="line"><span style="color:#A6ACCD;">USE_PROCD</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"></span>
<span class="line"><span style="color:#82AAFF;">start_service</span><span style="color:#89DDFF;">()</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">procd_open_instance</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">procd_set_param</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">command</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/root/nezha-agent</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-s</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">data.example.com:5555</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-p</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">secreat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-d</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">procd_set_param</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">respawn</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">procd_close_instance</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#82AAFF;">stop_service</span><span style="color:#89DDFF;">()</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">killall</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#82AAFF;">restart</span><span style="color:#89DDFF;">()</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">stop</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">sleep</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">start</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span></code></pre></div><ul><li>Give it permission to execute: <code>chmod +x /etc/init.d/nezha-service</code></li><li>Start the service <code>/etc/init.d/nezha-service enable &amp;&amp; /etc/init.d/nezha-service start</code><br><br></li></ul><h2 id="faq" tabindex="-1">FAQ <a class="header-anchor" href="#faq" aria-label="Permalink to &quot;FAQ&quot;">​</a></h2><h3 id="is-there-a-docker-image-for-agent" tabindex="-1">Is there a Docker image for Agent? <a class="header-anchor" href="#is-there-a-docker-image-for-agent" aria-label="Permalink to &quot;Is there a Docker image for Agent?&quot;">​</a></h3><p><strong>There is currently no Docker image for Agent.</strong><br> The Agent is designed to be the opposite of the Dashboard, in that the Dashboard is designed to work without affecting the server as much as possible, while the Agent needs to execute monitoring services and run commands in the server.<br> Putting the Agent in a container does continue to execute monitoring services, but features such as WebShell do not work, so we do not provide Docker image of the Agent.</p></div></div></main><footer class="VPDocFooter" data-v-c4b0d3cf data-v-face870a><!--[--><!--]--><div class="edit-info" data-v-face870a><div class="edit-link" data-v-face870a><a class="VPLink link edit-link-button" href="https://github.com/nezhahq/nezhahq.github.io/edit/main/docs/en_US/guide/agent.md" target="_blank" rel="noreferrer" data-v-face870a data-v-8f4dc553><!--[--><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="edit-link-icon" aria-label="edit icon" data-v-face870a><path d="M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"></path><path d="M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"></path></svg> Edit this page on GitHub<!--]--><!----></a></div><div class="last-updated" data-v-face870a><p class="VPLastUpdated" data-v-face870a data-v-7b3ebfe1>Last Updated: <time datetime="2023-06-19T15:56:07.000Z" data-v-7b3ebfe1></time></p></div></div><div class="prev-next" data-v-face870a><div class="pager" data-v-face870a><a class="pager-link prev" href="/en_US/guide/dashboard.html" data-v-face870a><span class="desc" data-v-face870a>Previous page</span><span class="title" data-v-face870a>Install Dashboard</span></a></div><div class="has-prev pager" data-v-face870a><a class="pager-link next" href="/en_US/guide/servers.html" data-v-face870a><span class="desc" data-v-face870a>Next page</span><span class="title" data-v-face870a>Servers</span></a></div></div></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-b2cf3e0b data-v-f7fc41f4><div class="container" data-v-f7fc41f4><!----><p class="copyright" data-v-f7fc41f4>Copyright © 2022-present Nezhahq</p></div></footer><!--[--><!--]--></div></div>
<script>__VP_HASH_MAP__ = JSON.parse("{\"case_case1.md\":\"ecc14085\",\"en_us_guide_api.md\":\"23c9cbfd\",\"en_us_guide_dashboard.md\":\"d78e0670\",\"en_us_developer_theme.md\":\"71386f12\",\"en_us_guide_notifications.md\":\"f27b667a\",\"en_us_guide_loginq.md\":\"9b2c983a\",\"en_us_guide_q2.md\":\"7d419ac0\",\"en_us_guide_q3.md\":\"413034ab\",\"en_us_guide_q4.md\":\"29c73660\",\"en_us_guide_q5.md\":\"6147bc60\",\"en_us_guide_q6.md\":\"5546f36f\",\"en_us_guide_q7.md\":\"e3e49f45\",\"en_us_guide_servers.md\":\"15cdd004\",\"en_us_guide_services.md\":\"496a9331\",\"en_us_guide_settings.md\":\"a3fde31e\",\"case_case2.md\":\"6c7d5ccf\",\"case_case3.md\":\"5e4a3d1d\",\"case_case4.md\":\"9da898b3\",\"case_case5.md\":\"8d0f657b\",\"en_us_guide_agentq.md\":\"79461295\",\"en_us_guide_agent.md\":\"ec3cceee\",\"en_us_guide_tasks.md\":\"2f23de0e\",\"en_us_index.md\":\"a2928aa3\",\"guide_agent.md\":\"aa1597de\",\"guide_agentq.md\":\"58353381\",\"guide_dashboard.md\":\"2c7ebc9c\",\"guide_dashboardq.md\":\"45324b02\",\"guide_loginq.md\":\"b86b5d13\",\"guide_notifications.md\":\"c2a46afe\",\"case_index.md\":\"490516a2\",\"developer_index.md\":\"50de2d0d\",\"developer_l10n.md\":\"97d82e33\",\"developer_theme.md\":\"3f733e73\",\"en_us_case_case1.md\":\"4184634e\",\"en_us_case_case2.md\":\"a2d0c610\",\"guide_q1.md\":\"da6990ac\",\"en_us_case_case3.md\":\"6c813a79\",\"en_us_case_index.md\":\"c59e34c7\",\"en_us_developer_index.md\":\"722364da\",\"en_us_developer_l10n.md\":\"830faa6a\",\"en_us_guide_dashboardq.md\":\"f8c0f2c4\",\"guide_q2.md\":\"dc262f4e\",\"guide_q3.md\":\"5b71ea6c\",\"guide_q4.md\":\"d3d700bd\",\"guide_q5.md\":\"8c32a6a8\",\"guide_q6.md\":\"468b73f3\",\"guide_q7.md\":\"46c4299c\",\"guide_servers.md\":\"38e933fe\",\"guide_services.md\":\"8e52c9c8\",\"guide_settings.md\":\"0b01b850\",\"guide_api.md\":\"b7dd76b3\",\"guide_tasks.md\":\"9090b413\",\"index.md\":\"c741ff17\",\"en_us_case_case4.md\":\"b17c51fa\"}")
__VP_SITE_DATA__ = JSON.parse("{\"lang\":\"zh-CN\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"appearance\":true,\"themeConfig\":{\"algolia\":{\"appId\":\"HP6QF6KMZD\",\"apiKey\":\"fb8bae9ed373d1057e0c07fcf32b3f1a\",\"indexName\":\"nezhahq\"},\"footer\":{\"copyright\":\"Copyright © 2022-present Nezhahq\"}},\"locales\":{\"root\":{\"lang\":\"zh-CN\",\"label\":\"简体中文\",\"title\":\"哪吒监控\",\"description\":\"哪吒监控是一个轻量化的运维工具\",\"link\":\"/\",\"themeConfig\":{\"lastUpdatedText\":\"上次更新\",\"editLink\":{\"pattern\":\"https://github.com/nezhahq/nezhahq.github.io/edit/main/docs/:path\",\"text\":\"在GitHub中编辑\"},\"nav\":[{\"text\":\"使用指南\",\"link\":\"/\",\"activeMatch\":\"^/$|^/guide/\"},{\"text\":\"社区项目\",\"link\":\"/case/index.html\",\"activeMatch\":\"^/case/\"},{\"text\":\"开发手册\",\"link\":\"/developer/index.html\",\"activeMatch\":\"^/developer/\"}],\"sidebar\":{\"/\":[{\"text\":\"安装手册\",\"items\":[{\"text\":\"安装 Dashboard\",\"link\":\"/guide/dashboard.html\"},{\"text\":\"安装 Agent\",\"link\":\"/guide/agent.html\"}]},{\"text\":\"管理面板配置\",\"items\":[{\"text\":\"主机\",\"link\":\"/guide/servers.html\"},{\"text\":\"服务\",\"link\":\"/guide/services.html\"},{\"text\":\"定时任务\",\"link\":\"/guide/tasks.html\"},{\"text\":\"报警通知\",\"link\":\"/guide/notifications.html\"},{\"text\":\"设置\",\"link\":\"/guide/settings.html\"},{\"text\":\"API\",\"link\":\"/guide/api.html\"}]},{\"text\":\"常见问题\",\"items\":[{\"text\":\"TG api 被墙\",\"link\":\"/guide/q1.html\"},{\"text\":\"Agent 无法启动/上线 查看日志并进行排错的步骤\",\"link\":\"/guide/q2.html\"},{\"text\":\"反向代理 gRPC 端口的步骤\",\"link\":\"/guide/q3.html\"},{\"text\":\"实时通道断开/在线终端连接失败\",\"link\":\"/guide/q4.html\"},{\"text\":\"进行数据迁移、备份和恢复的步骤\",\"link\":\"/guide/q5.html\"},{\"text\":\"设置每月重置流量统计的步骤\",\"link\":\"/guide/q6.html\"},{\"text\":\"自定义 Agent 监控项目的步骤\",\"link\":\"/guide/q7.html\"}]},{\"text\":\"排障指南\",\"items\":[{\"text\":\"Dashboard 相关\",\"link\":\"/guide/dashboardq.html\"},{\"text\":\"Agent 相关\",\"link\":\"/guide/agentq.html\"},{\"text\":\"登录相关\",\"link\":\"/guide/loginq.html\"}]}],\"/guide/\":[{\"text\":\"安装手册\",\"items\":[{\"text\":\"安装 Dashboard\",\"link\":\"/guide/dashboard.html\"},{\"text\":\"安装 Agent\",\"link\":\"/guide/agent.html\"}]},{\"text\":\"管理面板配置\",\"items\":[{\"text\":\"主机\",\"link\":\"/guide/servers.html\"},{\"text\":\"服务\",\"link\":\"/guide/services.html\"},{\"text\":\"定时任务\",\"link\":\"/guide/tasks.html\"},{\"text\":\"报警通知\",\"link\":\"/guide/notifications.html\"},{\"text\":\"设置\",\"link\":\"/guide/settings.html\"},{\"text\":\"API\",\"link\":\"/guide/api.html\"}]},{\"text\":\"常见问题\",\"items\":[{\"text\":\"TG api 被墙\",\"link\":\"/guide/q1.html\"},{\"text\":\"Agent 无法启动/上线 查看日志并进行排错的步骤\",\"link\":\"/guide/q2.html\"},{\"text\":\"反向代理 gRPC 端口的步骤\",\"link\":\"/guide/q3.html\"},{\"text\":\"实时通道断开/在线终端连接失败\",\"link\":\"/guide/q4.html\"},{\"text\":\"进行数据迁移、备份和恢复的步骤\",\"link\":\"/guide/q5.html\"},{\"text\":\"设置每月重置流量统计的步骤\",\"link\":\"/guide/q6.html\"},{\"text\":\"自定义 Agent 监控项目的步骤\",\"link\":\"/guide/q7.html\"}]},{\"text\":\"排障指南\",\"items\":[{\"text\":\"Dashboard 相关\",\"link\":\"/guide/dashboardq.html\"},{\"text\":\"Agent 相关\",\"link\":\"/guide/agentq.html\"},{\"text\":\"登录相关\",\"link\":\"/guide/loginq.html\"}]}],\"/case/\":[{\"text\":\"社区项目\",\"items\":[{\"text\":\"1. 搭建哪吒 Telegram 机器人\",\"link\":\"/case/case1.html\"},{\"text\":\"2. 使用Siri语音运行快捷指令查询服务器状态\",\"link\":\"/case/case2.html\"},{\"text\":\"3. 自建多用户多语言 Telegram 服务器状态查询机器人\",\"link\":\"/case/case3.html\"},{\"text\":\"4. Fake-agent,监控数据作弊器\",\"link\":\"/case/case4.html\"},{\"text\":\"5. Nezha server over Argo tunnel 白嫖利器\",\"link\":\"/case/case5.html\"}]}],\"/developer/\":[{\"text\":\"开发手册\",\"items\":[{\"text\":\"创建新主题\",\"link\":\"/developer/theme.html\"},{\"text\":\"l10n\",\"link\":\"/developer/l10n.html\"}]}]}}},\"en_US\":{\"lang\":\"en-US\",\"label\":\"English\",\"title\":\"Nezha Monitoring\",\"description\":\"Nezha Monitoring is a lightweight O&M tool\",\"link\":\"/en_US/\",\"themeConfig\":{\"lastUpdatedText\":\"Last Updated\",\"editLink\":{\"text\":\"Edit this page on GitHub\",\"pattern\":\"https://github.com/nezhahq/nezhahq.github.io/edit/main/docs/:path\"},\"nav\":[{\"text\":\"User Guide\",\"link\":\"/en_US/\",\"activeMatch\":\"^/en_US/guide/\"},{\"text\":\Line truncated
</body>
</html>