Nezha Monitoring
Nezha Monitoring
哪吒监控:开源、轻量、易用的服务器监控、运维工具
提示
结合视频食用更香!油管B站 如果您正在使用TrueNAS,想把哪吒监控安装到APP里面,可以查看我的《TrueNAS Scale终极教程》。 这里只记录我所用到的功能,更多详细内容请查看官方文档
0x01 安装
接入GitHub作为后台管理员账号
- 打开Developer Settings,依次选择
OAuth Apps-New OAuth App新建授权应用。 - 填写应用信息
Application name- 随意填写Homepage URL- 填写面板的访问域名,如:"https://bigdata.icu/"Authorization callback URL- 填写回调地址,如:"https://bigdata.icu/oauth2/callback"
Register application注册应用
运行面板安装脚本
# GitHub 源
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
# Gitee 源
curl -L https://gitee.com/naibahq/nezha/raw/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh填写相关信息
请输入 OAuth2 提供商(github/gitlab/jihulab/gitee,默认 github):- 直接回车,默认github请输入 Oauth2 应用的 Client ID:- 输入刚才GitHub创建的授权应用的Client ID请输入 Oauth2 应用的 Client Secret:- 点击授权应用中的Generate a new client secret请输入 GitHub/Gitee 登录名作为管理员,多个以逗号隔开:- 填写你的用户名,不是你登陆的账号或者自定义的别名,比如我的项目地址是 https://github.com/bihell,后面的bihell就是用户名。请输入站点标题:- 随意输入站点访问端口: (默认 8008)- 服务面板的访问端口请输入用于 Agent 接入的 RPC 端口: (默认 5555)- 客户端和服务面板的通讯端口
0x02 Docker 部署文件
提示
如果有自己的Docker服务器,不想使用官方的一键脚本。那么直接修改配置文件/data/config.yaml把oauth2该为自己的,然后部署即可。
如果你正在使用TrueNAS,或者对NAS感兴趣,那么可以参考我《TrueNAS Scale终极教程》来自定义APP安装哪吒监控。
配置文件地址:https://github.com/bihell/nezha-docker
0x03 反代配置
#PROXY-START/
location / {
proxy_pass http://192.168.50.116:8008;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
}
location ~ ^/(ws|terminal/.+)$ {
proxy_pass http://192.168.50.116: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/0x04 Agent 设置
设定Agent数据传输域名/IP
Settings->Dashboard Server Domain/IP without CDN
在 OpenWRT 中安装 Agent
- 下载release的二进制包,解压到
/opt,运行chmod +x /opt/nezha-agent赋予执行权限 - 创建
/etc/init.d/nezha-service:
#!/bin/sh /etc/rc.common
START=99
USE_PROCD=1
start_service() {
procd_open_instance
procd_set_param command /opt/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
自定义的网卡和分区
执行/opt/nezha/agent/nezha-agent --edit-agent-config
其他运行参数
编辑/etc/systemd/system/nezha-agent.service然后在 ExecStart= 这一行的末尾加上参数
参数清单:
--report-delay控制系统信息上报的间隔,默认为 1 秒,可以设置为 3 来进一步降低 agent 端系统资源占用(配置区间 1-4)--skip-conn不监控连接数,推荐 机场/连接密集型 服务器或CPU占用较高的服务器设置--skip-procs不监控进程数,也可以降低 Agent 占用--disable-auto-update禁止 自动更新 Agent(安全特性)--disable-force-update禁止 强制更新 Agent(安全特性)--disable-command-execute禁止在 Agent 上执行定时任务、打开在线终端(安全特性)--tls启用 SSL/TLS 加密(使用 nginx 反向代理 Agent 的 grpc 连接,并且 nginx 开启 SSL/TLS 时,需要启用该项配置)
重启服务:
# 手动编辑
sudo vim /etc/systemd/system/nezha-agent.service
sudo systemctl daemon-reload
sudo systemctl restart nezha-agent
sudo systemctl status nezha-agent
# 直接修改,禁用Agent自动更新命令
sed -i '/^ExecStart=/ {/"--disable-auto-update"/! s/$/ "--disable-auto-update"/}' /etc/systemd/system/nezha-agent.service && systemctl daemon-reload0x05 延迟监控
| 地区 | 电信 | 移动 | 联通 | 教育 |
|---|---|---|---|---|
| 上海 | 202.96.209.133 | 221.183.90.237 | 210.22.97.1 | 202.120.2.119 |
| 北京 | 49.7.37.74 | 112.34.111.194 | 111.206.209.44 | 166.111.4.100 |
| 广州 | 183.47.126.35 | 120.233.18.250 | 157.148.58.29 | 202.116.64.8 |
| 深圳 | 218.17.11.168 | 120.196.165.24 | 58.250.90.114 | |
| 河北 | 27.185.242.215 | 111.62.229.100 | 61.182.138.156 | |
| 山西 | 1.71.157.41 | 183.201.244.91 | 60.221.18.41 | |
| 辽宁 | 123.184.58.41 | 36.131.156.145 | 218.61.211.132 | |
| 吉林 | 123.172.127.217 | 111.27.127.176 | 122.143.8.41 | |
| 黑龙江 | 42.101.84.132 | 111.42.190.25 | 113.7.211.140 | |
| 江苏 | 58.215.210.220 | 36.156.92.132 | 122.96.235.165 | |
| 浙江 | 115.220.14.91 | 117.147.213.41 | 101.69.194.224 | |
| 安徽 | 223.247.108.251 | 112.29.198.100 | 112.132.208.41 | |
| 福建 | 106.126.10.28 | 112.50.96.88 | 36.248.48.139 | |
| 江西 | 106.227.22.132 | 117.168.150.249 | 116.153.69.224 | |
| 山东 | 144.123.160.140 | 120.220.145.91 | 112.240.56.143 | |
| 河南 | 171.15.110.220 | 111.7.99.220 | 123.6.65.101 | |
| 湖北 | 111.170.8.60 | 111.47.131.101 | 122.189.226.138 | |
| 湖南 | 113.240.117.108 | 120.226.192.91 | 116.162.28.220 | |
| 广东 | 183.36.23.111 | 183.240.65.191 | 112.90.211.100 | |
| 海南 | 124.225.43.220 | 111.29.29.219 | 153.0.226.35 | |
| 四川 | 118.123.218.220 | 183.220.151.41 | 101.206.163.49 | |
| 贵州 | 58.42.61.132 | 61.243.18.220 | 117.187.254.132 | |
| 云南 | 222.221.102.220 | 36.147.44.219 | 14.204.150.41 | |
| 陕西 | 124.115.14.100 | 111.19.148.100 | 123.139.127.132 | |
| 甘肃 | 118.182.228.91 | 117.157.16.41 | 59.81.94.53 | |
| 青海 | 223.221.216.219 | 111.12.152.170 | 116.177.237.137 | |
| 内蒙古 | 110.76.186.70 | 117.161.76.41 | 116.114.98.41 | |
| 广西 | 222.217.93.55 | 36.136.112.41 | 171.39.5.51 | |
| 西藏 | 113.62.176.89 | 117.180.234.41 | 43.242.165.35 | |
| 宁夏 | 222.75.44.220 | 111.51.155.214 | 116.129.226.28 | |
| 新疆 | 110.157.243.45 | 36.189.208.164 | 116.178.77.40 | |
| 天津 | 42.81.98.35 | 111.31.236.35 | 116.78.119.56 | |
| 重庆 | 119.84.131.101 | 221.178.81.101 | 221.7.92.98 |
0x06 Dashboard 配置
懒人配置生成器: https://nz.sina.us.kg/
调整最大TCPPing值
修改文件:/nezha/data/config.yaml,调整MaxTCPPingValue值。
隐藏服务中的状态文字
Settings->Custom Codes (Style and Script)
<style>
.service-status .delay-today-text{display: none;visibility: hidden;}
</style>设置页面宽度
<style>
.container {
width: 1540px;
}
</style>隐藏地区图标
在 console 里面执行以下js语句
document.querySelectorAll("i.fi").forEach(el => el.classList = [])设置主题默认为分组模式
<script>
localStorage.setItem('showGroup', 'true');
</script>0x07 服务器监控
基本规则
type:可选取一个或多个类型,如在一个规则中选择了多个类型,需要同时满足所有选择的类型才会触发通知(可参考后面的示例)cpu、memory、swap、disknet_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:0监控所有,通过ignore忽略特定服务器1忽略所有,通过ignore监控特定服务器- 例如:
[{"type":"offline","duration":10, "cover":0, "ignore":{"5": true}}]
ignore: 选择忽略特定服务器,搭配cover使用,内容为服务器 id 和布尔值,例如:{"1": true, "2":false}
流量监控
属性:
type:transfer_in_cycle周期内的入站流量transfer_out_cycle周期内的出站流量transfer_all_cycle周期内双向流量和
cycle_start: 统计周期开始日期(可以是你机器计费周期的开始日期),时间格式为RFC3339,例如北京时间为2022-01-11T08:00:00.00+08:00cycle_interval:每隔多少个周期单位(例如,周期单位为天,该值为 7,则代表每隔 7 天统计一次)cycle_unit统计周期单位,默认hour,可选(hour,day,week,month,year)min/max、cover、ignore参考基本规则配置
配置:
[{"type":"transfer_all_cycle","max":1649267441408,"cycle_start":"2024-03-08T00:00:00+08:00","cycle_interval":1,"cycle_unit":"month","cover":1,"ignore":{"100":true}}]
报警机器人
Telegram
关注官方机器人@Botfather,创建机器人
访问地址:https://api.telegram.org/bot这里填写密钥/sendMessage?chat_id=这里填写用户id&text=#NEZHA#
密钥就是机器人创建后
@Botfather返回的 token id可以通过与机器人@userinfobot对话获得 创建好机器人之后我们先要与其对话一次才可使用
Notifications->Add Notification Method

到达额定流量关机
配置关机任务
Tasks->Add Schedule Task

配置告警
Notifications->Add Notification Rule

离线报警
[{"Type":"offline","Duration":10}]
网速报警
[{"Type":"net_out_speed","Duration":10,"max":10485760,"cover":1,"ignore":{"18":true}}]
CPU+内存
CPU 持续 10s 超过 50% 且 内存持续 20s 占用低于 20% 的报警
[{"Type":"cpu","Min":0,"Max":50,"Duration":10},{"Type":"memory","Min":20,"Max":0,"Duration":20}]
