
准备工作
搭建一个哪吒监控,你需要:
一台可以连接公网的 VPS,防火墙和安全策略需要放行 8008 和 5555 端口,否则会无法访问和无法接收数据。单核 512MB 内存的服务器配置就足以满足大多数使用场景
一个已经设置好 A 记录,指向 Dashboard 服务器 ip 的域名
TIP
如果你想使用 CDN,请准备两个域名,一个配置好 CDN 用作公开访问,CDN 需要支持WebSocket 协议;另一个域名不要使用 CDN,用作 Agent 端与 Dashboard 的通信
本文档分别以 “cdn.example.com” 和 “data.example.com” 两个域名来演示
一个 Github 账号(或:Gitlab、Jihulab、Gitee)
本文档将以宝塔面板反代面板的过程作为范例,随着未来版本的变化,部分功能的入口可能会发生改变,本文档仅供参考
WARNING
本项目并不依赖宝塔,你可以选择使用你喜欢的任何服务器面板,如果你能力足够,可以手动安装 NginX 或 Caddy 来配置 SSL 和反代。如果你认为没有必要使用 80、443 端口来访问 Dashboard,你甚至不需要安装 NginX 就可以直接使用安装脚本。
获取 Github/Jihulab 的 Client ID 和密钥
哪吒监控接入 Github、Gitlab、Jihulab、Gitee 作为后台管理员账号
Application name – 随意填写
Homepage URL – 填写面板的访问域名,如:”http://cdn.example.com”
Authorization callback URL – 填写回调地址,如:”http://cdn.example.com/oauth2/callback”
JihuLab 的应用创建入口为:https://jihulab.com/-/profile/applications
在服务器中安装 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://jihulab.com/nezha/dashboard/-/raw/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh
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
来打开管理脚本
配置反向代理
自定义一个代理名称,在下方“目标 URL”中填入 http://ip:8008 然后点击“保存”
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
}
在宝塔面板中配置 SSL
正如在其他网站中配置 SSL 证书一样,进入站点设置中的 “SSL”,你可以选择自动申请 Let´s Encrypt 证书或手动配置已有的证书
完成 SSL 的设置后,你需要回到 https://github.com/settings/developers ,编辑之前创建的验证应用程序,将之前我们填入的 “Homepage URL” 和 “Authorization callback URL” 中的域名全部从http改为https,如:”https://cdn.example.com” 和 “https://cdn.example.com/oauth2/callback” ,不更改此项可能会导致你无法登录面板后台
配置Tg机器人、任务与报警
灵活通知方式
#NEZHA# 是面板消息占位符,面板触发通知时会自动替换占位符到实际消息
Body 内容是JSON 格式的:当请求类型为FORM时,值为 key:value 的形式,value 里面可放置占位符,通知时会自动替换。当请求类型为JSON时 只会简进行字符串替换后直接提交到URL。
URL 里面也可放置占位符,请求时会进行简单的字符串替换。
添加通知方式
备注:server酱
URL:https://sc.ftqq.com/SCUrandomkeys.send?text=#NEZHA#
请求方式: GET
请求类型: 默认
Body: 空
wxpusher示例
备注: wxpusher
URL:http://wxpusher.zjiecode.com/api/send/message
请求方式: POST
请求类型: JSON
Body:
{"appToken":"你的appToken","topicIds":[应用topicID],"content":"#NEZHA#","contentType":"1","uids":["你的uid"]}
哪吒面板,顶部导航栏,点报警,添加通知方式
https://api.telegram.org/botXXXXXX/sendMessage?chat_id=YYYYYY&text=#NEZHA#
参数获取说明:botXXXXXX 中的 XXXXXX 是在 telegram 中关注官方 @Botfather ,输入/newbot ,创建新的机器人(bot)时,会提供的 token(在提示 Use this token to access the HTTP API:后面一行)这里 'bot' 三个字母不可少。创建 bot 后,需要先在 telegram 中与 BOT 进行对话(随便发个消息),然后才可用 API 发送消息。YYYYYY 是 telegram 用户的数字 ID。与机器人@userinfobot 对话可获得。
然后添加,报警规则,以下表示小鸡离线10s后就会报警通知到tgbot
[{"Type":"offline","Duration":10}]
备注:离线通知
[{"Type":"offline","Min":0,"Max":0,"Duration":10}]
备注:CPU+内存
[{"Type":"cpu","Min":0,"Max":50,"Duration":10},{"Type":"memory","Min":20,"Max":0,"Duration":20}]
报警规则说明
基本规则
type 、cpu、memory、swap、disk、net_in_speed 入站网速、net_out_speed 出站网速、net_all_speed 双向网速、transfer_in 入站流量、transfer_out 出站流量、transfer_all 双向流量、offline 离线监控、load1、load5、load15 负载、process_count 进程数 目前取线程数占用资源太多,暂时不支持
tcp_conn_count、udp_conn_count 连接数、duration:持续秒数,秒数内采样记录 30% 以上触发阈值才会报警(防数据插针)、min/max
流量、网速类数值 为字节(1KB=1024B,1MB = 1024*1024B)内存、硬盘、CPU 为占用百分比
离线监控无需设置
cover [{"type":"offline","duration":10, "cover":0, "ignore":{"5": true}}]
0 监控所有,通过 ignore 忽略特定服务器
1 忽略所有,通过 ignore 监控特定服务器
ignore: {"1": true, "2":false} 特定服务器,搭配 cover 使用
特殊:任意周期流量报警
可以用作月流量报警type
transfer_in_cycle 周期内的入站流量
transfer_out_cycle 周期内的出站流量
transfer_all_cycle 周期内双向流量和
cycle_start 统计周期开始日期(可以是你机器计费周期的开始日期),RFC3339 时间格式,例如北京时间为2022-01-11T08:00:00.00+08:00
cycle_interval 每隔多少个周期单位(例如,周期单位为天,该值为 7,则代表每隔 7 天统计一次)
cycle_unit 统计周期单位,默认hour,可选(hour, day, week, month, year)
min/max、cover、ignore 参考基本规则配置
示例: ID 为 3 的服务器(ignore 里面定义),以每月 15 号为统计周期,周期内统计的出站月流量 达到 1TB 时报警
[{"type":"transfer_out_cycle","max":1000000000000,"cycle_start":"2022-01-11T08:00:00.00+08:00","cycle_interval":1,"cycle_unit":"month","cover":1,"ignore":{"3":true}}]
配置哪吒主题


1.基于官方原版主题重新排版
2.解决移动端卡片列表点击最后两个卡片右上角的图标时,发生的页面位置跳转问题
3.固定卡片宽度,栅格化(若剩余宽度不足以容下一个卡片,则换行显示)解决原版主题页面宽度变小后仍然制一行显示4个导致布局错误
4.解决弹出看卡片位置不合适导致被顶部菜单栏遮挡问题
5.增加一些我常用的主机信息显示在卡片上,方便查看(不爱喜欢可以自行修改哈)
6.底部版权信息可以在template文件夹里的footer.html里更改7.swap未开启显示提示
1.template里面的文件解压出来放到服务端/opt/nezha/dashboard/theme-custom/template目录里面
2.重启哪吒面板服务
3.在哪吒面板后台主题选择Custom(local)
4.将css.txt里面的CSS样式代码复制到哪吒面板后台的“自定义代码”文本框里
1.站点图标header.html文件的第17行,替换掉https://cdn.amzayo.top/static/public/luban/luban_head.png
2.页面左上角logomenu.html文件的第5行,替换掉https://cdn.amzayo.top/static/public/luban/test_head.e7b54515.png
3.底部版权信息footer.html文件的第4到8行,依照demo底部的文字按需替换
主题下载