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

2021年8月22日16:44:31 发表评论

前言

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

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

预览

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

 

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

预览地址:https://nz.kzlwb.xyz

功能说明

● 计划任务:备份脚本、服务重启,等定期运维任务。展开

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

● 报警通知:CPU、内存、硬盘、带宽、流量、月流量实时监控。展开

灵活通知方式

#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}}]

● 服务监控:HTTP、SSL证书、ping、TCP 端口等。展开

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

● 自定义代码:改LOGO、改色调、加统计代码等。展开

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

  1. <style>
  2. .ui.fine.progress> .bar {
  3.     background-color: pink !important;
  4. }
  5. </style>

DayNight 主题更改进度条颜色示例(来自 @hyt-allen-xu

  1. <style>
  2. .ui.fine.progress> .progress-bar {
  3.   background-color: #00a7d0 !important;
  4. }
  5. </style>

默认主题修改 LOGO、移除版权示例(来自 @iLay1678

  1. <style>
  2. .right.menu>a{
  3. visibility: hidden;
  4. }
  5. .footer .is-size-7{
  6. visibility: hidden;
  7. }
  8. .item img{
  9. visibility: hidden;
  10. }
  11. </style>
  12. <script>
  13. window.onload = function(){
  14. var avatar=document.querySelector(".item img")
  15. var footer=document.querySelector("div.is-size-7")
  16. footer.innerHTML="Powered by 你的名字"
  17. footer.style.visibility="visible"
  18. avatar.src="你的方形logo地址"
  19. avatar.style.visibility="visible"
  20. }
  21. </script>

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

  1. <script>
  2. window.onload = function(){
  3. var footer=document.querySelector("div.footer-container")
  4. footer.innerHTML="©2021 你的名字 & Powered by 你的名字"
  5. footer.style.visibility="visible"
  6. }
  7. </script>

hotaru 主题更改背景图片示例

  1. <style>
  2. .hotaru-cover {
  3.    background: url(https://s3.ax1x.com/2020/12/08/DzHv6A.jpg) center;
  4. }
  5. </style>

 

教程开始:

一. 设置域名解析

可以直接用 ip+端口方式访问,为了安全及后期维护迁移方便,强烈建议设置用域名访问。准备两个域名,用本站域名举例:

  • 域名A:a.kzlwb.xyz作为面板访问域名,套 CDN(保护源站IP不泄露,当然如果你不当心源站IP泄露的问题,也可以不套CDN,看个人需求)。
  • 域名B:b.kzlwb.xyz不套CDN,指向面板服务器 IP,作为客户端与面板连接使用。

两个域名都解析到部署面板服务器的IP。

 

二. 创建 GitHub OAuth Apps

需要有Github账号,没有的话先注册一个。这一步让Github账号用作面板后台登录验证。

1. 创建 OAuth Apps

打开 Github Developer settings ,点击 New OAuth App 按钮

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

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

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

  1. https://a.kzlwb.xyz
  2. https://a.kzlwb.xyz/oauth2/callback

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

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

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

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

 

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

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

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

2.域名证书申请

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

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

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

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

3.设置反向代理

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

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

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

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

  1. location /
  2. {
  3.     proxy_pass http://127.0.0.1:8008;
  4.     proxy_set_header Host $host;
  5. }
  6. location /ws
  7. {
  8.     proxy_pass http://127.0.0.1:8008;
  9.     proxy_http_version 1.1;
  10.     proxy_set_header Upgrade $http_upgrade;
  11.     proxy_set_header Connection "Upgrade";
  12.     proxy_set_header Host $host;
  13. }

4.开放端口

宝塔面板中依次放行8008与5555端口

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

 

四.面板部署

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

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

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

 

五.服务端部署

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

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

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

3.记下生成的密钥

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

 

4.连接上需要被监控的服务器,键入一键代码,选择8后填写B域名以及密钥

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

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

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

 

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

 

常见问题:

● 如何进行数据迁移、备份恢复?展开

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

● 如何禁用连接数/进程数等占用资源的监控?展开

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

● Agent 不断重启/无法启动 ?展开

  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?

● 如何使 OpenWrt/LEDE 自启动?来自 @艾斯德斯展开

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

  1. #!/bin/sh /etc/rc.common
  2. START=99
  3. USE_PROCD=1
  4. start_service() {
  5.     procd_open_instance
  6.     procd_set_param command /root/nezha-agent -s 面板网址:接收端口 -p 唯一秘钥 -d
  7.     procd_set_param respawn
  8.     procd_close_instance
  9. }
  10. stop_service() {
  11.     killall nezha-agent
  12. }
  13. restart() {
  14.     stop
  15.     sleep 2
  16.     start
  17. }

● 实时通道断开/Terminal管理一直黑屏展开

Nginx(宝塔):在你的 nginx 配置文件中加入以下代码

  1. server{
  2.     #原有的一些配置
  3.     #server_name blablabla...
  4.     location ~ ^/(ws|terminal/.+)$  {
  5.         proxy_pass http://ip:站点访问端口;
  6.         proxy_http_version 1.1;
  7.         proxy_set_header Upgrade $http_upgrade;
  8.         proxy_set_header Connection "Upgrade";
  9.         proxy_set_header Host $host;
  10.     }
  11.     #其他的 location blablabla...
  12. }

CaddyServer v1(v2 无需特别配置)

  1. proxy /ws http://ip:8008 {
  2.     websocket
  3. }
  4. proxy /terminal/* http://ip:8008 {
  5.     websocket
  6. }

 

 

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

预览地址:https://nz.kzlwb.xyz

兰溪苑

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: