探针-哪吒监控

发布于 / 教程 / 探针-哪吒监控已关闭评论


准备工作
搭建一个哪吒监控,你需要:

一台可以连接公网的 VPS,防火墙和安全策略需要放行 8008 和 5555 端口,否则会无法访问和无法接收数据。单核 512MB 内存的服务器配置就足以满足大多数使用场景
一个已经设置好 A 记录,指向 Dashboard 服务器 ip 的域名

TIP
如果你想使用 CDN,请准备两个域名,一个配置好 CDN 用作公开访问,CDN 需要支持WebSocket 协议;另一个域名不要使用 CDN,用作 Agent 端与 Dashboard 的通信
本文档分别以 “cdn.example.com” 和 “data.example.com” 两个域名来演示
一个 Github 账号(或:Gitlab、Jihulab、Gitee)

本文档将以宝塔面板反代面板的过程作为范例,随着未来版本的变化,部分功能的入口可能会发生改变,本文档仅供参考

WARNING
本项目并不依赖宝塔,你可以选择使用你喜欢的任何服务器面板,如果你能力足够,可以手动安装 NginX 或 Caddy 来配置 SSL 和反代。如果你认为没有必要使用 80、443 端口来访问 Dashboard,你甚至不需要安装 NginX 就可以直接使用安装脚本。

获取 Github/Jihulab 的 Client ID 和密钥

哪吒监控接入 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 和密码

    在服务器中安装 Dashboard

    在面板服务器中,运行安装脚本:

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

    如果你的面板服务器位于中国大陆,可以使用镜像:

    
    bash curl -L https://jihulab.com/nezha/dashboard/-/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://ip:8008 然后点击“保存”

  • 打开刚刚新建的反向代理右边的“配置文件”,将配置文件替换为以下内容:
    
    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/
    
  • 点击“保存”
    现在,你应该可以直接使用域名,如:“http://cdn.example.com“ 来访问面板了

    扩展内容:
    CaddyServer v1(v2 无需特别配置)

    proxy /ws http://ip:8008 {
        websocket
        header_upstream -Origin
    }
    proxy /terminal/* http://ip:8008 {
        websocket
        header_upstream -Origin
    }

    在宝塔面板中配置 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” ,不更改此项可能会导致你无法登录面板后台

    配置Tg机器人、任务与报警

    灵活通知方式
    #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":[应用topicID],"content":"#NEZHA#","contentType":"1","uids":["你的uid"]}
    
  • 配置tgbot
  • 哪吒面板,顶部导航栏,点报警,添加通知方式

    https://api.telegram.org/botXXXXXX/sendMessage?chat_id=YYYYYY&text=#NEZHA#

    
    参数获取说明:botXXXXXX 中的 XXXXXX 是在 telegram 中关注官方 @Botfather ,输入/newbot ,创建新的机器人(bot)时,会提供的 token(在提示 Use this token to access the HTTP API:后面一行)这里 'bot' 三个字母不可少。创建 bot 后,需要先在 telegram 中与 BOT 进行对话(随便发个消息),然后才可用 API 发送消息。YYYYYY 是 telegram 用户的数字 ID。与机器人@userinfobot 对话可获得。
    

    然后添加,报警规则,以下表示小鸡离线10s后就会报警通知到tgbot

    [{"Type":"offline","Duration":10}]

  • 添加一个离线报警
    备注:离线通知

    
    [{"Type":"offline","Min":0,"Max":0,"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 统计周期开始日期(可以是你机器计费周期的开始日期),RFC3339 时间格式,例如北京时间为2022-01-11T08:00:00.00+08:00
    cycle_interval 每隔多少个周期单位(例如,周期单位为天,该值为 7,则代表每隔 7 天统计一次)
    cycle_unit 统计周期单位,默认hour,可选(hour, day, week, month, year)
    min/maxcoverignore 参考基本规则配置
    示例: ID 为 3 的服务器(ignore 里面定义),以每月 15 号为统计周期,周期内统计的出站月流量 达到 1TB 时报警

    
    [{"type":"transfer_out_cycle","max":1000000000000,"cycle_start":"2022-01-11T08:00:00.00+08:00","cycle_interval":1,"cycle_unit":"month","cover":1,"ignore":{"3":true}}]
    

    流量计算网站

    配置哪吒主题



  • 特性(以下均为基于官方默认主题的更改)
  • 1.基于官方原版主题重新排版

    2.解决移动端卡片列表点击最后两个卡片右上角的图标时,发生的页面位置跳转问题

    3.固定卡片宽度,栅格化(若剩余宽度不足以容下一个卡片,则换行显示)解决原版主题页面宽度变小后仍然制一行显示4个导致布局错误

    4.解决弹出看卡片位置不合适导致被顶部菜单栏遮挡问题

    5.增加一些我常用的主机信息显示在卡片上,方便查看(不爱喜欢可以自行修改哈)

    6.底部版权信息可以在template文件夹里的footer.html里更改7.swap未开启显示提示

  • 使用方法

    1.template里面的文件解压出来放到服务端/opt/nezha/dashboard/theme-custom/template目录里面

    2.重启哪吒面板服务

    3.在哪吒面板后台主题选择Custom(local)

    4.将css.txt里面的CSS样式代码复制到哪吒面板后台的“自定义代码”文本框里

  • 一些信息的修改地址
  • 1.站点图标header.html文件的第17行,替换掉https://cdn.amzayo.top/static/public/luban/luban_head.png

    2.页面左上角logomenu.html文件的第5行,替换掉https://cdn.amzayo.top/static/public/luban/test_head.e7b54515.png

    3.底部版权信息footer.html文件的第4到8行,依照demo底部的文字按需替换

    主题下载

    没有评论权限