目 录CONTENT

文章目录

哪吒监控v1版本安装教程-以及通知方式配置

yyzq
2025-02-07 / 0 评论 / 2 点赞 / 2,038 阅读 / 2,836 字

简介:

哪吒监控
一个开源、轻量的服务器和网站监控、运维工具
本次安装的是v1版本,也无需GitHub认证,只需要一个域名即可(注意:v0版本无法直接升级)

主题1

123

主题2

006

主题3

image-1738925669023

拓扑图

00422

一键安装

支持一键安装面板和监控服务,操作便捷。兼容主流系统,包括 Linux、Windows、macOS、OpenWRT 以及群晖。

实时监控

支持同时监控多个服务器的状态,提供历史网络状态和延迟图表,监控网页、端口可用性和 SSL 证书状态。支持故障和流量等状态告警,可通过 Telegram、邮件、微信等多种方式提醒。

轻松运维

提供 API 获取服务器状态,支持WebSSH、DDNS 和流量监控。可设置定时和触发任务,并批量执行服务器任务。

准备工作:

1.一台服务器
如需要vps的可以查看以下地址
点我直达莱卡云官网
2.一个域名
并做好A记录
比如在cloudflare中
image-1738929504172

vps.19920112.gq

image-1738929665236

3.参考资料
官方网站
GitHub
官方文档
搭建哪吒监控的 Dashboard,你需要:

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

如果你想使用 CDN,请准备两个域名:具体参考官网教程

Dashboard安装

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

curl -L https://raw.githubusercontent.com/nezhahq/scripts/refs/heads/main/install.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh

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

curl -L https://gitee.com/naibahq/scripts/raw/main/install.sh -o nezha.sh && chmod 

登录到 Dashboard 配置界面
后台管理界面的路径为 /dashboard,你只需访问:
http://你的域名:8008/dashboard

首次登录的默认用户名和密码均为 admin。

更新 Dashboard

运行脚本:

./nezha.sh

选择重启面板并更新。

安装 Agent

哪吒监控的被控端服务被称为 Agent,本文档将介绍如何在被控端服务器上安装 Agent,并与 Dashboard 连接。
一键安装 Agent
哪吒监控支持在 Windows、macOS 和 Linux 上一键安装 Agent

准备工作

在安装前,需要提前在管理面板中设置通信域名,该域名不建议接入 CDN

在后台管理面板点击头像,进入“系统设置”页。
在“Agent 对接地址【域名/IP:端口】”项中填入通信域名和端口 “你的域名:8008”。
image-1738928140011
点击“确认”保存设置。

一键安装步骤

在 服务器 页面中,点击 安装命令 并选择对应操作系统,安装命令将自动复制到你的剪贴板。
在被控端服务器中运行安装命令,等待安装完成后返回到 服务器 页面查看是否上线。
如果安装成功,页面中将自动弹出新的服务器,你可以点击编辑按钮为其设置名称。
平台特有说明

Windows 特殊说明

在 Windows 服务器中,运行 PowerShell。
在 PowerShell 中粘贴并运行安装命令。
如遇到「执行策略变更」确认提示,输入 Y 并回车。

其他客户端安装方式见官网官方教程

卸载 Agent

卸载 Agent 包括停止服务、卸载服务,以及删除相关文件。以下是 Ubuntu 系统的卸载步骤:

停止并卸载服务:

cd /opt/nezha/agent/
./nezha-agent service uninstall

删除 Agent 文件夹:

rm -rf /opt/nezha/agent/

如果安装了多个服务并想要全部卸载,可以使用 Agent 安装脚本的卸载功能:

./agent.sh uninstall

通知设置

官方通知配置文档
通知包括2个模块

1.通知

就是发送报警方式,包括《Bark ,Slack ,Server 酱,Telegramwxpusher ,邮件通知,钉钉群机器人,企业微信群机器人,飞书群机器人,Matrix》本次教程就演示我自己平时使用的2中Telegram和微信的wxpusher
image-1744194693470

支持的占位符

占位符 含义
#NEZHA# 通知内容
#SERVER.NAME# 服务器名称
#SERVER.IP# 服务器 IP
#SERVER.IPV4# 服务器 IPv4 地址
#SERVER.IPV6# 服务器 IPv6 地址
#SERVER.CPU# CPU 使用率
#SERVER.MEM# 内存使用率
#SERVER.SMAP# 交换分区使用率
#SERVER.DISK# 磁盘使用率
#SERVER.NETINSPEED# 实时入站网速
#SERVER.NETOUTSPEED# 实时出站网速
#SERVER.TRANSFERIN# 总入站流量
#SERVER.TRANSFEROUT# 总出站流量
#SERVER.LOAD1# 1分钟内负载
#SERVER.LOAD5# 5分钟内负载
#SERVER.LOAD15# 15分钟内负载

1.wxpusher示例

首先注册wxpusher用微信扫码登录
https://wxpusher.zjiecode.com/admin/login
然后新建应用
image-1744197498404
获取到APP_TOKEN
image-1744197528533
获取uid
image-1744198032435
如下请求头不用填

  • 名称: wxpusher
  • URL: http://wxpusher.zjiecode.com/api/send/message
  • 请求方式: POST
  • 请求类型: JSON
  • Body:
    {
        "appToken": "你的appToken",
        "topicIds": [],
        "content": "#NEZHA#",
        "contentType": "1",
        "uids": ["你的uid"]
    }
    

2.Telegram示例

获取 URL 参数

  1. 获取机器人 Token:与 @BotFather 对话,发送 /newbot 创建新机器人,获取 Token。
  2. 获取用户 ID:与 @userinfobot 对话,获取你的用户 ID。
  3. 与机器人对话:先与新创建的机器人发送一条消息,确保机器人可以发送消息给你。

通知配置

  • 名称:Telegram
  • URL:https://api.telegram.org/bot<你的机器人Token>/sendMessage?chat_id=<你的用户ID>&text=#NEZHA#
  • 请求方式:GET
  • 请求类型:JSON
  • Body:空

注意:将 <你的机器人Token><你的用户ID> 替换为实际值。

2.警报规则

主要是设置触发报警的条件,比如内存占用50%或者cpu占用60%,磁盘占用80%等等
image-1744194653363

警报规则说明

在配置警报规则之前,请先配置通知方式,然后在分组设置中为通知方式配置通知组。警报规则将以通知组为单位发送通知。

  • type:可选一个或多个类型,同时满足所选类型才会触发通知。

    • 资源类:cpugpumemoryswapdisk
    • 网络类:net_in_speed(入站网速)、net_out_speed(出站网速)、net_all_speed(双向网速)、transfer_in(入站流量)、transfer_out(出站流量)、transfer_all(双向流量)
    • 系统类:offline(离线监控)、load1load5load15(负载)、process_count(进程数)
    • 连接数:tcp_conn_countudp_conn_count
    • 温度:temperature_max(最高温度值)
  • duration:持续时间(秒),在此时间内采样记录 30% 以上触发阈值才会通知(防止数据波动引起误报)。

  • min / max

    • 流量、网速类单位为字节(1KB=1024B,1MB=1024*1024B)。
    • 内存、硬盘、CPU 使用百分比(0-100)。
    • 离线监控无需设置此项。
  • cover

    • 0:监控所有服务器,可通过 ignore 忽略特定服务器。
    • 1:忽略所有服务器,可通过 ignore 选择特定服务器进行监控。
  • ignore:与 cover 配合使用,指定服务器的监控策略,格式为 {服务器ID: true/false}

示例:

  • 离线通知:

    • 名称:离线通知
    • 规则:
      [{"type":"offline","duration":10}]
      
    • 启用:✅
  • CPU和内存监控:

    • 名称:CPU+内存
    • 规则:
      [ {"type":"cpu","min":0,"max":50,"duration":10}, {"type":"memory","min":20,"max":0,"duration":20} ]
      
    • 启用:✅
  • 特定服务器通知发送到指定通知组:

    • 场景:服务器1、2离线10分钟后发送通知到通知组A,服务器3、4离线10分钟后发送通知到通知组B。
    • 规则一(通知组A):
      • 名称:1、2离线通知
      • 规则:
        [{"type": "offline", "duration": 600, "cover": 1, "ignore": {"1": true, "2": true}}]
        
      • 通知组:A
      • 启用:✅
    • 规则二(通知组B):
      • 名称:3、4离线通知
      • 规则:
        [{"type": "offline", "duration": 600, "cover": 1, "ignore": {"3": true, "4": true}}]
        
      • 通知组:B
      • 启用:✅

特殊规则:任意周期流量通知

可用于月流量监控。

  • type:
    • transfer_in_cycle:周期内入站流量
    • transfer_out_cycle:周期内出站流量
    • transfer_all_cycle:周期内双向流量总和
  • cycle_start:统计周期开始日期,格式为RFC3339,例如2022-01-01T00:00:00+08:00
  • cycle_interval:统计周期数量(如每1个月为一个周期)。
  • cycle_unit:统计周期单位,可选 hourdayweekmonthyear
  • min / maxcoverignore 同基本规则。

示例:

  • 月流量超限通知:
    • 规则:
      {
        "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}
      }
      
    • 说明:服务器3、4的出站月流量超过1TB时触发通知,统计周期从每月1号开始。

通知触发模式

总是:每当 Agent 上报的状态符合通知规则时,都会触发一次通知。
仅一次:仅在状态变化时触发通知,如从正常变为异常,或从异常恢复为正常。

demo示例

1.离线通知

监控所有

[{"type":"offline","duration":10,"cover":0}]
2.CPU占用率50%报警通知

监控所有

[{"type":"cpu","max":50,"duration":10,"cover":0}]
3.内存占用率50%报警通知

监控所有

[{"type":"memory","max":50,"duration":20,"cover":0}]
4.硬盘使用率超过警报值(90%)

监控所有

[{"type":"disk","max":90,"duration":20,"cover":0}]
5.一小时内(出)流量超过1G

默认监控所有,忽略3和4

[{"type":"transfer_out_cycle","max":1073741824,"cycle_start":"2022-01-01T00:00:00+08:00","cycle_interval":1,"cycle_unit":"hour","cover":0,"ignore":{"3":true,"4":true}}]
6.一小时内(入)流量超过1G

默认监控所有,忽略3和4

[{"type":"transfer_in_cycle","max":1073741824,"cycle_start":"2022-01-01T00:00:00+08:00","cycle_interval":1,"cycle_unit":"hour","cover":0,"ignore":{"3":true,"4":true}}]
2

评论区