前言
哪吒监控 一站式轻监控轻运维系统。支持系统状态、HTTP(SSL 证书变更、即将到期、到期)、TCP、Ping 监控报警,命令批量执行和计划任务。
宝塔服务器面板,一键全能部署及管理,送你3188元礼包,点我领取
预览
开源地址:https://github.com/naiba/nezha
预览地址:https://nz.1aii.cn
功能说明
● 计划任务:备份脚本、服务重启,等定期运维任务。[s][p]
使用此功能可以定期结合 restic、rclone 给服务器备份,或者定期某项重启服务来重置网络连接。
[/p]
● 报警通知:CPU、内存、硬盘、带宽、流量、月流量实时监控。[s][p]
灵活通知方式
#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":[],"content":"#NEZHA#","contentType":"1","uids":["你的uid"]}
- telegram 示例 @haitau 贡献
- 名称:telegram 机器人消息通知
- URL:https://api.telegram.org/botXXXXXX/sendMessage?chat_id=YYYYYY&text=#NEZHA#
- 请求方式: GET
- 请求类型: 默认
- Body: 空
- URL 参数获取说明:botXXXXXX 中的 XXXXXX 是在 telegram 中关注官方 @Botfather ,输入/newbot ,创建新的机器人(bot)时,会提供的 token(在提示 Use this token to access the HTTP API:后面一行)这里 ‘bot’ 三个字母不可少。创建 bot 后,需要先在 telegram 中与 BOT 进行对话(随便发个消息),然后才可用 API 发送消息。YYYYYY 是 telegram 用户的数字 ID。与机器人@userinfobot 对话可获得。
- server 酱示例
- 添加一个离线报警
- 名称:离线通知
- 规则:
[{"Type":"offline","Duration":10}]
- 启用:√
- 添加一个监控 CPU 持续 10s 超过 50% 且 内存持续 20s 占用低于 20% 的报警
- 名称: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 周期开始日期(可以是你机器计费周期的开始日期)
- cycle_interval 小时(可以设为 1 月,30*24)
- min/max、cover、ignore 参考基本规则配置
- 示例: 3 号机器的每月 15 号计费的出站月流量 1T 报警
[{"type":"transfer_out_cycle","max":1000000000000,"cycle_start":"2021-07-15T08:00:00Z","cycle_interval":720,"cover":1,"ignore":{"3":true}}]
[/p]
● 服务监控:HTTP、SSL证书、ping、TCP 端口等。[s][p]
进入 /monitor
页面点击新建监控即可,表单下面有相关说明。
[/p]
● 自定义代码:改LOGO、改色调、加统计代码等。[s][p]
默认主题更改进度条颜色示例
- <style>
- .ui.fine.progress> .bar {
- background-color: pink !important;
- }
- </style>
DayNight 主题更改进度条颜色示例(来自 @hyt-allen-xu)
- <style>
- .ui.fine.progress> .progress-bar {
- background-color: #00a7d0 !important;
- }
- </style>
默认主题修改 LOGO、移除版权示例(来自 @iLay1678)
- <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>
DayNight 移除版权示例(来自 @hyt-allen-xu)
- <script>
- window.onload = function(){
- var footer=document.querySelector(“div.footer-container”)
- footer.innerHTML=“©2021 你的名字 & Powered by 你的名字”
- footer.style.visibility=“visible”
- }
- </script>
hotaru 主题更改背景图片示例
- <style>
- .hotaru-cover {
- background: url(https://s3.ax1x.com/2020/12/08/DzHv6A.jpg) center;
- }
- </style>
[/p]
教程开始:
一. 设置域名解析
可以直接用 ip+端口
方式访问,为了安全及后期维护迁移方便,强烈建议设置用域名访问。准备两个域名,用本站域名举例:
- 域名A:
a.1aii.cn
作为面板访问域名,套 CDN(保护源站IP不泄露,当然如果你不当心源站IP泄露的问题,也可以不套CDN,看个人需求)。 - 域名B:
b.1aii.cn
不套CDN,指向面板服务器 IP,作为客户端与面板连接使用。
两个域名都解析到部署面板服务器的IP。
二. 创建 GitHub OAuth Apps
需要有Github账号,没有的话先注册一个。这一步让Github账号用作面板后台登录验证。
1. 创建 OAuth Apps
打开 Github Developer settings ,点击 New OAuth App
按钮
2. 填写站点名称和 URL 信息
请参考图片填写,把 a.1aii.cn
更换成自己面板域名,填写好以后点击 Register application
。
- https://a.1aii.cn
- https://a.1aii.cn/oauth2/callback
3. 获取 OAuth Apps的 Client ID
和 Client secret
参照下图创建 client id 和 clients secret 并记下来。
三. 宝塔面板设置域名、证书与反代
1.添加域名,按照下图替换添加自己的域名
2.域名证书申请
站点创建成功后,点击对应网站后方的设置按钮
在打开的窗口中按下图顺序申请SSL证书
3.设置反向代理
1.在网站设置页面按照下图顺序操作
2.点击配置文件按钮,修改反代配置文件
- 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;
- }
4.开放端口
在宝塔面板中依次放行8008与5555端口
四.面板部署
连接面板服务器后,输入官方一键脚本,依次填写上面步骤获取的Client ID
,Client secret
等相关信息。
- curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh -o nezha.sh && chmod +x nezha.sh
- sudo ./nezha.sh
五.服务端部署
1.打开浏览器,访问刚才在宝塔面板中创建站点的A域名,点击又上角的登录按钮,以GitHub账号登录。
2.登录成功后,点击右上角用户名,点击管理后台,在打开的页面中点击添加服务器
3.记下生成的密钥
4.连接上需要被监控的服务器,键入一键代码,选择8后填写B域名以及密钥
- curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh -o nezha.sh && chmod +x nezha.sh
- sudo ./nezha.sh
返回前端刷新页面便可以看到刚才添加的服务器了。
至此,哪吒面板便配置完毕。多台服务器添加请重复第五步,更多面板功能大家自行摸索。
常见问题:
● 如何进行数据迁移、备份恢复?[s][p]
数据储存在 /opt/nezha
文件夹中,迁移数据时打包这个文件夹,到新环境解压。然后执行一键脚本安装即可[/p]
● 如何禁用连接数/进程数等占用资源的监控?[s][p]
编辑 /etc/systemd/system/nezha-agent.service
,在 ExecStart=
这一行的末尾加上 -kconn
就是不监控连接数,加上 -kprocess
就是不监控进程数[/p]
● Agent 不断重启/无法启动 ?[s][p]
- 直接执行
/opt/nezha/agent/nezha-agent -s 面板IP或非CDN域名:面板RPC端口 -p Agent密钥 -d
查看日志是否是 DNS 问题。 nc -v 域名/IP 面板RPC端口
或者telnet 域名/IP 面板RPC端口
检验是否是网络问题,检查本机与面板服务器出入站防火墙,如果单机无法判断可借助 https://port.ping.pe/ 提供的端口检查工具进行检测。- 如果上面步骤检测正常,Agent 正常上线,尝试关闭 SELinux,如何关闭 SELinux?[/p]
● 如何使 OpenWrt/LEDE 自启动?来自 @艾斯德斯[s][p]
首先在 release 下载对应的二进制解压 tar.gz 包后放置到 /root
,然后 chmod +x /root/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 /root/nezha-agent -s 面板网址:接收端口 -p 唯一秘钥 -d
- procd_set_param respawn
- procd_close_instance
- }
- stop_service() {
- killall nezha-agent
- }
- restart() {
- stop
- sleep 2
- start
- }
[/p]
● 实时通道断开/Terminal管理一直黑屏[s][p]
Nginx(宝塔):在你的 nginx 配置文件中加入以下代码
- server{
- #原有的一些配置
- #server_name blablabla…
- location ~ ^/(ws|terminal/.+)$ {
- 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
- }
- proxy /terminal/* http://ip:8008 {
- websocket
- }
[/p]
开源地址:https://github.com/naiba/nezha
预览地址:https://nz.1aii.cn
暂无评论内容