简介
最近接触到了这款探针,搭建起来也很方便,之前用的 ServerStatus-Hotaru ,添加机器调整顺序不是很方便, 故此换了哪吒探针,发现哪吒添加机器添加机器很方便。现在在这里分享一下教程。
github项目地址:https://github.com/naiba/nezha
准备
- GitHub账户
- 宝塔面板
- 一个域名
开始之前,请先确定你搭建探针的域名
比如说tz.llxx.cc
作为面板的域名,还有一个tzz.llxx.cc
是用来记录面板服务器的IP
安装监控
新建OAuth App
首先打开:https://github.com/settings/developers,然后点击New OAuth App按钮。
记录下OAuth Apps的Client ID和Client secrets
执行脚本
打开github项目地址,现在有一键代码,我还是比较推荐使用国外的机器搭建哪吒探针的。https://github.com/naiba/nezha
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh -o nezha.sh && chmod +x nezha.sh
sudo ./nezha.sh #国外机
curl -L https://cdn.jsdelivr.net/gh/naiba/nezha@master/script/install.sh -o nezha.sh && chmod +x nezha.sh
CN=true sudo ./nezha.sh #国内机
放行端口,解析域名
在你的服务器上开放8088和5555端口。并且解析两个域名到服务器!
新建网站
设置ssl
设置反向代理
location /
{
proxy_pass http://127.0.0.1:8008;
proxy_set_header Host $host;
}
location /ws
{
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 $host;
}
登入后台
这时候就可以输入tz.llxx.cc访问后台了,登入后台,设置未接入CDN的面板服务器域名/IP
添加服务器
复制一键命令
复制一键命令到其他要被监控的机器,一键添加,非常方便
自定义代码
可以去版权、改LOGO、加统计代码等等。
默认主题更改进度条颜色示例
<style>
.ui.fine.progress> .bar {
background-color: pink !important;
}
</style>
默认主题修改LOGO、移除版权示例
<style>
.right.menu>a{
visibility: hidden;
}
.footer .is-size-7{
visibility: hidden;
}
.item img{
visibility: hidden;
}
</style>
<script>
window.onload = function(){
var avatar=document.querySelector(".item img")
var footer=document.querySelector("div.is-size-7")
footer.innerHTML="Powered by 你的名字"
footer.style.visibility="visible"
avatar.src="你的方形logo地址"
avatar.style.visibility="visible"
}
</script>
hotaru 主题更改背景图片示例
<style>
.hotaru-cover {
background: url(https://s3.ax1x.com/2020/12/08/DzHv6A.jpg) center;
}
</style>
报警通知
灵活通知方式
#NEZHA#
是面板消息占位符,面板触发通知时会自动替换占位符到实际消息
Body 内容是JSON
格式的:当请求类型为FORM时,值为 key:value
的形式,value
里面可放置占位符,通知时会自动替换。当请求类型为JSON时 只会简进行字符串替换后直接提交到URL
。
URL 里面也可放置占位符,请求时会进行简单的字符串替换。
参考下方的示例,非常灵活。
- 添加通知方式
- server酱示例
- 备注: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"]}
- server酱示例
- 添加一个离线报警
- 备注:离线通知
- 规则:
[{"Type":"offline","Min":0,"Max":0,"Duration":10}]
- 启用:√
- 添加一个监控 CPU 持续 10s 超过 50% 且 内存持续 20s 占用低于 20% 的报警
- 备注:CPU+内存
- 规则:
[{"Type":"cpu","Min":0,"Max":50,"Duration":10},{"Type":"memory","Min":20,"Max":0,"Duration":20}]
- 启用:√
配置tgbot
哪吒面板,顶部导航栏,点报警,添加通知方式
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
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}}]
常见问题
数据备份恢复
数据储存在 /opt/nezha
文件夹中,迁移数据时打包这个文件夹,到新环境解压。然后执行一键脚本安装即可
启用 HTTPS
使用宝塔反代或者上CDN,建议 Agent配置 跟 访问管理面板 使用不同的域名,这样管理面板使用的域名可以直接套CDN,Agent配置的域名是解析管理面板IP使用的,也方便后面管理面板迁移(如果你使用IP,后面IP更换了,需要修改每个agent,就麻烦了)
实时通道断开(WebSocket反代)
使用反向代理时需要针对 /ws
路径的 WebSocket 进行特别配置以支持实时更新服务器状态。
- Nginx(宝塔):在你的 nginx 配置文件中加入以下代码server{ #server_name blablabla… location /ws { proxy_pass http://ip:站点访问端口; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection “Upgrade”; proxy_set_header Host $host; } #其他的 location blablabla… }
- CaddyServer v1(v2无需特别配置)
proxy /ws http://ip:8008 { websocket }
原文地址:
https://www.nbmao.com/archives/5045
https://www.nbmao.com/archives/5080