哪吒面板|哪吒探针、服务器状态监控面板教程

前言

哪吒监控 一站式轻监控轻运维系统。支持系统状态、HTTP(SSL 证书变更、即将到期、到期)、TCP、Ping 监控报警,命令批量执行和计划任务。

宝塔服务器面板,一键全能部署及管理,送你3188元礼包,点我领取

预览

图片[1]-哪吒面板|哪吒探针、服务器状态监控面板教程-踩坑日记

开源地址:https://github.com/naiba/nezha

预览地址:https://nz.1aii.cn

功能说明

使用此功能可以定期结合 restic、rclone 给服务器备份,或者定期某项重启服务来重置网络连接。

灵活通知方式

#NEZHA#;是面板消息占位符,面板触发通知时会自动替换占位符到实际消息

Body 内容是JSON;格式的:当请求类型为 FORM 时,值为;key:value;的形式,value;里面可放置占位符,通知时会自动替换。当请求类型为 JSON 时;只会简进行字符串替换后直接提交到URL

URL 里面也可放置占位符,请求时会进行简单的字符串替换。

参考下方的示例,非常灵活。

  1. 添加通知方式
    • server 酱示例
    • wxpusher 示例,需要关注你的应用
    • 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 对话可获得。
  2. 添加一个离线报警
    • 名称:离线通知
    • 规则:[{"Type":"offline","Duration":10}]
    • 启用:√
  3. 添加一个监控 CPU 持续 10s 超过 50%;;内存持续 20s 占用低于 20% 的报警
    • 名称:CPU+内存
    • 规则:[{"Type":"cpu","Min":0,"Max":50,"Duration":10},{"Type":"memory","Min":20,"Max":0,"Duration":20}]
    • 启用:√

报警规则说明

基本规则

  • type
    • cpumemoryswapdisk
    • net_in_speed;入站网速、net_out_speed;出站网速、net_all_speed;双向网速、transfer_in;入站流量、transfer_out;出站流量、transfer_all;双向流量
    • offline;离线监控
    • load1load5load15;负载
    • process_count;进程数;目前取线程数占用资源太多,暂时不支持
    • tcp_conn_countudp_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}}]

进入 /monitor 页面点击新建监控即可,表单下面有相关说明。

默认主题更改进度条颜色示例

<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;

}

.itemimg{

visibility:hidden;

}

</style>

<script>

window.onload=function(){

varavatar=document.querySelector(".itemimg")

varfooter=document.querySelector("div.is-size-7")

footer.innerHTML="Poweredby你的名字"

footer.style.visibility="visible"

avatar.src="你的方形logo地址"

avatar.style.visibility="visible"

}

</script>

DayNight 移除版权示例(来自@hyt-allen-xu

<script>

window.onload=function(){

varfooter=document.querySelector("div.footer-container")

footer.innerHTML="©2021你的名字&Poweredby你的名字"

footer.style.visibility="visible"

}

</script>

hotaru 主题更改背景图片示例

<style>

.hotaru-cover{

background:url(https://s3.ax1x.com/2020/12/08/DzHv6A.jpg)center;

}

</style>

教程开始:

一. 设置域名解析

可以直接用 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]-哪吒面板|哪吒探针、服务器状态监控面板教程-踩坑日记

2. 填写站点名称和 URL 信息

请参考图片填写,把 a.1aii.cn 更换成自己面板域名,填写好以后点击 Register application

  1. https://a.1aii.cn
  2. https://a.1aii.cn/oauth2/callback
图片[3]-哪吒面板|哪吒探针、服务器状态监控面板教程-踩坑日记

3. 获取 OAuth Apps的 Client ID 和 Client secret

参照下图创建 client id 和 clients secret 并记下来。

图片[4]-哪吒面板|哪吒探针、服务器状态监控面板教程-踩坑日记

三. 宝塔面板设置域名、证书与反代

1.添加域名,按照下图替换添加自己的域名

图片[5]-哪吒面板|哪吒探针、服务器状态监控面板教程-踩坑日记

2.域名证书申请

站点创建成功后,点击对应网站后方的设置按钮

图片[6]-哪吒面板|哪吒探针、服务器状态监控面板教程-踩坑日记

在打开的窗口中按下图顺序申请SSL证书

图片[7]-哪吒面板|哪吒探针、服务器状态监控面板教程-踩坑日记

3.设置反向代理

1.在网站设置页面按照下图顺序操作

图片[8]-哪吒面板|哪吒探针、服务器状态监控面板教程-踩坑日记

2.点击配置文件按钮,修改反代配置文件

图片[9]-哪吒面板|哪吒探针、服务器状态监控面板教程-踩坑日记
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端口

图片[10]-哪吒面板|哪吒探针、服务器状态监控面板教程-踩坑日记

四.面板部署

连接面板服务器后,输入官方一键脚本,依次填写上面步骤获取的Client IDClient secret 等相关信息。

curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh

sudo ./nezha.sh
图片[11]-哪吒面板|哪吒探针、服务器状态监控面板教程-踩坑日记

五.服务端部署

1.打开浏览器,访问刚才在宝塔面板中创建站点的A域名,点击又上角的登录按钮,以GitHub账号登录。

2.登录成功后,点击右上角用户名,点击管理后台,在打开的页面中点击添加服务器

图片[12]-哪吒面板|哪吒探针、服务器状态监控面板教程-踩坑日记

3.记下生成的密钥

图片[13]-哪吒面板|哪吒探针、服务器状态监控面板教程-踩坑日记

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
图片[14]-哪吒面板|哪吒探针、服务器状态监控面板教程-踩坑日记

返回前端刷新页面便可以看到刚才添加的服务器了。

至此,哪吒面板便配置完毕。多台服务器添加请重复第五步,更多面板功能大家自行摸索。

常见问题:

数据储存在 /opt/nezha 文件夹中,迁移数据时打包这个文件夹,到新环境解压。然后执行一键脚本安装即可

编辑/etc/systemd/system/nezha-agent.service,在ExecStart=这一行的末尾加上-kconn就是不监控连接数,加上-kprocess就是不监控进程数

  1. 直接执行 /opt/nezha/agent/nezha-agent -s 面板IP或非CDN域名:面板RPC端口 -p Agent密钥 -d查看日志是否是 DNS 问题。
  2. nc -v 域名/IP 面板RPC端口或者telnet 域名/IP 面板RPC端口检验是否是网络问题,检查本机与面板服务器出入站防火墙,如果单机无法判断可借助https://port.ping.pe/提供的端口检查工具进行检测。
  3. 如果上面步骤检测正常,Agent 正常上线,尝试关闭 SELinux,如何关闭 SELinux?

首先在 release 下载对应的二进制解压 tar.gz 包后放置到/root,然后chmod +x /root/nezha-agent赋予执行权限,然后创建/etc/init.d/nezha-service

<strong>Nginx(宝塔):在你的 nginx 配置文件中加入以下代码</strong>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j" start="1">
 	<li class="alt">server{</li>
 	<li class=""></li>
 	<li class="alt">#原有的一些配置</li>
 	<li class="">#server_nameblablabla...</li>
 	<li class="alt"></li>
 	<li class="">location~^/(ws|terminal/.+)${</li>
 	<li class="alt">proxy_passhttp:<span class="comment">//ip:站点访问端口;</span></li>
 	<li class="">proxy_http_version<span class="number">1.1</span>;</li>
 	<li class="alt">proxy_set_headerUpgrade$http_upgrade;</li>
 	<li class="">proxy_set_headerConnection<span class="string">"Upgrade"</span>;</li>
 	<li class="alt">proxy_set_headerHost$host;</li>
 	<li class="">}</li>
 	<li class="alt"></li>
 	<li class="">#其他的locationblablabla...</li>
 	<li class="alt">}</li>
</ol>
</div>
<strong>CaddyServer v1(v2 无需特别配置)</strong>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j" start="1">
 	<li class="alt">proxy/wshttp:<span class="comment">//ip:8008{</span></li>
 	<li class="">websocket</li>
 	<li class="alt">}</li>
 	<li class="">proxy/terminal/*http:<span class="comment">//ip:8008{</span></li>
 	<li class="alt">websocket</li>
 	<li class="">}</li>
</ol>
</div>

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/wshttp://ip:8008{

websocket

}

proxy/terminal/*http://ip:8008{

websocket

}

开源地址:https://github.com/naiba/nezha

预览地址:https://nz.1aii.cn

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容