搭建一个哪吒监控,你需要:
TIP
如果你想使用 CDN,请准备两个域名,一个配置好 CDN 用作公开访问,CDN 需要支持WebSocket 协议;另一个域名不要使用 CDN,用作 Agent 端与 Dashboard 的通信 本文档分别以 "cdn.example.com" 和 "data.example.com" 两个域名来演示
TIP
如果您位于中国大陆,访问 Github 有困难,我们建议您选择 Jihulab 作为 OAuth 提供商
本文档将以宝塔面板反代面板的过程作为范例,随着未来版本的变化,部分功能的入口可能会发生改变,本文档仅供参考
相关信息
本项目并不依赖宝塔,你可以选择使用你喜欢的任何服务器面板,如果你能力足够,可以手动安装 NginX 或 Caddy 来配置 SSL 和反代。 如果你认为没有必要使用 80、443 端口来访问 Dashboard,你甚至不需要安装 NginX 就可以直接使用安装脚本。
哪吒监控接入 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 和密码
bashcurl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
如果你的面板服务器位于中国大陆,可以使用镜像:
bashcurl -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/
在宝塔面板中配置 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" ,不更改此项可能会导致你无法登录面板后台
在面板消息中,占位符 #DATETIME#
代表事件发生的时间戳。当通知被触发时,面板会自动将 #DATETIME#
替换为事件的实际时间。
#NEZHA#
是面板消息占位符,面板触发通知时会自动用实际消息替换占位符
Body
内容是JSON
格式的:当请求类型为 FORM
时,值为 key:value
的形式,value
里面可放置占位符,通知时会自动替换。当请求类型为 JSON
时 只会简单进行字符串替换后直接提交到URL
。
名称:Server 酱
URL:https://sc.ftqq.com/你的key.send?title=哪吒报警信息&desp=#NEZHA#
请求方式: GET
请求类型: 默认
Body: 空
名称:Server 酱
URL:https://sc.ftqq.com/你的key.send
请求方式: POST
请求类型: FORM
Body:
json{
"title": "#SERVER.NAME#",
"desp":"**#NEZHA#\n\n
平均负载: \"#SERVER.LOAD1#\",\"#SERVER.LOAD5#\",\"#SERVER.LOAD15#\"\n\n
## [点击访问面板](https://你的面板域名)\n\n
"
}
演示
server酱通知展示
基本规则
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:
0 监控所有,通过 ignore 忽略特定服务器
1 忽略所有,通过 ignore 监控特定服务器
报警规则分享
名称:离线报警
规则:[{"Type":"offline","Duration":10}]
解释:每10s坚持一次,如果离线会发通知。(10s感觉太短,我改成600,也就是10分钟感觉比较合适)
名称:CPU过高警告
规则:[{"type":"cpu","max":90,"duration":300}]
解释:CPU超过90%发通知警告。300s一周期。(90和300自行修改为自己合适)
名称:内存过高警告
规则:[{"type":"memory","max":90,"duration":300}]
解释:内存占用超过90%发通知警告,300s一周期。(90和300自行修改为自己合适)
名称:硬盘即将爆满
规则:[{"type":"disk","max":80,"duration":43200}]
解释:硬盘占用超过80%发通知警告,12小时一周期。(80和43200自行修改为自己合适)
名称:TCP链接过多异常
规则:[{"type":"tcp_conn_count","max":20,"duration":300}]
解释:TCP链接数超过20个发通知报警,300s为周期。
名称:出站网速过快警告
规则:[{"type":"net_out_speed","max":524288000,"duration":300}]
解释:出站网速超过500M警告发通知,周期为300s。(524288000和300自行修改为自己合适)
名称:周期内流量警告
规则:
[{"type":"transfer_out_cycle","max":1099511627776,"cycle_start":"2022-01-01T00:00:00+08:00","cycle_interval":1,"cycle_unit":"month","cover":1,"ignore":{"3":true,"4":true}}]
解释:ID 为 3 和 4 的服务器(ignore 里面定义),以每月 1 号为统计周期,周期内统计的出站月流量达到 1TB 时报警
type之中transfer_out_cycle表示周期内的入站流量。大家可以修改为transfer_out_cycle 周期内的出站流量、 transfer_all_cycle 周期内双向流量和
max之后的1099511627776为1TB流量,这里使用的单位应该是B,大家可以自行修改。如:200GB为214748364800
cycle_start: 是统计周期开始日期(可以是你机器计费周期的开始日期),时间格式为RFC3339,例如北京时间为2022-01-11T08:00:00.00+08:00
cycle_interval:每隔多少个周期单位(例如,周期单位为天,该值为 7,则代表每隔 7 天统计一次)
cycle_unit 统计周期单位,默认hour,可选(hour, day, week, month, year)
cover参考基本规则 【0 监控所有,通过 ignore 忽略特定服务器 、1 忽略所有,通过 ignore 监控特定服务器】
ignore内定义要监控的VPS 的ID。
在服务器界面负责一键安装代码,直接复制到被监控端直接运行即可
但是国内的服务器无法正常安装哪吒探针,即使是脚本提供的国产镜像也不行
根据服务器选择合适的版本下载,下载完后是一个二进制代码文件,无后缀
以下内容来自nezha.shNZ_BASE_PATH="/opt/nezha" NZ_AGENT_PATH="${NZ_BASE_PATH}/agent" NZ_AGENT_SERVICE="/etc/systemd/system/nezha-agent.service" 1. "/opt/nezha" 为面板核心的存放目录,包括Dashboard 和 Agent 2. "/opt/nezha/agent" 结合上文,此目录就为代理端核心文件的存放位置 3. "/etc/systemd/system/nezha-agent.service" 对Liunx系统比较熟悉的小伙伴就会知道这个文件决定的哪吒代理端的开机启动
根据上述内容判断出核心存放目录和存放位置
在服务器上创建“/opt/nezha/agent”
目录,将nezha-agent
放入
在“/etc/systemd/system/”
目录新建一个nezha-agent.service
文件,将完成替换的代码保存进其中
[Unit] Description=Nezha Agent After=syslog.target #After=network.target #After=nezha-dashboard.service [Service] # Modify these two values and uncomment them if you have # repos with lots of files and get an HTTP error 500 because # of that ### #LimitMEMLOCK=infinity #LimitNOFILE=65535 Type=simple User=root Group=root WorkingDirectory=/opt/nezha/agent/ ExecStart=/opt/nezha/agent/nezha-agent -s IP地址:5555 -p 密钥 Restart=always #Environment=DEBUG=true # Some distributions may not support these hardening directives. If you cannot start the service due # to an unknown option, comment out the ones not supported by your version of systemd. #ProtectSystem=full #PrivateDevices=yes #PrivateTmp=yes #NoNewPrivileges=true [Install] WantedBy=multi-user.target
最后在脚本中重新更改探针配置后重启即可上线
本文作者:Casear
本文链接:
版权声明:摘自[哪吒面板官方文档](https://nezha.wiki/guide/dashboard.html)和网络搜集