【实用Docker项目】让你直观监管服务器状态-哪吒面板
本文最后更新于 2024-08-03,
若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益, 请联系我 删除。
本站只有Telegram群组为唯一交流群组, 点击加入
文章内容有误?申请成为本站文章修订者或作者? 向站长提出申请
最近在使用云服务器的时候发现服务器太多了有点不太好管理,不好直观的看见服务器资源占用情况。于是找到了一款面板用来监管和控制每台服务器。接下来介绍(ne-zha)哪吒面板的搭建和使用。
安装Docker🐳
效果预览
项目地址&效果传送门
项目地址:https://github.com/naiba/nezha
效果预览:https://status.poiblog.com
服务面板端搭建方法
获取 Github/Jihulab 的 Client ID 和密钥
哪吒监控接入 Github、Gitlab、Jihulab、Gitee 作为后台管理员账号
- 首先我们需要新建一个验证应用,以 Github 为例,登录 Github 后,打开 https://github.com/settings/developers ,依次选择“OAuth Apps” - “New OAuth App”
Application name
- 随意填写
Homepage URL
- 填写面板的访问域名,如:"http://cdn.example.com"
Authorization callback URL
- 填写回调地址,如:"http://cdn.example.com/oauth2/callback" - 点击 “Register application”
- 保存页面中的 Client ID,然后点击 “Generate a new client secret“,创建一个新的 Client Secret,新建的密钥仅会显示一次,请妥善保存
- JihuLab 的应用创建入口为:https://jihulab.com/-/profile/applications
Redirect URL
中应填入回调地址- 在下方
范围
中勾选read_user
和read_api
- 创建完成后,保存好应用程序 ID 和密码
在服务器中安装 Dashboard
- 在面板服务器中,运行安装脚本:
bash
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
如果你的面板服务器位于中国大陆,可以使用镜像:
bash
curl -L https://gitee.com/naibahq/nezha/raw/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh
- 等待Docker安装完毕后,分别输入以下值:
OAuth提供商
- Github,Gitlab,Jihulab,Gitee 中选择一个
Client ID
- 之前保存的 Client ID
Client Secret
- 之前保存的密钥
用户名
- OAuth 提供商中的用户名
站点标题
- 自定义站点标题
访问端口
- 公开访问端口,可自定义,默认 8008
Agent的通信端口
- Agent与Dashboard的通信端口,默认 5555 - 输入完成后,等待拉取镜像
安装结束后,如果一切正常,此时你可以访问域名+端口号,如 “http://cdn.example.com:8008” 来查看面板 - 将来如果需要再次运行脚本,可以运行:
bash
./nezha.sh
来打开管理脚本
配置反向代理
- 在宝塔面板中新建一个站点,域名填写公开访问域名,如 “http://cdn.example.com“ ,然后点击“设置”进入站点设置选项,选择“反向代理” - “新建反向代理”
- 自定义一个代理名称,在下方“目标 URL”中填入
http://127.0.0.1
然后点击“保存” - 打开刚刚新建的反向代理右边的“配置文件”,将配置文件替换为以下内容:
nginx
#PROXY-START/
location / {
proxy_pass http://127.0.0.1:8008;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
}
location ~ ^/(ws|terminal/.+)$ {
proxy_pass http://127.0.0.1:8008;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
}
#PROXY-END/
- 点击“保存”
现在,你应该可以直接使用域名,如:“http://cdn.example.com“ 来访问面板了
扩展内容:
- CaddyServer v1(v2 无需特别配置)
proxy /ws http://ip:8008 { websocket header_upstream -Origin } proxy /terminal/* http://ip:8008 { websocket header_upstream -Origin }
FAQ
启用HTTPS后/terminal或/ws不能正常连接怎么办?
常常是由于证书不完整造成的,请在agent运行参数中添加-d,若log中有x509:certificate signed by unknown authority,更换完整证书则可100%解决该问题。
我对面板提供的数据修改/增加功能不满意,我想要自己修改/增加数据怎么办?
常见于批量插入 Agent 等需求中,可以直接修改数据库。
请注意,数据库中并非什么都可以修改,错误的修改会导致数据混乱无法启动 Dashboard,请勿随意修改数据库!
DANGER
再重复一遍,请勿随意修改数据库!
如需要在数据库中修改数据,请先停止面板容器再修改。
数据库类型是 sqlite3,位于 /opt/nezha/dashboard/data/sqlite.db
,修改前请备份
数据库中各表/列是什么意思?
文档不提供数据库解释,有能力修改数据库的稍加分析应该就足以看懂。
Dashboard 会自动更新吗?
Agent通常情况下会自动更新,但Dashboard并不会,需要手动更新。
如何更新 Dashboard?
运行脚本 ./nezha.sh
,选择重启面板并更新
监控端使用方法
一键安装 Agent
目前哪吒监控已支持在 Windows 和 Linux上一键安装 Agent,遵循本文档的步骤,你可以很轻松的在服务器上部署它
准备工作
你需要提前在管理面板中设置好通信域名,此域名不可以接入CDN,这里以前面提到过的示例通信域名 “data.example.com” 来做演示
进入后台管理面板,转到“设置”页,在“未接入 CDN 的面板服务器域名/IP”项中填入通信域名,然后点击"保存"
在 Linux 中一键安装 (Ubuntu、Debian、CentOS)
- 首先在管理面板中添加一台服务器
- 点击新添加的服务器旁,绿色的 Linux 图标按钮,复制一键安装命令
- 在被控端服务器中运行复制的一键安装命令,等待安装完成后返回到 Dashboard 主页查看服务器是否上线
在 Windows 中一键安装
- 首先在管理面板中添加一台服务器
- 点击新添加的服务器旁,绿色的 Windows 图标按钮,复制一键安装命令
- 进入 Windows 服务器,运行 PowerShell,在 PowerShell 中运行复制的安装命令
- 如遇到确认「执行策略变更」请选择 Y
- 等待安装完成后返回 Dashboard 主页查看服务器是否上线
其他方式安装 Agent
在 Linux 中安装 Agent (Ubuntu、Debian、CentOS)
- 首先在管理面板中添加一台服务器
- 在被控服务器中,运行脚本(位于中国大陆的服务器请使用镜像):
bash
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
如果你的被控服务器位于中国大陆,可以使用镜像:
bash
curl -L https://gitee.com/naibahq/nezha/raw/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh
- 选择“安装监控 Agent”
- 输入通信域名,如:”data.example.com“
- 输入面板通信端口(RPC端口),默认为 5555
- 输入 Agent 密钥,Agent 密钥在管理面板中添加服务器时生成,可以在管理面板中的“主机”页中找到
- 等待安装完成后返回 Dashboard 主页查看服务器是否上线
在Windows 客户端安装 Agent
-
设置环境变量
下载软件后,解压到任意位置,然后按 win+R 打开运行窗口,输入 sysdm.cpl 打开系统属性–高级–环境变量–系统变量–Path–在最后把刚才的 nssm 目录加到最后,注意: 和前面变量之间用半角; 分开 -
设置 NSSM
管理员启动 CMD,输入nssm install <servername> 如:nssm install nezha
-s {Serverip}:{Port} -p {AgentKey} -d
自己对应修改,填写完毕后, 点击 install servce
-s 127.0.0.1:5555 -p 52a1c9abbe -d
此处更正:去掉{},确实可能会带给一些网友错误信息。
其中 127.0.0.1是你面板的IP或者域名(无CDN) 5555是面板的端口。
3.** 启动服务**
此时退回到 CMD 界面,nssm start nezha, 然后按 win+R 打开运行窗口,输入 services.msc,查看是否有叫 nezha 的服务,然后查看启动情况,如果失败了,请查看一下配置是否出错
4. 以下列出一些 nssm 命令:
1. 安装服务命令
nssm install <servicename>
nssm install <servicename> <program>
nssm install <servicename> <program> [<arguments>]
2. 删除服务
nssm remove
nssm remove <servicename>
nssm remove <servicename> confirm
3. 启动、停止服务
nssm start <servicename>
nssm stop <servicename>
nssm restart <servicename>
4. 查询服务状态
nssm status <servicename>
5. 服务控制命令
nssm pause <servicename>
nssm continue <servicename>
nssm rotate <servicename>
**由于 GO 不再支持低版本 Windows 系统,哪吒探针在低版本 Windows 上是不能启动的。**如下图:
NSSM下载地址
https://nssm.cc/ci/nssm-2.24-101-g897c7ad.zip
在 群晖DSM 中安装 Agent
- 先到项目地址下载资源:传送门
- 下载符合自己群晖 CPU 架构的 Agent 客户端,例如intel 的cpu,选择下载nezha-agent_linux_amd64.zip
- 解压后,把里面的二进制文件随便放到一个地方
- 打开群晖远程管理功能,SSH 到群晖,使用
sudo -i
切换到 root 账号 - 找到刚才放进去的文件,共享文件夹一般在 /volume1 下面。刚才我是放在了 AppData 这个共享文件夹里,那二进制文件就在 /volume1/AppData 下
准备启动
首先要手动执行下二进制文件,确认使用正常。
- 在 Dashboard 里创建一个新设备,获取链接密码
- 进到 agent 所在文件夹后,通过执行 ./nezha-agent 可以查看使用帮助
- 基本上指定一下服务器地址和密码即可,命令为
./nezha-agent -s <Dashboard服务器地址>:<端口> -p <连接密码>
执行后,没报错,并且在 Web 上能看到信息就可以
记下自己的执行命令,并把 ./
替换成绝对路径,比如我的文件放在 /volume1/AppData
下,那我的执行命令就是
/volume1/AppData/nezha-agent -s <Dashboard服务器地址>:<端口> -p <连接密码>
配置服务
直接执行命令虽然能用,但是一关窗口就停止运行了。丢到 screen 里也不行,因为 Agent 会自动更新,更新时会停止进程。DSM 7 内置 systemctl 命令,可以很方便设置为系统服务,保活进程。
- 在
/usr/lib/systemd/system
下创建一个nezha-agent.service
文本文件
vim /usr/lib/systemd/system/nezha-agent.service
内容如下
[Unit]
Description=Nezha Agent
After=syslog.target[Service]
Type=simple
User=root
Group=root
ExecStart=<刚才记下的执行命令>
Restart=always[Install]
WantedBy=multi-user.target
- 加载配置文件
systemctl daemon-reload
- 启动服务
systemctl enable nezha-agent
systemctl start nezha-agent
- 查看状态
systemctl status nezha-agent
出现 Active:active(running)
即可
在 MacOS 中安装 Agent
- 首先在管理面板中添加一台服务器
- 前往 Release 页下载 Agent 二进制文件,根据 CPU 架构选择下载 darwin amd64 还是 arm64 的 Agent
如 Intel CPU 下载 amd64,Apple Silicon 下载 arm64 版本。下载完成后解压 Agent 二进制文件,如解压到下载文件夹 - 新建一个名为
nezha_agent.plist
的文件并保存,修改文件内容如下:
xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>nezha_agent</string>
<key>Program</key>
<string>在这里修改 Agent 二进制文件的的路径,如:/Users/123/Downloads/nezha-agent</string>
<key>ProgramArguments</key>
<array>
<string>在这里修改 Agent 二进制文件的的路径,同上</string>
<string>--password</string>
<string>通信密钥,如:529664783eeb23cc25</string>
<string>--server</string>
<string>通信网址和RPC端口,如:data.example.com:5555</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
- 在 Terminal 中使用下面的命令加载 plist 文件到 launchd 里,注意替换文件路径
shell
launchctl load /Users/123/Desktop/nezha_agent.plist
- 启动进程
shell
launchctl start nezha_agent
- 检查进程是否运行
shell
launchctl list | grep nezha_agent
- 停止进程并移除
shell
launchctl stop nezha_agent
shell
launchctl remove nezha_agent
在 OpenWRT 中安装 Agent
- 首先在 release 下载对应的二进制解压 zip 包后放置到
/root
- 运行
chmod +x /root/nezha-agent
赋予执行权限,然后创建/etc/init.d/nezha-service
:
shell
#!/bin/sh /etc/rc.common
START=99
USE_PROCD=1
start_service() {
procd_open_instance
procd_set_param command /root/nezha-agent -s 面板通信地址:端口 -p 秘钥 -d
procd_set_param respawn
procd_close_instance
}
stop_service() {
killall nezha-agent
}
restart() {
stop
sleep 2
start
}
- 运行
chmod +x /etc/init.d/nezha-service
赋予执行权限 - 启动服务:
/etc/init.d/nezha-service enable && /etc/init.d/nezha-service start
反向代理
参考教程:安装及使用
⚠️Nginx Proxy Manager(以下简称NPM)会用到80、443端口,所以本机不能占用(比如原来就有Nginx)
互联网使用请确保完成了域名解析